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 开始时间