From ab1fed4e444971d00007fb0d4d08ca57052eaf1d Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 19 Sep 2024 09:35:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4-=E5=87=BA=E5=8B=A4=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=88=86=E6=9E=90=E8=BF=87=E7=A8=8B=EF=BC=8C=E5=8A=A0?= =?UTF-8?q?=E7=8F=AD=E7=BB=93=E6=9E=9C=E8=BD=AC=E5=81=87=E6=9C=9F=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=97=B6=EF=BC=8C=E5=8F=AA=E5=A4=84=E7=90=86=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E5=8D=95=E4=BD=8D=E9=80=BB=E8=BE=91=E4=B8=8D=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=A0=B8=E7=AE=97=E9=87=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/workovertime/SaveWorkOverTimeCmd.java | 9 ++- .../cmd/GetAskForLeaveRecordListCmd.java | 2 +- .../engine/jucailinkq/common/util/Utils.java | 66 ++++++++++++++++++- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java index 844337c..8657c12 100644 --- a/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java +++ b/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.java @@ -154,7 +154,9 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand holidayItem = getHolidayItem(workTimeBeLateItems.get(0).get("zrdjb").toString(),attendanceItems); - - double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES); + //20240914逻辑修改,加班转调休中,加班时长、转入假期时长不进行核算量相关逻辑处理 +// double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES); + double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES); insertHoliDayParam.put("ktsc",ktsc); insertHoliDayParam.put("yxsc",0); diff --git a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java index 0a7fa68..804ed41 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java +++ b/src/com/engine/jucailinkq/attendance/workflow/cmd/GetAskForLeaveRecordListCmd.java @@ -35,7 +35,7 @@ public class GetAskForLeaveRecordListCmd extends AbstractCommonCommand> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate,businessTripsType); if (detailList.size() > 0) { retmap.put("result", detailList); diff --git a/src/com/engine/jucailinkq/common/util/Utils.java b/src/com/engine/jucailinkq/common/util/Utils.java index 2feec89..26767fd 100644 --- a/src/com/engine/jucailinkq/common/util/Utils.java +++ b/src/com/engine/jucailinkq/common/util/Utils.java @@ -330,7 +330,7 @@ public class Utils { double itemDuration = 0.0; BigDecimal durationBig = new BigDecimal(duration); BigDecimal hslBig = new BigDecimal(hsl); - if (AccountingUnitEnum.DAY.getKey().equals(hsdw) || AccountingUnitEnum.ONCE.getKey().equals(hsdw)){ + if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)){ itemDuration = hsl; }else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){ if (unit.equals(AccountingUnitEnum.MINUTES)){ @@ -376,10 +376,74 @@ public class Utils { itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue(); } } + }else if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){ + //默认一天8小时 + if (unit.equals(AccountingUnitEnum.MINUTES)){ + double durationDay = duration/480.0; + durationBig = new BigDecimal(durationDay); + if ((durationDay/hsl) > Math.floor(durationDay/hsl)){ + durationBig = new BigDecimal(Math.floor(durationDay/hsl)); + itemDuration = durationBig.multiply(hslBig).doubleValue(); + }else { + itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue(); + } + + }else if (unit.equals(AccountingUnitEnum.HOUR)){ + double durationDay = duration/8.0; + durationBig = new BigDecimal(durationDay); + if ((durationDay/hsl) > Math.floor(durationDay/hsl)){ + durationBig = new BigDecimal(Math.floor(durationDay/hsl)); + itemDuration=durationBig.multiply(hslBig).doubleValue(); + }else { + itemDuration = durationBig.multiply(hslBig).divide(hslBig,BigDecimal.ROUND_DOWN).doubleValue(); + } + + } + } return itemDuration; } + /** + * 根据核算单位,计算出具体项目时长,向下核算 + * @param hsdw 核算单位 + * @param duration 时间值 + * @param unit 时间值单位 + * @return + */ + public static double getItemdurationDownWithoutHsl(String hsdw,int duration, AccountingUnitEnum unit){ + String itemDuration = "0.00"; + if (AccountingUnitEnum.ONCE.getKey().equals(hsdw)){ + itemDuration = "1"; + }else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){ + if (unit.equals(AccountingUnitEnum.MINUTES)){ + double durationHour = duration/60.0; + itemDuration = String.format("%.2f", durationHour); + }else if (unit.equals(AccountingUnitEnum.HOUR)){ + itemDuration = String.valueOf(duration); + } + }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ + if (unit.equals(AccountingUnitEnum.MINUTES)){ + itemDuration = String.valueOf(duration); + }else if (unit.equals(AccountingUnitEnum.HOUR)){ + int durationMinute = duration*60; + itemDuration = String.valueOf(durationMinute); + } + }else if (AccountingUnitEnum.DAY.getKey().equals(hsdw)){ + //默认一天8小时 + if (unit.equals(AccountingUnitEnum.MINUTES)){ + double durationDay = duration/480.0; + itemDuration = String.format("%.2f", durationDay); + }else if (unit.equals(AccountingUnitEnum.HOUR)){ + double durationDay = duration/8.0; + itemDuration = String.format("%.2f", durationDay); + + } + + } + return Double.parseDouble(itemDuration); + } + /** * 请假、外出时间扣出休息时间 * @param kssj 开始时间