From e0c8fd18e2e4c29c2f12d37b5cd6374674cedb7f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 26 Aug 2025 13:24:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=89=BE=E5=BF=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/timer/DepartureAnnualLeaveJob.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/timer/DepartureAnnualLeaveJob.java b/src/com/engine/salary/timer/DepartureAnnualLeaveJob.java index 162dfd416..10f3572be 100644 --- a/src/com/engine/salary/timer/DepartureAnnualLeaveJob.java +++ b/src/com/engine/salary/timer/DepartureAnnualLeaveJob.java @@ -98,13 +98,19 @@ public class DepartureAnnualLeaveJob extends BaseCronJob { long dayBeforeLeave = firstDayOfYear.until(localDate, ChronoUnit.DAYS) + 1; String ynjjs = BigDecimal.valueOf(dayBeforeLeave).divide(BigDecimal.valueOf(365), 5, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(balanceOfLeaveDTO.getBaseAmount())).toString(); // 保留一位小数,不满0.5取0,满0.5 不满1,取0.5 + // 250826修改 计算的结果小数点后数字为1-5按半天计算,小数点后数字为6-9按1天计算 if (ynjjs.contains(".")) { Integer value = Integer.valueOf(ynjjs.substring(ynjjs.indexOf(".") + 1 , ynjjs.indexOf(".") + 2)); - if (value >= 5) { + if (value > 5) { ynjjs = ynjjs.substring(0, ynjjs.indexOf(".")) + ".5"; } else { ynjjs = ynjjs.substring(0, ynjjs.indexOf(".")) + ".0"; } + try { + ynjjs = new BigDecimal(ynjjs).add(new BigDecimal("0.5")).setScale(1, BigDecimal.ROUND_HALF_UP).toString(); + } catch (Exception e) { + baseBean.writeLog("0.5error:"+ynjjs +e.toString()); + } } balanceOfLeaveDTO.setYnjjs(Float.valueOf(ynjjs)); balanceOfLeaveDTO.setXzszy(SalaryDateUtil.getFormatLocalDate(localDate.withDayOfMonth(1)));