diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat index c4951be..4839a05 100644 Binary files a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat and b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat differ diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values index bb57555..88e0a37 100644 Binary files a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values and b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values differ diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at index 85e00a7..a66731e 100644 Binary files a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at and b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.at differ diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s index cc22fb7..40e922a 100644 --- a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s +++ b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat.values.s @@ -1 +1 @@ -‡~|}}}y{~{|x}|{{}W\X\UXRXZ[ZTVQYY[ZUZVXPUS]\Vdeb^U\VVQ[UW_xxyu|{{wy{{x{yxwvWX\XVY[[][[nltonosswpntopkqqotlzrvtutvtxԋݏ‘̏ώގɐːЏێ׎ːÐȐҐƏώܓ֐͓ё؏ʌˑΐڎɔώבÓݎݏϐڍܑʎٓǒƐݐ͓ÒŒ͏ϐ֒ӐڏޏђđێԒߎߒxsxxxuxvwyywxvvvvuw{mnliihlfkihlkjkt~|~~}{}}}|~~}}~~|~~~}{ \ No newline at end of file +~~}}}}~~}}~}~~~|~}Ā~~}~~}||~vlhjkikliliijjom|vuwuxvyxxyvvxvyxytwɉגߐǔِّۏӑٍđޑēԒِҐԑђĒёܑǏܐݓđ΍ϏŒލȓِ͓ړՌďڍގӑۏێϑ؎΍ҏ̍ǑڎݎȒُҏxtvsvtvryksoqpnpnrnqvqunopsjnZY][]ZVXZWWuvxy{z}{wx{{}vyxxƃ_WUZQVWZT]cfcV[^SVPWV[VZ[YZQVTY[ZXRVU\W]Wԁ||z|x{z|z{}~|~} \ No newline at end of file diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i index d041140..69a52f6 100644 Binary files a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i and b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i differ diff --git a/.idea/workspace.xml b/.idea/workspace.xml index acaa4fd..a571e85 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,55 +10,19 @@ - - - - + + - - - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java index ec01474..00c3bbd 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java @@ -139,11 +139,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand scheduleMap:scheduleResult){ if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){ - String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj"); - String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj"); - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ - dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate); + String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate); + employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,askForLeaveList.get(i)); } } @@ -187,12 +185,9 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand scheduleMap:scheduleResult){ - String dtkssj = analysisDate+" "+scheduleMap.get("dtkssj"); - String dtjssj = analysisDate+" "+scheduleMap.get("dtjssj"); + String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate); + String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate); if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(scheduleMap.get("bdlx"))){ - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ - dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+scheduleMap.get("dtjssj"); - } employTime +=Utils.getStartAndEndTime(dtkssj,dtjssj,evectionList.get(i)); } } diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java index c6119cb..97d98f9 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java @@ -53,18 +53,14 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0 && askForLeaveAndEvctionScheduleList.size() > 0) { - String startTime = analysisDate + " " + needClockInList.get(0).get("dtkssj").toString(); - String endStartTime = analysisDate + " " + needClockInList.get(needClockInList.size()-1).get("dtkssj").toString(); - String endTime = analysisDate + " " + needClockInList.get(needClockInList.size()-1).get("dtjssj").toString(); - if (DateUtil.getTime(endStartTime).compareTo(DateUtil.getTime(endTime)) > 0) { - endTime = DateUtil.AfterDay(analysisDate, 1) + " " + needClockInList.get(needClockInList.size()-1).get("dtjssj"); - } + String startTime = Utils.getkssjTime(needClockInList.get(0),analysisDate); + String endStartTime = Utils.getkssjTime(needClockInList.get(needClockInList.size()-1),analysisDate); + String endTime = Utils.getjssjTime(needClockInList.get(needClockInList.size()-1),analysisDate); + for (Map askForLeaveAndEvctionSchedule :askForLeaveAndEvctionScheduleList){ - String dtkssj = analysisDate + " " + askForLeaveAndEvctionSchedule.get("dtkssj"); - String dtjssj = analysisDate + " " + askForLeaveAndEvctionSchedule.get("dtjssj"); - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + askForLeaveAndEvctionSchedule.get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(askForLeaveAndEvctionSchedule,analysisDate); + String dtjssj = Utils.getjssjTime(askForLeaveAndEvctionSchedule,analysisDate); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(startTime))<=0 || DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(endTime)) >= 0){ askForLeaveAndEvctionSchedule.put("ksdk",CheckBoxEnum.UNCHECKED.getKey()); } @@ -75,11 +71,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand0){ //骑在开始上班时间 for (Map needClockMap:needClockInList){ - String kssj = analysisDate + " " + needClockMap.get("dtkssj"); - String jssj = analysisDate + " " + needClockMap.get("dtjssj"); - if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) > 0) { - jssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockMap.get("dtjssj"); - } + String kssj = Utils.getkssjTime(needClockMap,analysisDate); + String jssj = Utils.getjssjTime(needClockMap,analysisDate); + if (CheckBoxEnum.CHECKED.getKey().equals(needClockMap.get("ksdk")) && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(jssj)) >=0){ ifStartNeedClock=true; @@ -90,7 +84,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0 && DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(endTime))>=0 && DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(endTime)) < 0){ //骑在下班时间 for (Map needClockMap:needClockInList){ - String kssj = analysisDate + " " + needClockMap.get("dtkssj"); + String kssj = Utils.getkssjTime(needClockMap,analysisDate); if (CheckBoxEnum.CHECKED.getKey().equals(needClockMap.get("jsdk")) && DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(kssj)) <=0){ ifEndNeedClock=true; @@ -105,21 +99,17 @@ public class GetClockInPointCmd extends AbstractCommonCommand askForLeaveAndEvctionMap :askForLeaveAndEvctionScheduleList){ - String evctiondtkssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtkssj")); + String evctiondtkssj = Utils.getkssjTime(askForLeaveAndEvctionMap,analysisDate); String evctionksdk = Util.null2String(askForLeaveAndEvctionMap.get("ksdk")); - String evctiondtjssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtjssj")); + String evctiondtjssj = Utils.getjssjTime(askForLeaveAndEvctionMap,analysisDate); String evctionjsdk = Util.null2String(askForLeaveAndEvctionMap.get("jsdk")); - if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(evctiondtjssj)) > 0) { - evctiondtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(askForLeaveAndEvctionMap.get("dtjssj")); - } + List lists = Lists.newArrayList(); for (int i=0;i 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(scheduleResult.get(i).get("dtjssj")); - } + if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtkssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(bdlx) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(bdlx) && !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(bdlx)){ lists.add(scheduleResult.get(i).get("dtkssj")+"-"+ClockPointEnum.START.getKey()+"-"+Util.null2String(scheduleResult.get(i).get("ksdk"))); @@ -178,16 +168,14 @@ public class GetClockInPointCmd extends AbstractCommonCommandDateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); } List needClockDateList = Lists.newArrayList(); for (int i=0;i 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + scheduleResult.get(i).get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate); + String dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate); + if (CheckBoxEnum.CHECKED.getKey().equals(scheduleResult.get(i).get("ksdk"))) { needClockDateList.add(dtkssj); } @@ -208,18 +196,16 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + scheduleResult.get(i).get("dtjssj"); - } + dtkssj = Utils.getkssjTime(scheduleResult.get(i),analysisDate); + dtjssj = Utils.getjssjTime(scheduleResult.get(i),analysisDate); + needClockDateList.add(dtjssj); break; } @@ -258,11 +244,10 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockIn.get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(needClockIn,analysisDate); + String dtjssj = Utils.getjssjTime(needClockIn,analysisDate); + + //计算最大提前打卡分钟数 int tqdkfzs = 60; if (Util.null2String(needClockIn.get("tqdkfzs")).equals("") && !"".equals(getBeforeClockTime(needClockDateList,dtkssj))){ tqdkfzs = DateUtil.getBetWeenMinutes(getBeforeClockTime(needClockDateList,dtkssj),dtkssj); @@ -299,8 +284,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockIn.get("dtjssj"); - } Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj, clockInTimeList); String timeType = ClockPointEnum.EMPTY.getKey(); @@ -340,7 +323,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand 0) { - dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockIn.get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(needClockIn,analysisDate); + String dtjssj = Utils.getjssjTime(needClockIn,analysisDate); int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs"))); if (!"".equals(getBeforeClockTime(needClockDateList,dtjssj))){ @@ -451,25 +431,20 @@ public class GetClockInPointCmd extends AbstractCommonCommand ksdkMap = workScheduleList.get(0); - String kssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtkssj")); - String jssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtjssj")); + String kssjStart = Utils.getkssjTime(ksdkMap,analysisDate); + String jssjStart = Utils.getjssjTime(ksdkMap,analysisDate); Map jsdkMap = workScheduleList.get(workScheduleList.size() - 1); int thdkfzs = Integer.valueOf(Util.null2String(jsdkMap.get("thdkfzs"))); - String kssjEnd = analysisDate + " " + Util.null2String(jsdkMap.get("dtkssj")); - String jssjEnd = analysisDate + " " + Util.null2String(jsdkMap.get("dtjssj")); + String kssjEnd = Utils.getkssjTime(jsdkMap,analysisDate); + String jssjEnd = Utils.getjssjTime(jsdkMap,analysisDate); - if (ksdkMap != jsdkMap) { - if (DateUtil.getTime(kssjStart).compareTo(DateUtil.getTime(jssjStart)) > 0) { - kssjStart = DateUtil.beforeDay(analysisDate, 1) + " " + Util.null2String(ksdkMap.get("dtkssj")); - } - if (DateUtil.getTime(kssjEnd).compareTo(DateUtil.getTime(jssjEnd)) > 0) { - jssjEnd = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(jsdkMap.get("dtjssj")); - } - } else { - jssjEnd = DateUtil.AfterDay(analysisDate, 1) + " " + Util.null2String(jsdkMap.get("dtjssj")); - } +// if (ksdkMap != jsdkMap) { +// if (DateUtil.getTime(kssjStart).compareTo(DateUtil.getTime(jssjStart)) > 0) { +// kssjStart = DateUtil.beforeDay(analysisDate, 1) + " " + Util.null2String(ksdkMap.get("dtkssj")); +// } +// } //弹性上班时间 String flexibleWorkTime = ""; @@ -478,7 +453,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand0){ //第一笔请假、外出时间 Map leaveAndEvctionMap = leaveAndEvctionList.get(0); - String leaveAndEvctionkssj = analysisDate + " " + Util.null2String(leaveAndEvctionMap.get("dtkssj")); + String leaveAndEvctionkssj = Utils.getkssjTime(leaveAndEvctionMap,analysisDate); //最大开始弹性时间 String minkssjStart = DateUtil.beforeMinutes(kssjStart,zddxfz); String maxkssjStart = DateUtil.AfterMinutes(kssjStart,zddxfz); diff --git a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java index 0b5113a..defb0d2 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java +++ b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java @@ -35,7 +35,7 @@ public interface UtilService { */ Map getNeedRecordClockInTime(List>> clcokInTimeData); /** - * 获得打卡卡点 + * 获得打卡卡点以及匹配的打卡时间 */ List>> getClockInPointCmd(Map params); diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java index 299169c..e4fccd9 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java @@ -150,9 +150,9 @@ public class UtilServiceImpl extends Service implements UtilService { map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs")); } if (resultList.size() > 1){ - String kssjbegin = e.getKey() +" "+resultList.get(0).get("dtkssj"); - String kssjend = e.getKey() +" "+resultList.get(resultList.size()-1).get("dtkssj"); - String kssj = e.getKey() +" "+overtimePlan.get("kssj"); + String kssjbegin = Utils.getkssjTime(resultList.get(0),e.getKey()); + String kssjend = Utils.getkssjTime(resultList.get(resultList.size()-1),e.getKey()); + String kssj = Utils.getkssjTime(overtimePlan,e.getKey()); if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(kssjbegin)) <0){ //加班计划在开头 if (resultList.get(0).get("dtkssj").equals(overtimePlan.get("jssj")) && @@ -176,9 +176,9 @@ public class UtilServiceImpl extends Service implements UtilService { }else { //加班计划在中间 for (int j=1;j=0 && DateUtil.getTime(kssj3).compareTo(DateUtil.getTime(kssj2)) <=0){ resultList.add(j,map); break; diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java index 974dbe2..29de057 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java @@ -89,11 +89,9 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ //加班结束时间 String dtjssj = Util.null2String(scheduleMap.get("dtjssj")); - String kssj = analysisDate +" "+dtkssj; - String jssj = analysisDate +" "+dtjssj; - if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) >0){ - jssj = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(scheduleMap.get("dtjssj")); - } + String kssj = Utils.getkssjTime(scheduleMap,analysisDate); + String jssj = Utils.getjssjTime(scheduleMap,analysisDate); + //加班实际开始时间 String realityStartTime = ""; //加班实际结束时间 diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java index efac014..dc22d02 100644 --- a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -210,6 +210,7 @@ public class AttendanceAnalysisWrapper extends Service { clcokInTimeDataParam.put("scheduleResult",scheduleResult); clcokInTimeDataParam.put("clockInTimeList",clockInTimeList); clcokInTimeDataParam.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule); + //打卡卡点以及匹配的打卡时间 List>> clcokInTimeData = utilService.getClockInPointCmd(clcokInTimeDataParam); Map recordAbnormalParam = Maps.newHashMap(); @@ -238,8 +239,6 @@ public class AttendanceAnalysisWrapper extends Service { List> abnormalClockInList = updateAttendanceResultWrapper.recordAbnormalClockIn(recordAbnormalParam); - - /** * 出勤津贴 */ @@ -313,9 +312,15 @@ public class AttendanceAnalysisWrapper extends Service { } + /** + * 合并请假或出差 + * @param askForLeaveAndEvctionSchedule + * @param analysisDate + * @return + */ public List> mergeAskForLeaveAndEvctionSchedule(List> askForLeaveAndEvctionSchedule,String analysisDate){ - askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + askForLeaveAndEvctionSchedule = askForLeaveAndEvctionSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); for (int i=0;i { int betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); log.info("removeRestTime scheduleResult : {}",scheduleResult); for (Map restSchedule :scheduleResult){ - String dtkssj = analysisDate+" "+restSchedule.get("dtkssj"); - String dtjssj = analysisDate+" "+restSchedule.get("dtjssj"); - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ - dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+restSchedule.get("dtjssj"); - } + String dtkssj = Utils.getkssjTime(restSchedule,analysisDate); + String dtjssj = Utils.getjssjTime(restSchedule,analysisDate); + if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) >=0){ //休息时间在请假时间中间 betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(dtkssj,dtjssj); @@ -679,12 +677,17 @@ public class Utils { public static String getjssjTime(Map schedulingMap,String date){ String gsrq = Util.null2String(schedulingMap.get("gsrq")); String jssj = Util.null2String(schedulingMap.get("dtjssj")); + String kssj = Util.null2String(schedulingMap.get("dtkssj")); if (gsrq.equals(ClassBelongToEnum.YESTERDAY.getKey())){ date = DateUtil.beforeDay(date,1); }else if (gsrq.equals(ClassBelongToEnum.NEXTDAY.getKey())){ date = DateUtil.AfterDay(date,1); } jssj = date+" "+jssj; + kssj = date+" "+kssj; + if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(jssj)) > 0) { + jssj = DateUtil.AfterDay(date, 1) + " " + jssj; + } return jssj; }