From fae56112e33479ec66f4e163ea2264051a48c8d0 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Wed, 6 Dec 2023 20:39:55 +0800 Subject: [PATCH] liuliang --- log/sdk.log | 2 + .../hrm_attendance/hrm-attendance.jar | Bin 190815 -> 192361 bytes .../cmd/GetClockInPointCmd.java | 495 ++++++++++++------ .../attendanceanalysis/cmd/recordDataCmd.java | 27 + .../impl/AbnormalAttendanceServiceImpl.java | 18 + .../service/impl/AskForLeaveServiceImpl.java | 23 +- .../service/impl/EvectionServiceImpl.java | 23 +- .../service/impl/UtilServiceImpl.java | 12 +- .../service/impl/WorkOverTimeServiceImpl.java | 29 +- .../wrapper/AttendanceAnalysisWrapper.java | 45 +- src/com/engine/common/util/Utils.java | 30 +- .../cmd/GetClockInPointCmd.class | Bin 12423 -> 18307 bytes .../cmd/recordDataCmd.class | Bin 7460 -> 8655 bytes .../impl/AbnormalAttendanceServiceImpl.class | Bin 12502 -> 12814 bytes .../service/impl/AskForLeaveServiceImpl.class | Bin 5946 -> 6811 bytes .../service/impl/EvectionServiceImpl.class | Bin 6024 -> 6887 bytes .../service/impl/UtilServiceImpl.class | Bin 15632 -> 15687 bytes .../impl/WorkOverTimeServiceImpl.class | Bin 22046 -> 22284 bytes .../wrapper/AttendanceAnalysisWrapper$1.class | Bin 1966 -> 1919 bytes .../wrapper/AttendanceAnalysisWrapper$2.class | Bin 1965 -> 1919 bytes .../wrapper/AttendanceAnalysisWrapper.class | Bin 14834 -> 14866 bytes .../com/engine/common/util/Utils.class | Bin 17893 -> 18492 bytes target/test-classes/Test$1.class | Bin 569 -> 569 bytes target/test-classes/Test$10.class | Bin 898 -> 898 bytes target/test-classes/Test$11.class | Bin 898 -> 898 bytes target/test-classes/Test$12.class | Bin 898 -> 898 bytes target/test-classes/Test$13.class | Bin 898 -> 898 bytes target/test-classes/Test$2.class | Bin 569 -> 569 bytes target/test-classes/Test$3.class | Bin 569 -> 569 bytes target/test-classes/Test$4.class | Bin 569 -> 569 bytes target/test-classes/Test$5.class | Bin 569 -> 569 bytes target/test-classes/Test$6.class | Bin 569 -> 569 bytes target/test-classes/Test$7.class | Bin 569 -> 569 bytes target/test-classes/Test$8.class | Bin 569 -> 569 bytes target/test-classes/Test$9.class | Bin 897 -> 897 bytes target/test-classes/Test.class | Bin 4513 -> 5009 bytes test/Test.java | 17 +- 37 files changed, 506 insertions(+), 215 deletions(-) diff --git a/log/sdk.log b/log/sdk.log index 5a71668..a395a05 100644 --- a/log/sdk.log +++ b/log/sdk.log @@ -774,3 +774,5 @@ 2023-11-28 19:57:25,603 [main] [com.engine.common.util.Utils] [INFO] - 请假外出时间 右边 2023-11-28 20:02:25,544 [Timer-0] [A2] [INFO] - rootPath == null 2023-11-28 20:02:25,545 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties +2023-12-05 21:53:39,011 [Timer-0] [A2] [INFO] - rootPath == null +2023-12-05 21:53:39,021 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index 535c18f3f9969c5b66d14202dd9271f603a9eb8b..ce981897809b800c43706fb827ac9698218d8fe0 100644 GIT binary patch delta 43437 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 { - public GetClockInPointCmd(Map params){ - this.params=params; +public class GetClockInPointCmd extends AbstractCommonCommand> { + public GetClockInPointCmd(Map params) { + this.params = params; } + @Override public BizLogContext getLogContext() { return null; @@ -35,241 +38,417 @@ public class GetClockInPointCmd extends AbstractCommonCommand public Map execute(CommandContext commandContext) { Map resultMap = Maps.newHashMap(); String analysisDate = Util.null2String(params.get("analysisDate")); - List> needClockInSchedule = (List>)params.get("needClockInSchedule"); - List> clockInTimeList = (List>)params.get("clockInTimeList"); - List>> clcokInTimeData = getClockInPoint(analysisDate,needClockInSchedule,clockInTimeList); - resultMap.put("clcokInTimeData",clcokInTimeData); + List> scheduleResult = (List>) params.get("scheduleResult"); + List> clockInTimeList = (List>) params.get("clockInTimeList"); + List> askForLeaveAndEvctionScheduleList = (List>) params.get("askForLeaveAndEvctionSchedule"); + List> needClockInList = scheduleResult.stream().filter(e -> !ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(e.get("bdlx")) && !ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(e.get("bdlx")) && + !ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx")) ).collect(Collectors.toList()); + + /** + * 当请假或外出开始时间和外出时间在上班之外时,不需要打卡 + */ + log.info("未重新计算卡点时 老的scheduleResult : [{}],askForLeaveAndEvctionScheduleList:[{}]",scheduleResult,askForLeaveAndEvctionScheduleList); + if (needClockInList.size() > 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"); + } + 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"); + } + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(startTime))<0 || DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(endTime)) > 0){ + askForLeaveAndEvctionSchedule.put("ksdk",CheckBoxEnum.UNCHECKED.getKey()); + } + if (DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(endTime))>0 || DateUtil.getTime(dtjssj).compareTo(DateUtil.getTime(startTime))<0){ + askForLeaveAndEvctionSchedule.put("jsdk",CheckBoxEnum.UNCHECKED.getKey()); + } + + } + } + + /** + * 当请假或外出包含打卡卡点时,判断该卡点是否需要打卡 + */ + for (Map askForLeaveAndEvctionMap :askForLeaveAndEvctionScheduleList){ + String evctiondtkssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtkssj")); + String evctionksdk = Util.null2String(askForLeaveAndEvctionMap.get("ksdk")); + String evctiondtjssj = analysisDate + " " +Util.null2String(askForLeaveAndEvctionMap.get("dtjssj")); + 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"))); + } + if (DateUtil.getTime(evctiondtkssj).compareTo(DateUtil.getTime(dtjssj)) <= 0 && DateUtil.getTime(evctiondtjssj).compareTo(DateUtil.getTime(dtjssj)) >=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("dtjssj")+"-"+ClockPointEnum.END.getKey()+"-"+Util.null2String(scheduleResult.get(i).get("jsdk"))); + } + } + //新打卡 + List newNeedClockLists = Lists.newArrayList(); + if (lists.size() == 1){ + String str = lists.get(0); + if (ClockPointEnum.START.getKey().equals(str.split("-")[1]) && CheckBoxEnum.CHECKED.getKey().equals(evctionjsdk)){ + newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0"); + }else if (ClockPointEnum.END.getKey().equals(str.split("-")[1]) && CheckBoxEnum.CHECKED.getKey().equals(evctionksdk)){ + newNeedClockLists.add(str.split("-")[0]+"-"+str.split("-")[1]+"-0"); + } + }else if (lists.size() > 1){ + for(int i=0;i 0){ + scheduleResult.addAll(askForLeaveAndEvctionScheduleList); + scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + } + List>> clcokInTimeData = getClockInPoint(analysisDate, scheduleResult, clockInTimeList); + resultMap.put("clcokInTimeData", clcokInTimeData); return resultMap; } + /** * 获取打卡卡点 - * @param analysisDate 分析日期 - * @param needClockInSchedule 需要打卡的班次 - * @param clockInTimeList 打卡集合 - * @return + * + * @param analysisDate 分析日期 + * @param scheduleResult 需要打卡的班次 + * @param clockInTimeList 打卡集合 + * @return {2023-11-12 09:00|0|3|2023-11-12 09:15={signtime=09:11:00, id=48, userid=53, signdate=2023-11-12}} + * 班次时间|打卡类型(上班卡或下班卡)|打卡时间处所在位置|弹性时间 = 打卡时间map集合 */ - public static List>> getClockInPoint(String analysisDate, List> needClockInSchedule, List> clockInTimeList){ - List>> clcokInTimeData = Lists.newArrayList(); - for (Map needClockIn :needClockInSchedule){ - if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))){ - String dtkssj = analysisDate+" "+needClockIn.get("dtkssj"); - String dtjssj = analysisDate+" "+needClockIn.get("dtjssj"); - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ - dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj"); + public static List>> getClockInPoint(String analysisDate, List> scheduleResult, List> clockInTimeList) { + + /** + * 正常排班进行卡点 + */ + List>> clcokInTimeData = Lists.newArrayList(); + for (Map needClockIn : scheduleResult) { + if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))) { + String dtkssj = analysisDate + " " + needClockIn.get("dtkssj"); + String dtjssj = analysisDate + " " + needClockIn.get("dtjssj"); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) { + dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockIn.get("dtjssj"); } int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs"))); - Map> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj,clockInTimeList); + Map> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj, clockInTimeList); String timeType = ClockPointEnum.EMPTY.getKey(); - Map> clcokInTimeMap = Maps.newHashMap(); - if (ksdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){ - timeType=ClockPointEnum.EQUAL.getKey(); + Map> clcokInTimeMap = Maps.newHashMap(); + if (ksdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null) { + timeType = ClockPointEnum.EQUAL.getKey(); } - if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){ - String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.beforeMinutes(dtkssj,tqdkfzs))) >=0){ + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null) { + String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") + " " + ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.beforeMinutes(dtkssj, tqdkfzs))) >= 0) { //打卡时间大于等于最早打卡时间 - timeType=ClockPointEnum.BEFORE.getKey(); + timeType = ClockPointEnum.BEFORE.getKey(); } } - if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){ - String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtjssj)) < 0){ + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null) { + String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") + " " + ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtjssj)) < 0) { //打卡时间小于结束时间 - timeType=ClockPointEnum.AFTER.getKey(); + timeType = ClockPointEnum.AFTER.getKey(); } } - clcokInTimeMap.put(dtkssj+"|"+ClockPointEnum.START.getKey()+"|"+timeType,ksdkNearestClcokInTime.get(timeType)); + clcokInTimeMap.put(dtkssj + "|" + ClockPointEnum.START.getKey() + "|" + timeType, ksdkNearestClcokInTime.get(timeType)); clcokInTimeData.add(clcokInTimeMap); } - if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk"))){ - String dtkssj = analysisDate+" "+needClockIn.get("dtkssj"); - String dtjssj = analysisDate+" "+needClockIn.get("dtjssj"); + if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk"))) { + String dtkssj = analysisDate + " " + needClockIn.get("dtkssj"); + String dtjssj = analysisDate + " " + needClockIn.get("dtjssj"); int thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs"))); - if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ - dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj"); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) { + dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + needClockIn.get("dtjssj"); } - Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj,clockInTimeList); + Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj, clockInTimeList); String timeType = ClockPointEnum.EMPTY.getKey(); - Map> clcokInTimeMap = Maps.newHashMap(); - if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){ - timeType=ClockPointEnum.EQUAL.getKey(); + Map> clcokInTimeMap = Maps.newHashMap(); + if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null) { + timeType = ClockPointEnum.EQUAL.getKey(); } - if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){ - String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(dtjssj,thdkfzs))) <=0){ - timeType=ClockPointEnum.AFTER.getKey(); + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null) { + String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") + " " + jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(dtjssj, thdkfzs))) <= 0) { + timeType = ClockPointEnum.AFTER.getKey(); } } - if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){ - String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtkssj)) >0){ - timeType=ClockPointEnum.BEFORE.getKey(); + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null) { + String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") + " " + jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtkssj)) > 0) { + timeType = ClockPointEnum.BEFORE.getKey(); } } - clcokInTimeMap.put(dtjssj+"|"+ClockPointEnum.END.getKey()+"|"+timeType,jsdkNearestClcokInTime.get(timeType)); + clcokInTimeMap.put(dtjssj + "|" + ClockPointEnum.END.getKey() + "|" + timeType, jsdkNearestClcokInTime.get(timeType)); clcokInTimeData.add(clcokInTimeMap); } } - //当弹性上下班时 - if (needClockInSchedule.size() > 0){ + clcokInTimeData = clcokInTimeData.stream().sorted(Comparator.comparing(e->{ + //卡点 + String point = ""; + //当天打卡数据 + for (Map.Entry> entry :e.entrySet()){ + point = entry.getKey(); + } + return DateUtil.getTime(point.split("\\|")[0]).toInstant(ZoneOffset.of("+8")).toEpochMilli(); + })).collect(Collectors.toList()); + /** + * 计算弹性上下班 + */ + if (scheduleResult.size() > 0) { + //上下班弹性, + List> workScheduleList = scheduleResult.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) || ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(e.get("bdlx")) + || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); + + //请假和外出集合 + List> leaveAndEvctionList = scheduleResult.stream().filter(e -> ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(e.get("bdlx")) || + ClassSegmentTypeEnum.EVECTION.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); //是否弹性 - String sfdx = Util.null2String(needClockInSchedule.get(0).get("sfdx")); - //最大弹性分钟 - int zddxfz = Integer.valueOf(Util.null2String(needClockInSchedule.get(0).get("zddxfz"))); - //弹性核算 - int dxhs = Integer.valueOf(Util.null2String(needClockInSchedule.get(0).get("dxhs"))); + String sfdx = Util.null2String(workScheduleList.get(0).get("sfdx")); + //上班是否需要打卡 + String ifToWorkClock = Util.null2String(workScheduleList.get(0).get("ksdk")); + //下班是否需要打卡 + String ifToCloseClock = Util.null2String(workScheduleList.get(workScheduleList.size()-1).get("jsdk")); - if (CheckBoxEnum.CHECKED.getKey().equals(sfdx)){ - //上下班弹性 - List> needClockInStartList = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("ksdk"))).collect(Collectors.toList()); + //第一条工作时段、早上加班必须要求打卡并且上班之前没有请假 + if (workScheduleList.size() > 0 && CheckBoxEnum.CHECKED.getKey().equals(sfdx)) { + //最大弹性分钟 + int zddxfz = Integer.valueOf(Util.null2String(workScheduleList.get(0).get("zddxfz"))); + //弹性核算 + int dxhs = Integer.valueOf(Util.null2String(workScheduleList.get(0).get("dxhs"))); + Map ksdkMap = workScheduleList.get(0); + String kssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtkssj")); + String jssjStart = analysisDate + " " + Util.null2String(ksdkMap.get("dtjssj")); - List> needClockInEndList = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("jsdk"))).collect(Collectors.toList()); - if (needClockInStartList.size()>0 && needClockInEndList.size()>0){ - Map ksdkMap = needClockInStartList.get(0); - String kssjStart = analysisDate + " " +Util.null2String(ksdkMap.get("dtkssj")); - String jssjStart = analysisDate +" "+Util.null2String(ksdkMap.get("dtjssj")); + 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")); - Map jsdkMap = needClockInEndList.get(needClockInEndList.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")); + 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 = ""; + //弹性下班时间 + String flexibleOffWorkTime=""; + if (leaveAndEvctionList.size() >0){ + //第一笔请假、外出时间 + Map leaveAndEvctionMap = leaveAndEvctionList.get(0); + String leaveAndEvctionkssj = analysisDate + " " + Util.null2String(leaveAndEvctionMap.get("dtkssj")); + //最大开始弹性时间 + String minkssjStart = DateUtil.beforeMinutes(kssjStart,zddxfz); + String maxkssjStart = DateUtil.AfterMinutes(kssjStart,zddxfz); + //请假开始时间在最大开始弹性时间之内 + if (DateUtil.getTime(leaveAndEvctionkssj).compareTo(DateUtil.getTime(maxkssjStart))<=0){ + //弹性上班卡 + flexibleWorkTime = leaveAndEvctionkssj; + if (DateUtil.getTime(leaveAndEvctionkssj).compareTo(DateUtil.getTime(minkssjStart)) <0){ + flexibleWorkTime=minkssjStart; } - if (DateUtil.getTime(kssjEnd).compareTo(DateUtil.getTime(jssjEnd)) > 0){ - jssjEnd = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(jsdkMap.get("dtjssj")); + + //弹性下班时间点 + int betweenToWorkTime = DateUtil.getBetWeenMinutes(flexibleWorkTime, kssjStart); + //弹性下班时间点 + flexibleOffWorkTime = jssjEnd; + if (betweenToWorkTime >= 0) { + flexibleOffWorkTime = DateUtil.beforeMinutes(flexibleOffWorkTime, Math.abs(betweenToWorkTime)); + } else if (betweenToWorkTime < 0) { + flexibleOffWorkTime = DateUtil.AfterMinutes(flexibleOffWorkTime, Math.abs(betweenToWorkTime)); } - }else { - jssjEnd = DateUtil.AfterDay(analysisDate,1)+" "+Util.null2String(jsdkMap.get("dtjssj")); + } - //弹性上班卡 - String flexibleWork = ""; - for (int i=0;i> clcokInTimeMap = clcokInTimeData.get(i); - //卡点 - String point = ""; - //当天打卡数据 - Map clcokInTime = null; - for (Map.Entry> entry :clcokInTimeMap.entrySet()){ - point = entry.getKey(); - clcokInTime = entry.getValue(); - } - //需要计算的班次打卡时间点 - String pointTime = point.split("\\|")[0]; - //start:开始打卡时间点,end:结束打卡时间点 - String pointType = point.split("\\|")[1]; - //empty:漏卡,equal:打卡时间和班次时间相等,before:打卡时间在班次时间之前,after:打卡时间在班次时间之后 - String timeType = point.split("\\|")[2]; + } + //弹性上班卡 + for (int i = 0; i < clcokInTimeData.size(); i++) { + Map> clcokInTimeMap = clcokInTimeData.get(i); + //卡点 + String point = ""; + //当天打卡数据 + Map clcokInTime = null; + for (Map.Entry> entry : clcokInTimeMap.entrySet()) { + point = entry.getKey(); + clcokInTime = entry.getValue(); + } + //需要计算的班次打卡时间点 + String pointTime = point.split("\\|")[0]; + //start:开始打卡时间点,end:结束打卡时间点 + String pointType = point.split("\\|")[1]; + //empty:漏卡,equal:打卡时间和班次时间相等,before:打卡时间在班次时间之前,after:打卡时间在班次时间之后 + String timeType = point.split("\\|")[2]; - if (pointTime.equals(kssjStart) && ClockPointEnum.START.getKey().equals(pointType) && clcokInTime != null){ - String signTime = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime"); - //该卡点是弹性开始时间 - if (ClockPointEnum.BEFORE.getKey().equals(timeType)){ - int betWeenTime = DateUtil.getBetWeenMinutes(signTime,kssjStart); + if (pointTime.equals(kssjStart) && ClockPointEnum.START.getKey().equals(pointType) && clcokInTime != null + && CheckBoxEnum.CHECKED.getKey().equals(ifToWorkClock)) { + String signTime = clcokInTime.get("signdate") + " " + clcokInTime.get("signtime"); + //该卡点是弹性开始时间 + if ("".equals(flexibleWorkTime) ){ + //弹性上班期间未被请假开始时间占据 + if (ClockPointEnum.BEFORE.getKey().equals(timeType)) { + int betWeenTime = DateUtil.getBetWeenMinutes(signTime, kssjStart); String newPonit = point; - if (betWeenTime <= zddxfz){ - betWeenTime = Double.valueOf(Utils.getItemdurationDown(5.0, AccountingUnitEnum.MINUTES.getKey(),betWeenTime,AccountingUnitEnum.MINUTES)).intValue(); - flexibleWork = DateUtil.beforeMinutes(kssjStart,betWeenTime); - newPonit = pointTime+"|"+pointType+"|"+ClockPointEnum.EQUAL.getKey()+"|"+flexibleWork; - }else if (betWeenTime > zddxfz){ - newPonit = point +"|"+DateUtil.beforeMinutes(kssjStart,zddxfz); - flexibleWork = DateUtil.beforeMinutes(kssjStart,zddxfz); + if (betWeenTime <= zddxfz) { + betWeenTime = Double.valueOf(Utils.getItemdurationDown(dxhs, AccountingUnitEnum.MINUTES.getKey(), betWeenTime, AccountingUnitEnum.MINUTES)).intValue(); + flexibleWorkTime = DateUtil.beforeMinutes(kssjStart, betWeenTime); + newPonit = pointTime + "|" + pointType + "|" + ClockPointEnum.EQUAL.getKey() + "|" + flexibleWorkTime; + } else if (betWeenTime > zddxfz) { + flexibleWorkTime = DateUtil.beforeMinutes(kssjStart, zddxfz); + newPonit = point + "|" + flexibleWorkTime; } clcokInTimeMap.remove(point); - clcokInTimeMap.put(newPonit,clcokInTime); - }else if (ClockPointEnum.AFTER.getKey().equals(timeType)){ + clcokInTimeMap.put(newPonit, clcokInTime); + } else if (ClockPointEnum.AFTER.getKey().equals(timeType)) { //迟到 String newPonit = point; - int betWeenTime = DateUtil.getBetWeenMinutes(kssjStart,signTime); - if (betWeenTime <= zddxfz){ - betWeenTime = Double.valueOf(Utils.getItemduration(5.0, AccountingUnitEnum.MINUTES.getKey(),betWeenTime,AccountingUnitEnum.MINUTES)).intValue(); - flexibleWork = DateUtil.AfterMinutes(kssjStart,betWeenTime); - newPonit = pointTime+"|"+pointType+"|"+ClockPointEnum.EQUAL.getKey()+"|"+flexibleWork; - }else if (betWeenTime > zddxfz){ - newPonit = point +"|"+DateUtil.AfterMinutes(kssjStart,zddxfz); - flexibleWork = DateUtil.AfterMinutes(kssjStart,zddxfz); + int betWeenTime = DateUtil.getBetWeenMinutes(kssjStart, signTime); + if (betWeenTime <= zddxfz) { + betWeenTime = Double.valueOf(Utils.getItemduration(dxhs, AccountingUnitEnum.MINUTES.getKey(), betWeenTime, AccountingUnitEnum.MINUTES)).intValue(); + flexibleWorkTime = DateUtil.AfterMinutes(kssjStart, betWeenTime); + newPonit = pointTime + "|" + pointType + "|" + ClockPointEnum.EQUAL.getKey() + "|" + flexibleWorkTime; + } else if (betWeenTime > zddxfz) { + flexibleWorkTime = DateUtil.AfterMinutes(kssjStart, zddxfz); + newPonit = point + "|" + flexibleWorkTime; } clcokInTimeMap.remove(point); - clcokInTimeMap.put(newPonit,clcokInTime); + clcokInTimeMap.put(newPonit, clcokInTime); } - }else if (pointTime.equals(jssjEnd) && ClockPointEnum.END.getKey().equals(pointType) && clcokInTime != null){ - //该卡点是弹性下班点 - - int betweenToWorkTime = DateUtil.getBetWeenMinutes(flexibleWork,kssjStart); + }else { + //弹性上班期间被请假开始时间占据 + String newPonit = point +"|"+flexibleWorkTime; + clcokInTimeMap.remove(point); + clcokInTimeMap.put(newPonit, clcokInTime); + } + } else if (pointTime.equals(jssjEnd) && ClockPointEnum.END.getKey().equals(pointType) && CheckBoxEnum.CHECKED.getKey().equals(ifToCloseClock)) { + //该卡点是弹性下班点 + if ("".equals(flexibleOffWorkTime) && !"".equals(flexibleWorkTime)){ + int betweenToWorkTime = DateUtil.getBetWeenMinutes(flexibleWorkTime, kssjStart); //弹性下班时间点 - String flexibleOffWork = jssjEnd; - if (betweenToWorkTime >=0){ - flexibleOffWork = DateUtil.beforeMinutes(flexibleOffWork,Math.abs(betweenToWorkTime)); - }else if (betweenToWorkTime < 0){ - flexibleOffWork = DateUtil.AfterMinutes(flexibleOffWork,Math.abs(betweenToWorkTime)); + flexibleOffWorkTime = jssjEnd; + if (betweenToWorkTime >= 0) { + flexibleOffWorkTime = DateUtil.beforeMinutes(flexibleOffWorkTime, Math.abs(betweenToWorkTime)); + } else if (betweenToWorkTime < 0) { + flexibleOffWorkTime = DateUtil.AfterMinutes(flexibleOffWorkTime, Math.abs(betweenToWorkTime)); } - + } + if (!"".equals(flexibleOffWorkTime)){ //根据弹性下班时间点重新计算 - Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(flexibleOffWork,clockInTimeList); + Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(flexibleOffWorkTime, clockInTimeList); String newtimeType = ClockPointEnum.EMPTY.getKey(); - if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){ - newtimeType=ClockPointEnum.EQUAL.getKey(); + if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null) { + newtimeType = ClockPointEnum.EQUAL.getKey(); } - if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){ - String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(flexibleOffWork,thdkfzs))) <=0){ - newtimeType=ClockPointEnum.AFTER.getKey(); + if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null) { + String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") + " " + jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(flexibleOffWorkTime, thdkfzs))) <= 0) { + newtimeType = ClockPointEnum.AFTER.getKey(); } } - if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){ - String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); - if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(kssjEnd)) >0){ - newtimeType=ClockPointEnum.BEFORE.getKey(); + if (ClockPointEnum.EMPTY.getKey().equals(newtimeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null) { + String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") + " " + jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(kssjEnd)) > 0) { + newtimeType = ClockPointEnum.BEFORE.getKey(); } } - String newPonit = jssjEnd+"|"+ClockPointEnum.END.getKey()+"|"+newtimeType+"|"+flexibleOffWork; + String newPonit = jssjEnd + "|" + ClockPointEnum.END.getKey() + "|" + newtimeType + "|" + flexibleOffWorkTime; clcokInTimeMap.remove(point); - clcokInTimeMap.put(newPonit,jsdkNearestClcokInTime.get(newtimeType)); + clcokInTimeMap.put(newPonit, jsdkNearestClcokInTime.get(newtimeType)); } } - } } } - //当有2笔需要打卡时,可能会有打卡歧义的情况,歧义情况取2个时间点的中间值,当打卡时间小于中间值归属前一个打卡,大于则相反 - if (clcokInTimeData.size() >1){ - for (int i=0;i> beforeClcokInTimeData = clcokInTimeData.get(i); - Map> afterClcokInTimeData = clcokInTimeData.get(i+1); - Map beforeClcokInTimeMap = null; + + /** + * 当有2笔需要打卡时,可能会有打卡歧义的情况,歧义情况取2个时间点的中间值,当打卡时间小于中间值归属前一个打卡,大于则相反 + */ + if (clcokInTimeData.size() > 1) { + for (int i = 0; i < clcokInTimeData.size() - 1; i++) { + Map> beforeClcokInTimeData = clcokInTimeData.get(i); + Map> afterClcokInTimeData = clcokInTimeData.get(i + 1); + Map beforeClcokInTimeMap = null; String beforeClcokInTime = ""; String afterClcokInTime = ""; - Map afterClcokInTimeMap = null; - for (Map.Entry> beforeEntry :beforeClcokInTimeData.entrySet()){ + Map afterClcokInTimeMap = null; + for (Map.Entry> beforeEntry : beforeClcokInTimeData.entrySet()) { beforeClcokInTimeMap = beforeEntry.getValue(); beforeClcokInTime = beforeEntry.getKey(); } - for (Map.Entry> afterEntry :afterClcokInTimeData.entrySet()){ + for (Map.Entry> afterEntry : afterClcokInTimeData.entrySet()) { afterClcokInTimeMap = afterEntry.getValue(); afterClcokInTime = afterEntry.getKey(); } //重复 - if (beforeClcokInTimeMap != null && beforeClcokInTimeMap == afterClcokInTimeMap ){ + if (beforeClcokInTimeMap != null && beforeClcokInTimeMap == afterClcokInTimeMap) { String beforeTime = beforeClcokInTime.split("\\|")[0]; String afterTime = afterClcokInTime.split("\\|")[0]; - long betWeenMinutes = DateUtil.getBetWeenMinutes(beforeTime,afterTime); + long betWeenMinutes = DateUtil.getBetWeenMinutes(beforeTime, afterTime); - String middileTime = DateUtil.AfterMinutes(beforeTime,betWeenMinutes/2); + String middileTime = DateUtil.AfterMinutes(beforeTime, betWeenMinutes / 2); - String signdateTime = beforeClcokInTimeMap.get("signdate") +" "+beforeClcokInTimeMap.get("signtime"); + String signdateTime = beforeClcokInTimeMap.get("signdate") + " " + beforeClcokInTimeMap.get("signtime"); - if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <=0){ + if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <= 0) { //该打卡归属前一个打卡点 - afterClcokInTimeData.put(afterClcokInTime,null); - }else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) >0){ + afterClcokInTimeData.put(afterClcokInTime, null); + } else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) > 0) { //该打卡归属后一个打卡点 - beforeClcokInTimeData.put(beforeClcokInTime,null); + beforeClcokInTimeData.put(beforeClcokInTime, null); } } } diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java index ec1a377..3990ea6 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java @@ -9,6 +9,7 @@ import com.engine.common.util.DbTools; import com.engine.core.interceptor.CommandContext; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import weaver.conn.RecordSetTrans; import weaver.general.Util; import java.util.List; @@ -146,6 +147,32 @@ public class recordDataCmd extends AbstractCommonCommand> { DbTools.update(sql,insertDatas.toArray()); } + updateWorkOverTimeDate(userId,analysisDate); return null; } + + public void updateWorkOverTimeDate(String userId,String date){ + String sql = "select id from uf_jcl_kq_cqjg where ygid=? and rq=?"; + List> dataList = DbTools.getSqlToList(sql,userId,date); + if (dataList.size() > 0){ + String id = Util.null2String(dataList.get(0).get("id")); + RecordSetTrans rst = new RecordSetTrans(); + rst.setAutoCommit(false); + try { + sql = "delete from uf_jcl_kq_jbjg where lyid=?"; + rst.executeUpdate(sql,id); + sql = "delete from uf_jcl_kq_jqye where lyid=?"; + rst.executeUpdate(sql,id); + sql = "update uf_jcl_kq_jbjg set lyid =? where lyid=?"; + rst.executeUpdate(sql,id,userId+"-"+DateUtil.getCurrentDate()); + sql = "update uf_jcl_kq_jqye set lyid =? where lyid=?"; + rst.executeUpdate(sql,id,userId+"-"+DateUtil.getCurrentDate()); + rst.commit(); + }catch (Exception e){ + rst.rollback(); + log.error("updateWorkOverTimeDate error :{}",e); + } + } + } + } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java index e147cdd..3db3f37 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java @@ -89,7 +89,10 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("hsdw",hsdw); + saveWorkTimeBeLateParam.put("hsl",hsl); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("classStartTime",classStartTime); + saveWorkTimeBeLateParam.put("classEndTime",clockInTime); resultList.add(saveWorkTimeBeLateParam); } @@ -133,7 +136,10 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("betweenMinutes",between); saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("hsdw",hsdw); + saveWorkTimeBeLateParam.put("hsl",hsl); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("classStartTime",classStartTime); + saveWorkTimeBeLateParam.put("classEndTime",clockInTime); resultList.add(saveWorkTimeBeLateParam); } @@ -177,6 +183,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LATE); saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("hsl",hsl); + saveWorkTimeBeLateParam.put("classStartTime",classStartTime); + saveWorkTimeBeLateParam.put("classEndTime",clockInTime); resultList.add(saveWorkTimeBeLateParam); } @@ -256,6 +265,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY); saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("hsl",hsl); + saveWorkTimeBeLateParam.put("classStartTime",clockInTime); + saveWorkTimeBeLateParam.put("classEndTime",classEndTime); resultList.add(saveWorkTimeBeLateParam); } @@ -301,6 +313,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY); saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("hsl",hsl); + saveWorkTimeBeLateParam.put("classStartTime",clockInTime); + saveWorkTimeBeLateParam.put("classEndTime",classEndTime); resultList.add(saveWorkTimeBeLateParam); } @@ -345,6 +360,9 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt saveWorkTimeBeLateParam.put("itemType", AttendanceItemTypeEnum.LEAVE_EARLY); saveWorkTimeBeLateParam.put("hsdw",hsdw); saveWorkTimeBeLateParam.put("kczgsc",kczgsc); + saveWorkTimeBeLateParam.put("hsl",hsl); + saveWorkTimeBeLateParam.put("classStartTime",clockInTime); + saveWorkTimeBeLateParam.put("classEndTime",classEndTime); resultList.add(saveWorkTimeBeLateParam); } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java index 8a0d5f3..41461f7 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java @@ -1,6 +1,8 @@ package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.service.AskForLeaveService; +import com.engine.attendance.enums.AccountingUnitEnum; +import com.engine.attendance.enums.AttendanceItemTypeEnum; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.WorkForTimeEnum; import com.engine.common.util.DateUtil; @@ -31,13 +33,26 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic List> offsetAskForLeaveAnomaly = Lists.newArrayList(); for (int i=0;i=0){ + AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInList.get(i).get("itemType"); + String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime")); + String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime")); + if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) && + !AttendanceItemTypeEnum.MISSE_CARD.equals(itemType)){ + Map leaveMap = Maps.newHashMap(); + leaveMap.put("kssj",kssj); + leaveMap.put("jssj",jssj); + int betweenTime = DateUtil.getBetWeenMinutes(classStartTime,classEndTime); + int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap); + if (betweenTime == intersectionTime){ offsetAskForLeaveAnomaly.add(abnormalClockInList.get(i)); + }else { + String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw")); + int hsl = Integer.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl"))); + double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES); + abnormalClockInList.get(i).put("itemduration",itemduration); } + } } abnormalClockInList.removeAll(offsetAskForLeaveAnomaly); diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java index 49a8086..eeccf0e 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java @@ -1,6 +1,8 @@ package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.service.EvectionService; +import com.engine.attendance.enums.AccountingUnitEnum; +import com.engine.attendance.enums.AttendanceItemTypeEnum; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.WorkForTimeEnum; import com.engine.common.util.DateUtil; @@ -29,12 +31,25 @@ public class EvectionServiceImpl extends Service implements EvectionService { List> offsetEvectionAnomaly = Lists.newArrayList(); for (int i=0;i= 0) { + AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInList.get(i).get("itemType"); + String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime")); + String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime")); + if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) && + !AttendanceItemTypeEnum.MISSE_CARD.equals(itemType)) { + + Map leaveMap = Maps.newHashMap(); + leaveMap.put("kssj",kssj); + leaveMap.put("jssj",jssj); + int betweenTime = DateUtil.getBetWeenMinutes(classStartTime,classEndTime); + int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap); + if (betweenTime == intersectionTime){ offsetEvectionAnomaly.add(abnormalClockInList.get(i)); + }else { + String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw")); + int hsl = Integer.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl"))); + double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES); + abnormalClockInList.get(i).put("itemduration",itemduration); } } } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java index 60f64af..ede3001 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java @@ -16,11 +16,9 @@ import com.engine.core.impl.Service; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; -import weaver.conn.RecordSet; import weaver.general.Util; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Collectors; @Slf4j @@ -132,11 +130,11 @@ public class UtilServiceImpl extends Service implements UtilService { map.put("dtjssj",overtimePlan.get("jssj")); map.put("ksdk","0"); map.put("jsdk","0"); - map.put("tqdkfzs","30"); - map.put("thdkfzs","30"); - map.put("sfdx","0"); - map.put("zddxfz","0"); - map.put("dxhs","0"); + map.put("tqdkfzs","60"); + map.put("thdkfzs","60"); + map.put("sfdx",Util.null2String(dataList.get(0).get("sfdx"))); + map.put("zddxfz",Util.null2String(dataList.get(0).get("zddxfz"))); + map.put("dxhs",Util.null2String(dataList.get(0).get("dxhs"))); map.put("rqlx",dateMap.get(e.getKey())); map.put("edxss",overtimePlan.get("jbsc")); if (attendanceItems.size() >0){ diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java index e04b385..a443e4e 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java @@ -3,7 +3,6 @@ package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.cmd.item.WorkOvertimeItemCmd; import com.engine.attendance.attendanceanalysis.service.WorkOverTimeService; import com.engine.attendance.enums.*; -import com.engine.common.util.CommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.engine.common.util.Utils; @@ -380,6 +379,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ insertParam.put("sjjssj",realityEndime.split(" ")[1]); insertParam.put("sjjbsc",itemduration); insertParam.put("jbjgly","4"); + insertParam.put("lyid",userId+"-"+DateUtil.getCurrentDate()); insertParam.put("zt","1"); Utils.InsertFormTable("uf_jcl_kq_jbjg",insertParam,(Map)params.get("formmodeIdMap")); @@ -391,6 +391,7 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ Map insertHoliDayParam = Maps.newHashMap(); insertHoliDayParam.put("ygid",userId); insertHoliDayParam.put("jqid",workTimeBeLateItems.get(0).get("zrdjb")); + insertHoliDayParam.put("lyid",userId+"-"+DateUtil.getCurrentDate()); //转入的假期额度生效日期 String yesxrq = Util.null2String(workTimeBeLateItems.get(0).get("yesxrq")); if ("0".equals(yesxrq)){ @@ -407,47 +408,47 @@ public class WorkOverTimeServiceImpl extends Service implements WorkOverTimeServ String yekyzq = Util.null2String(workTimeBeLateItems.get(0).get("yekyzq")); if ("0".equals(yekyzq)){ //一个月 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,1,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),1,DateUtil.yyyyMMdd)); }else if ("1".equals(yekyzq)){ //两个月 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,2,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),2,DateUtil.yyyyMMdd)); }else if ("2".equals(yekyzq)){ //三个月 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,3,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),3,DateUtil.yyyyMMdd)); }else if ("3".equals(yekyzq)){ //六个月 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,6,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),6,DateUtil.yyyyMMdd)); }else if ("4".equals(yekyzq)){ //十二个月 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,12,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),12,DateUtil.yyyyMMdd)); }else if ("5".equals(yekyzq)){ //季度 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,3,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),3,DateUtil.yyyyMMdd)); }else if ("6".equals(yekyzq)){ //半年 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,6,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),6,DateUtil.yyyyMMdd)); }else if ("7".equals(yekyzq)){ //一年 - insertHoliDayParam.put("jzrq",DateUtil.nextMonth(analysisDate,12,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("jzrq",DateUtil.nextMonth(insertHoliDayParam.get("sxrq").toString(),12,DateUtil.yyyyMMdd)); } insertHoliDayParam.put("ktsc",itemduration); String zdyqsc = Util.null2String(workTimeBeLateItems.get(0).get("zdyqsc")); if ("0".equals(zdyqsc)){ //一个月 - insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,1,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),1,DateUtil.yyyyMMdd)); }else if ("1".equals(zdyqsc)){ //两个月 - insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,2,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),2,DateUtil.yyyyMMdd)); }else if ("2".equals(zdyqsc)){ //三个月 - insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,3,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),3,DateUtil.yyyyMMdd)); }else if ("3".equals(zdyqsc)){ //半年 - insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,6,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),6,DateUtil.yyyyMMdd)); }else if ("4".equals(zdyqsc)){ //一年 - insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(analysisDate,12,DateUtil.yyyyMMdd)); + insertHoliDayParam.put("yqsxrq",DateUtil.nextMonth(insertHoliDayParam.get("jzrq").toString(),12,DateUtil.yyyyMMdd)); } Utils.InsertFormTable("uf_jcl_kq_jqye",insertHoliDayParam,(Map)params.get("formmodeIdMap")); diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java index 244f037..fe89bee 100644 --- a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -1,14 +1,11 @@ package com.engine.attendance.attendanceanalysis.wrapper; -import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd; import com.engine.attendance.attendanceanalysis.service.ForgetClockInService; import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.impl.ForgetClockInServiceImpl; import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; -import com.engine.attendance.enums.AccountingUnitEnum; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.ClassSegmentTypeEnum; -import com.engine.attendance.enums.ClockPointEnum; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.engine.common.util.ServiceUtil; @@ -172,6 +169,7 @@ public class AttendanceAnalysisWrapper extends Service { sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb,zysd from uf_jcl_kq_kqxm where id=?"; + List> askForLeaveAndEvctionSchedule = Lists.newArrayList(); for (Map askForLeaveData : askForLeaveList){ Map askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx")); //全天请假 @@ -188,10 +186,11 @@ public class AttendanceAnalysisWrapper extends Service { } askForLeaveItems.put(askForLeaveData.get("jqlx").toString(),askForLeaveItem); + List> finalScheduleResult = scheduleResult; Map askForLeaveMap = new HashMap(){{ - put("bcxx",scheduleResult.get(0).get("bcxx")); - put("bcsdxx",scheduleResult.get(0).get("bcsdxx")); - put("edsc",scheduleResult.get(0).get("edsc")); + put("bcxx", finalScheduleResult.get(0).get("bcxx")); + put("bcsdxx", finalScheduleResult.get(0).get("bcsdxx")); + put("edsc", finalScheduleResult.get(0).get("edsc")); put("bdlx", ClassSegmentTypeEnum.EVECTION.getKey()); put("dtkssj",askForLeaveData.get("kssj")); put("dtjssj",askForLeaveData.get("jssj")); @@ -199,14 +198,13 @@ public class AttendanceAnalysisWrapper extends Service { put("jsdk",askForLeaveItem.get("lgsbxydk")); put("tqdkfzs","60"); put("thdkfzs","60"); - put("sfdx","1"); - put("zddxfz",askForLeaveItem.get("tqlghlfzs")); - put("dxhs",askForLeaveItem.get("thfghlfzs")); + put("tqlghlfzs",askForLeaveItem.get("tqlghlfzs")); + put("thfghlfzs",askForLeaveItem.get("thfghlfzs")); }}; - if (!"".equals(Util.null2String(askForLeaveData.get("kssj"))) && !"".equals(Util.null2String(askForLeaveData.get("jssj"))) &&(CheckBoxEnum.CHECKED.getKey().equals(askForLeaveItem.get("lgsbxydk")) || CheckBoxEnum.CHECKED.getKey().equals(askForLeaveItem.get("fgsbxydk")))){ - needClockInSchedule.add(askForLeaveMap); - scheduleResult.add(askForLeaveMap); + if (!"".equals(Util.null2String(askForLeaveData.get("kssj"))) && !"".equals(Util.null2String(askForLeaveData.get("jssj")))){ + //scheduleResult.add(askForLeaveMap); + askForLeaveAndEvctionSchedule.add(askForLeaveMap); } } for (Map evectionData :evectionList){ @@ -224,10 +222,11 @@ public class AttendanceAnalysisWrapper extends Service { return; } evectionItems.put(evectionData.get("cclx").toString(),evectionItem); + List> finalScheduleResult1 = scheduleResult; Map evectionMap = new HashMap(){{ - put("bcxx",scheduleResult.get(0).get("bcxx")); - put("bcsdxx",scheduleResult.get(0).get("bcsdxx")); - put("edsc",scheduleResult.get(0).get("edsc")); + put("bcxx", finalScheduleResult1.get(0).get("bcxx")); + put("bcsdxx", finalScheduleResult1.get(0).get("bcsdxx")); + put("edsc", finalScheduleResult1.get(0).get("edsc")); put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey()); put("dtkssj",evectionData.get("kssj")); put("dtjssj",evectionData.get("jssj")); @@ -235,22 +234,22 @@ public class AttendanceAnalysisWrapper extends Service { put("jsdk",evectionItem.get("lgsbxydk")); put("tqdkfzs","60"); put("thdkfzs","60"); - put("sfdx","1"); - put("zddxfz",evectionItem.get("tqlghlfzs")); - put("dxhs",evectionItem.get("thfghlfzs")); + put("tqlghlfzs",evectionItem.get("tqlghlfzs")); + put("thfghlfzs",evectionItem.get("thfghlfzs")); }}; - if (!"".equals(Util.null2String(evectionData.get("kssj"))) && !"".equals(Util.null2String(evectionData.get("jssj"))) && (CheckBoxEnum.CHECKED.getKey().equals(evectionItem.get("lgsbxydk")) || CheckBoxEnum.CHECKED.getKey().equals(evectionItem.get("fgsbxydk")))){ - needClockInSchedule.add(evectionMap); - scheduleResult.add(evectionMap); + if (!"".equals(Util.null2String(evectionData.get("kssj"))) && !"".equals(Util.null2String(evectionData.get("jssj")))){ + //scheduleResult.add(evectionMap); + askForLeaveAndEvctionSchedule.add(evectionMap); } } - needClockInSchedule = needClockInSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); Map clcokInTimeDataParam = Maps.newHashMap(); clcokInTimeDataParam.put("analysisDate",analysisDate); - clcokInTimeDataParam.put("needClockInSchedule",needClockInSchedule); + clcokInTimeDataParam.put("scheduleResult",scheduleResult); clcokInTimeDataParam.put("clockInTimeList",clockInTimeList); + clcokInTimeDataParam.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule); List>> clcokInTimeData = utilService.getClockInPointCmd(clcokInTimeDataParam); Map recordAbnormalParam = Maps.newHashMap(); diff --git a/src/com/engine/common/util/Utils.java b/src/com/engine/common/util/Utils.java index a9f1a64..773fea6 100644 --- a/src/com/engine/common/util/Utils.java +++ b/src/com/engine/common/util/Utils.java @@ -428,12 +428,40 @@ public class Utils { log.info("请假外出时间 左边"); }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) <=0){ //请假外出时间中间 - betweenMinutes = 0; + betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); log.info("加班实际在请假外出时间中间"); } return betweenMinutes; } + /** + * map中的开始时间和结束时间,在kssj和jssj中占据的分钟数 + * @return + */ + public static int getIntersectionTime(String kssj,String jssj,Map map){ + String leavekssj = map.get("kssj").toString(); + String leavejssj = map.get("jssj").toString(); + int betweenMinutes=0; + if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) >=0){ + //时间在中间 + betweenMinutes = DateUtil.getBetWeenMinutes(leavekssj,leavejssj); + log.info("时间在中间,被包含"); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavekssj)) >=0){ + //时间 右边 + betweenMinutes = DateUtil.getBetWeenMinutes(leavekssj,jssj); + log.info("时间 右边"); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) >=0 && DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavejssj)) <=0){ + //时间 左边 + betweenMinutes = DateUtil.getBetWeenMinutes(kssj,leavejssj); + log.info("时间 左边"); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) <=0){ + //请假外出时间中间 + betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); + log.info("时间在中间,包含"); + } + return betweenMinutes; + } + public static Map getFormmodeIdMap(){ String sql = "select modeid,tablename from uf_jcl_form_table "; List> dataList = DbTools.getSqlToList(sql); diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class index 110e3b6d7aaaaaf44c33d5b8d0a4a2bed9bd12be..d225959780fcd0703bbb5f7d76409ad5c9af7382 100644 GIT binary patch literal 18307 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%0D!1SM?=c3%HY zETQYb>tl>^#mJ{=R@M|o1Qk)3P%c5ksB6s5QrB?Xljmfaly$d#OV9&zYzqmYQj#7{ z-G~rSjQAxk7?ISK(lk_&VXD?8^fu3jmKnnd#@^z2*9mQ|jl_yAUgzYzK9fGjWa?g> z4v7AKH*vd6;arnSbxqF;Gi*_>NZ zq8Ee;gC(NQgO44wzyMg-MZsXn7RpZ#)`bdP6-B`!c!;QaxGx$LEV3;!6a*&&SYYoV zeB0AQ_y##tqL)~=n~|broV<%dx~})oVo~C%0NrSxZ>GrB3+sK6g-f2Q_q4V?`+xP-;jn zVB;;ZW00WHK9|JdZTAFLqi$K&MdbqiHX5GNXbKEgn48nf^`JhWha%#}71Yc0V*AGT zPxDB$=-&;pL6$y9Xt^v{)`$KwgZ`*Re;E*$f&RKs3h_6mzf{l<_-XnbVEWTvnn8bQ zn*NEl=)U%MDR#2c0|sD?585;`t4v|4FtdoxY4Jz$XG0fS5rfV3PQ zFv#=(YY-k_!P(5K^+MxR9%SWbr8-(!QZtx|$lvr*1N$nmDs}QY4rJ$Wmh-UhbcO+! z>1D#@3xjz=fwtq@`B5eTt%88m(fT5#4rJ$Wb^=nn#B??SL_sp+KrXfQ2?f~>kZ~MC zD3)zQIi@RQ*hU##5amF8^c?(L?A<4Z*6%O>UM{sB2f)YKw;(>@(_rEg4AGBuKKo?m&kF%;+? z-OF~IFpIvrHG3Q7>awm{vzy!~Z#^_7Rg#h3rKfP^y&u=s2k2OOkS5`(xqu#~HS`Fs z@sFalop#dWw2Pjg-_VmNDsRxIES9*IrI!Kqn~gqJ;&dp=lQp^lmARF@L%cY z(sA?)X*BJUD(P2J1HB||q?e_e=@qGqel5L3uS&1cZ&8|gO?r=hC;gpXm%gAkUB&c! z*JApEtBu}rt)+KeKcYXn-l0FaKBD(r|DyNZW9S2S1?_R4N_*W4=|gt|ee7GweWhI}gbns-Qlcy+K_%!7{K3#c& z&rqJ?N@XWkDKB%4@+P0De9mX7F0NHa<5#T}JX5XaI&~&~(RvPk(z<}pQCIRD^&+0D zKF0IZ9ry+7POewq;RWg*UZ{S`=Xu?{*sJpS-U7bBTY{gij^_)#lR4~N$qn94ZuD;8 zh<7VDdAsl{)yMH8)o%PU^;M2}-{KbU9{eyhpI7>Z;b*C1IO!XYpQTptD&KTo?K_)0 zeGB*^Ujtv_Th8lzZM@#MfiLx4#T$M1@h0C#e3{?Hm;3#ErGErp<&X2#{_pZN{>%9~ ze-Gc_{~6!tf1NA*Z}S%aZr~t`!7)2&nXo=aP1^k*(s`Ahpe%vTkDX`wIp4r6> zuy;{z`VF54t4Gm_-r)JL{q^LBjau+vofbT)!G^i#Bo zl`Wv)Ih5UWbtc_QFJNye%7k~(|6sPvtHQHItJGV7F)>@_eHC9m8)LAuXXr)D4)Tq$ z@DB2QWbsz!k6XNzLFX}p`a#fqgnlmI;eK6a;!sw)qlR39N{2g4zrgGOrPF-@{Swp{ zD?7p4E{v5ZFT1_;E3|awP1iv~rUR9Q?u|xqut*;4d6r%ReO`I8=T3SVEuVar=Lhr( zp!nsOrDPo=Nm7W^?5p&vAyF^W=BrUPLNUsATyqLP?bhJYDk1 z^cq?L&ja#!`W;$@?sdxf^g4=uZub^tD&iW7gYL&so_!Ou9``OKK)**zaqshdN`F90 z)v6(lw;*Rt+lbcNM(as@E&mQ?{n~SgneU>dX}eIw{v-W~amA+#IoRCq%vA}xxw@ClvvV%F#1$MuG++@c6( z6gd&R(Go>YHd>;{DUmzpG^3#DG76e|so1jSeXwTJhWDZHYFZ@5EIY)QWrrI`wybXh zO1h?f{e^VP3ii<;OXK?}Xz6(a6QqtCC9&{~RxJ1QUruz8ZZ|8NsBw-?ZA)*G`)o2Qn!S>T0+|zLk=H8k;y1Ha?H2Qy%W49n;!rSqcn*HjN&%pf;#Gp?dn8qT5T#q&ISbRO=8t$6P zz>2rnEUXt>Sf_2L6`2?|)2Qtf>pKQYS~ABDMajoF=RR>zGA)ymDJCU&sm`M0JWwK} zH_p25r0PUjxa|F|Ll{Wsr=q>^dF|$&PVgcS=?f-|9@AikCy_U-X$p%20fYKi)w5 z4oW^w`Qn8+&ah3lWzqkp&oL(`oP1F0ys%NXW#-n8OC|oXW;wzfsT9xBk`1hr}0A_8#Vk$$7X}$ zKi08D4gJKxGx%u)I(`i2I-p}*_+hmPyj;6GL88>;h7^>|Cib{${VahG~~I|>LQBH}Z|F9FpG zMj-;Sil&QBLnRy$13%Lw5Z>utlG>m{4j&PfF<}`i;|v)~$Yi`GM;S6fCejyjv?j+0{ON3mAi6l4 z>uBgnx1ZG2usGY%k<85&gyy6&sr(rnty|m`-xzP`&8N~0OX3@5PgyMpG-VS>LHXiT zCb_h?yEU0>iMOWNLs@O{^y+vnrQY4nK)y58BWPUQmhEmxW;)2!5YOk6nM6F(=559^ z@${CSR8K=&ccS6!WWFh#ZCk%Evpk#1Bu`;Os$cF8qa<{D9t2PVG8E zNryd^nyl?#@!1D7if}Q&yema8&yCihF>ae-13w6dl8A9V6Y+S4OD~aM-_z4&H@fVG zmcJyizP*pDQ5JIjt?x;!Uz&_FPN+`NfdV~GKeli^svsN~up>#!ce)~~yWWF6;t3={ zkP9WZg}=?tuemUjN#>f;@t&R}6{+%=#R(?aRP;ooHJM+NOxhtujWWqi%d^aHZ1!-G zt3VTsB+Vv8lU@pfjF!izKHT4Ikl?GY}XOHvtTClvvUD5yJ? zNTitdZ8%MZY=Q~Gd989pc_PDE+LgA{q1{8sZA9oJrK^XWIc2Z}CZEAwHuKuj;CRmk zcGzoOaAB!vC+_~86O_@pZ7M44J(We1CX-kbv1kx6-+#HgsvNdu9rm>3DZ*B0gzQW}S56tlHlXl9NrD zC8x0N8DL`AYI3S6r%B9|*)oTzM`b}%P8U{~qisUZUNyHjl};pcrkp8f5!wl=(P+wC znWIUQDf6URlli8cEelL;Jc~3r$CSmg#FVA7Oq1oNd`MPkveJ|mS!K#<^;jdT++43R zlH1HPPnoh-7MXIc8kY~7a-O1Ir_>6lG;GTGYWM=xd!Z~-xLjn)#lo7TVs18@SI*k7 zB$@BbCVI+4(pn*B@TaW;kC>8>q$cgAbO>=xnbIW`mzHi4WK7Abj0saV$R(QOn6gUX zauSFFi%3=s2FR2i)$co>3g@NQl#Q}Ulg*}Vkv>x{l@DujnSz8)x?HB1a)s)-(v+*@ zY7<$|8P}L{tz1VVTN7z+31_l6{8uV-O|CcP2D#D1g}6vC)gz8gRo}j6Y;!>kSiX>3 zPn_kfV7wC1kpeFb$&xuIvdWTv;fr=h7c*|vUec5^e|D7a}sbJID^^LX^}COyvya3~k`3DI}w zBw6Z}YEZ;Cl)R)jo+b)a!?~9RgyI`E@Qf*#?j>;fy@)$qZr0(>xEG850@JW4A@MNYMxJUMiT)g!0k!8qBH6-;rB zwdvYAbJH!n_*Cl7#;Rd9`BWGObhEjP-<+7dwR;-CRT9h8{0?Eg(2?809_rK&_6F^9^$b6{z>j zH#8X4q13*3aDq74ykvRHxr0v4@59A8g3TXV)wr0kIJbHJvK7tT6`caMST_e7=eIPk zAmPfE#uY7uBA%c@rtO#_k-vEK1wdE!Hfdo_sDD=Xx7cSh05GIlbzp zgM+gT`KWwMT@8Jl@>sYtYfLC1Z|}{t4pUTua@4g;Tp7ktZ)_T!;pv8RuxCSBoh^r3Q&ZM?vOk@ouAevonddqu z)S}ae;~vVZ7S4=A1#)9sTeg>%OPP*UJn*_1dC9`1t6G{@5~xFFRjTR517*DPCc&P6Q?mv9l!JfvO2 z@l)B+gKt^qv&_$`yNockcP?H9$9hwlEs2?HFz0MdZZhSQ@@W&_VWo+0;}OBp19>@> z*_d6=4a7dgusV&m7p97I54>se8A7-?n_b__JG~!yCw2umh3x{~8m5yylN?I#WvLs# z9>r!p z-$niKFR6bJzGz?%fCpET>HCWGmy+JW@x$~053UXxl?zBQ4v4(m zkFupx_h5t|7O;p&x#07G<5a6c@EAtMf;$o2jZs!GT4@8a8&#i|H}|6Y+=no_em82O z79Sk0b%)37#@JYB7=m$L0?i8bW4xvDu^UHiLtTNv=*I+))Im(a=tNrzz1EMTcjK5@ zx)qw%k4drcP8_=%$HmC+k3}rLPUfpkyblrQEoL}GmZ7Y`MnzROK-KQ*P|{5dqEiZ* zJGOec)Np-aSXpjbrZOy4rC-~Rsg8MDl>%y_K?-b8Gff*%;9`#g#qQx1C>b730T}Ge_>cm4Iv+bRgF}Tk1xpQWu)>yMo8$!gbStt44L+ne3I z;X=Mq0N5EU>}D`Vp|cEP#xOKaJ{q8jSh_nwAW^_U<$xg}T{c9RIb^~S!_W+#u$-&Y z{0egy6Ww?#Qt<860xP@EJd{n=2*p=k;9KqC8_2t6bjY+j;GN=-q|vit75-Txt42<@ zk>4JuoL)7u2u_s4qa;>oMfadl=-0X2d#bD|XYWD1YT0{FQ>@ym-UAlJkD)m>O10-Z zds5|&gU?!{qG#{M0{=|%I?cdLGC0lP%-CqF%1QI`Lnq5w)%Mo)h*h~y`dzE7%E7t4 zvNW4BL#p*$28WpRh&cQF^{7Nj^iN(9Iq{`xNKbH1m*={T+jZtN( zJs?(5n60X?+LSJZ46L@P!kbmWmfA&Xci?0t|1QiZFpnw{8C5|gw?N8y?DtrO6}3j~ z!H1Zt*{Zd;VXH!A2lhEzfNMoRm8Wu6jk2V+s&m7vQrQg zr{7XpRK@Pt5(kcDAda!Kyc3PrjFcVkyy|3zz+G~_e^#I>;Jzld%i`%(tUaCmBo^dL z;Ns$INMah3htB`Q!g?m?Ngxqbq^RPR34|>-fiMvllZK|+ZZgqT0%09r%s=nXZg|+k zie1}>&s&;h+>K9LdLb9F@GLYasWGfv^T z?Npv8PQ#7dT)%-ic$_DUr*Q_qHain9;4Hj~M*NvyWR(%K75pNr6KBf?ERvgWj{F>p z<#$*ruQAsggB8AMXz?{-m9G`6eOF_R?^dk!?ZCOdA7P#EIb7g-85jCq!9~8;ak1|$ zwE9P*&3`@;{v4A2K6LtTL(2b4bou{;_5Ob#6PS){U=}V3oQ9sjT=WLkVpAZGErFYH zXJ3+%<^ffsQ_;E%X6@D{ELj>FZ#MqC$Mjq8J5xFL8GZsf7$V~mfF2cNwak@BbnLV|(Zc+!cBTcZXiW zS3_^$YuW_dqs_p*+9|kCn~iU1bMZ}W9q!kXctG2Vo!WNn(!PfWwI5@*_5vQ#eusYT z?|4{y6MJ>Rw{;zl=o9g%J{8~5<9JN(#CP=@@wk2qp3v{Wlls^2ef=pstv|~z0-xvC zfWN>`^w;o={ulgI-;d|QK|CKW!wcbY{95l=ycBN2FTywA;GEa+>%e&Ek(N=eK<8Bp6AG7Rm7gzODRt?;d`* zw?{@qo|1~lbNFlIC8<{DUEkO3xEYVjd7?ELF*QyLYvnmy!M+f-$Sz#TmWIcr3s>Q4 z-Yh&Vt+8x;2(zY(O;WA0!7WR#ym&VzW$A)_R z2W%^&p-uj`@fnVe3ibKlz-OsnW#|e2efS*vszT5Bx8qi}szWdNZ?zE`9a4CMOqp+Q$fj~aw$Co*8FmQA5Roul^ zh;dYduMkO-5mbY_?bdSobO$*ik#)>DUuDaTBzZUUHGCaqksR-5?qOefWGnO0y=+w& z+hi8*Q=T#IlgZ3aos@jPOu{$W(u@aX0`4cBZuIl(&Ii~E8+*mVPL3MJHL}`9BcSd# z>>Cv(Kep733h$2CQa36-1R^g|n@zlLQFl+j;?0y3eY+TaPR#8>#El^KxpBijH*UI$ zaq}RmUGMHft?S8Mh`RpkLZ$1MF8amsK^IIH+rA>UeYD3x@4+H^Y`IwMDq^v#h(#B% zaP02lI&p05E85sswDD5f_${u<6{y<}Q)7n0LkI9BjVTIy_~#(=J-gZDi1X*6;-C~- z{lGi8;vMuU^3YIn-~jG)1j+$SE3yqR1qU$!Z^L&`9zsRwz#ieGjvlUt6vi&4D-fH! z-=1C$@;b2kgL9H{z!oB)W|C%lO&-+r8-21f43 zWCxA{7RwN|`HFZS%48)DILIrzfR_n)mznh-=9T)+v5~k9KvyvKU6iqDTYY&c=EE{6 z)0`P;+CkpqmiUh+y^{AAdvjJfy51d{bNFxv32~_o4jU zo45EbcN?Qs-SN)Yi8Z^iwmy2UT|U~yH!ERv8(AM6xPs#P*@1xnUUE3MvCe()<(^q) z;8A7QQcLtv7Sgs==-*@lEgg9bvHvM)v;Knwz5G8saW$xJetEUcrn z1fht?w77s^YZPQrAvJ)Y*xI5MP%5QbT^SFA3}v__ZA`d)-$E!HwU~x(geyt5rN+s zc-?_F@cTFjoHy{M1ATE^;4S%mTi_jm3l97Ne-!wWz@O#pyK?J$0&4}<3A`_-J`lJl z@E3u<3j9r?KQG0Harg)y$KmhzhZL6#{4)+&_?Hx)NVCYlCEWi=@u|RPGX2W}t#N3> z6$$EdfiDEw1wjxwNFh~_#?eU^WD{fv5`ydwUW#*&Nu5~WT}Dft1;w*h>LRGCAg7=N zL5YHr1a*_<$qoc5MbNZVfo6lcJFpnXSx}mw9`f5$P%lBf1-S(EkrRCl>L5Au>J|NSCedVq&F!sT9?m8h?j;SO>TIsq6qBaXXkHrV zZm1l=OXN0bnhcvx(>b|@N|PqhjOYo`JLMM2Gw4>6X3{LKrAf0X-=sM-H~P6qNzSCX zCe4##5*3(q8%;E+kmg6-_O!ks)DYrh)ppfX`(0VC6{`%o-J}Jy(4<9F)LdrIptQv% zd8nAssiwBr8?3DI1eTSRj4;VdH%FTt?j9v3H)4rFr6w(?$jXwj1t9_v<&tq##vs&r8@K>~k#%1uI>(ONz?9{-TQNqVnSM zQdj*_U&!b3Gnnigld7rc`rE6Q`M$QDkj{BWxbfFIt?`8|m#*xbYb+#BrPVb?()IO> zObSsxA>kV+YEliQ^P20M+3xa%Lcx$LYsD&)!c=SG`}je0a$JtB&ZK&3XxlktfG-T-0P!8}&MLo;T z`~|u}Lo)10L4!52c4HZq^N8)_@nVmwSU33_n_10TgmndXI9R|cMqm&#Uczt02x?~5!i@P*pAV77&qY<-^4Fs49+2&@Az@JgdAK!E@_xR0uw0>lV|`Y zQxT?608^TZy--mFhvoVrF6$^WdeVvVUALWxymZcQ=UYDauD;C zv$$QkfCb7YSfqT0BGtfRH4Yv%9>r<`ylM(c)RFM1W3WV>i&8a+rRsW=sasI4?n8xo z0)F)jD%JA{sP7}FUW%YfZ9}zYM@UOTjn)TY&5c@Z9O|?wsMiY6pe@8Qtrp9*yRlN+ zk5$?WSgoB#M0*`~XrJOvy%W~x$*9+RVy*5*qdpVs^dj7)ufcl#er(WpVWYkWoAe{N zM}G;M^^b6`ei>VAI-<6S6I*R5xKB2X($R}cvl463$dAqrlwcieUAat)a2M9YNyT^! z8(52161em+Z52l1huDNJ4D=amUn0Z(spTb!L2t0UbknBeHOnG_0Tx&miK-Fd^4){Y zh*#rP75B=(YJ$>^Ei$m0qO>B)t4_(6tK?+uNBA*wE#4M~t-Mb`FZ~Lq(8$D2*FVJl zY@uPC{uUnKIURZWDLlw?HZ0PQVH+oCAfWGK_B4Y3I;_^W;~}23bD1__2TwY%U0;oz zti|DBeK}LC5he-UiJ!36iPE%o&TliHBzZm-z|I_zHFyMFI&ymioST(e6Q>qS<55l{ z2Cs?X#XvPhzCyK{QN^G<275<{CJwQSL%f5;b|!fz1G^18ZeWk~+j~{+vy_;WOMF^W z(u^;#Ft&l(u(K6hA_ui1^9p(x*x!n2ZOCn>$UG!|ORra>#lmu&y?or;aME%ueYU~h z3hrGg;=i@ai1fo5#;%noxU2jM$y6pHIDGDfCHTQB%Hxnl*evE%tj(tU>h@gJCc~Dy*c4bre+S4auSnpDwD1dO-#Z^ z;pf8{WWH>}Zr=4c|2^KrzMf!jd--PEhc~ewA8>W$g+H4sdyWYiIe>#)=1dOV%-q)5 z@oxMKPctpK@K=u-{2HSW_6#d)8@C8P-|rG-zMF7O@%0a!KC)k`rfPSe%G4 zS2o?E)1e5+z~ReC=#tBC#F1F%F`NU)2gx>ss~(VVgJL~hu@@%czg`$y2SmYF&(RL+ rJ{C~G?hGDARWows+ecq>pmq@MSPGuCyg!G#`72+wEPn7d+U#EffGgL5 delta 2163 zcma)+d306v5ywAsmv?{fz8hYAc?mR$5iE)&F(9QV5mG216syJ4DhHKd2*{ccAc>(! zo?1b6Ew@^0qs11{S}kG}757@fr7qRF)V8iIU2SXYno!dDy$3x#{il8Bow?unEi>Pl z-^@HWX-8e|sY81o0!GWUkPFz6q=B0ZYg0t*47r(G4C@R(2)Na--mt;2G2n-WO@_^e z+X8MkY&HBS$u8~)RqPHa=1!~jB)N;bLlwKNy2q;bSah!y_gQss&TxOg10fIcPzuAt z0gr?n%MQb%_WNVQV}_rEJkCDDe!~-X^+|j5DMOo~!|=3S`l;a=!?T9x49{Ek4_ooG z6ff{%il6h66)y+8lA?}Rt@wq#mV3?8{iPMZGW^IArzl97axiX@VvNCrqcl43~(a+F=pL{eh+N-WA+RBA<;Wa7uo zjMTtL2Fa%)DVK_PaI)U5l%wOuWa+S~NRE*rAu+6`v-za)g49GZ*xL7Gh~RWKM^Y)r z#@8p0nf_@R8pv^x952H(gh)=1&qOj@s)drpjUA06+S?W_9dSlu>(D7JZ7Wt;n$?li zSWzh_Mp7#kk&KX$LRnlNmH82k%#DYH+0;pqjFQhrGFm>@Ga(!y6=NbfSxym(R<_S= zTGrg!*s^NTJUum5((%SrO=Vpqr^>iM#z#^wpO0jM4M7G+GEu$|zmS@onk17WR3nxrX_oF-F+>bN_o?)ji-mmg=dU#@7-_5h*Wl2POusm;GY$%qJS{(%Jx345gOispkaF zWVlvkjS{J)i;-+*6y1zrJ16r1W7)4=^Ah8(?cN>e`+gR-GV~P7b zOWoIKb`Q|vzQ;1RkJg-*WVu($3U3H2y&BrQdfL5dba*ql$eT^4*Ul<$3#+}`x!8M* zHQqCHd9RT3KH?I;h)ex}bofVexnILte+KLPIb7ji#(Mu+HuyKQ$-k8?{(WrqpWsUW zU9R#!;Ts8`ZHWw5>r>^BTB|~Xqv{RxfFQ7I0 z2w!6j#Y%E-{#;h6elKsOR0(g)TPgES*GXq@lqk8G`5Rd`(9CtI>$IEBxh|Jj$8L$! z&!yI}JILwfGTqMDDmhZ1ioVX}T4HHszgEvVRQVsWPLWHke}F6WhDW{sGV68C=S+Ve z8+0u}gTF`VEFqx9-^nK3HFWvcXdNvfmt?cQo-Mi<((QM$RZ)uVej8URio|G}U!|x> zDm+b{8XS=Ck@HDveb^jqqxf)a+c*+itg#is_@;(YpcgB>0;%}lq?%_bs{)s+Ngj3) ztBY&26J96VuLWKd@U4Jr1HPUAUw1@)Cl3nJZfS1~st67-yKo@Bv8p83-OKboCicrY zWdBbyN6Z)esNw6h(ffG17ylrY0o{Ep?L{AJ0qOr`GFPB{n7D>im?hU2Pt<{MgFdF6 zB_s7I?JP}1=RGdsEVaQ}AOeSn~ zt6sG3Rx6dbFO|B~C29b-w%*>BYkRA=t=HDJ*J{1JUDVswZnj1G{b!juGe8VH_dd_{ z!88B?lO)q_qv;>NYbQ1GaR$K1Hijq5dh#f=+0cpOi-aibeI zxpA`xPvR*J!yc518BdGfXWV#J{EoP>SN!gCW4{~EdGI`5@Zd$f>B-FVr9 zf5tc5_?IGl6W{XiBZd_i3AL2(IejIRPyV&PV@%XVDJBsiV{M5q_-t0f|mYDN1 z@!-C<-FU~1&${t*H{LD6f8iHy-0H@CVw3+CLjF=bekC5i783qOJl+$J_ceUrK{HEQh}YLRoV>8Cx~j*BMK-SS!jq$s#M($YF6vgJlGzv^AgpPQruwR5$sV3m9m!;3 z$*xE;>MTZ*k;L|a_(1hQEWIVpUGcvDM0H(fGL`O&B*5FdY%U1Zv_%Hh1<$2clevMth^3TnG(Bw!}J8 z>E8BuUu>zd#o5B143Uik37*x!FxfcJwN-$^aD~%Kyijj+M~_(18_&f0y0W{e>Da(v zB10IrHE;1I9>u;YcR0Y3xoA`8)~=0-?j77+Vo$P$7bRGAt6ba}tJ@mcZuew1cK2Ab zilT|gz(7;7JH=p#CZeg{rle4-A(Dx3OAf2nT&1%sv5nyBPsNigsn^CWk7qlpgACuM zE`rBYMTki#jwVu3Yh6OAv13~%lFo>Y2wG<>vo#iDb9;oyhACN}YK){4+xe_)>fEuz@{G6B zY|T1tbHa9-*DzsYvdc7JaZJp%?dFYlH#?T3^VsA)v5bjRYq2t;!PwMlaW9T0tT^Xs zOAV%@v1M@))uxUbf@TYJd(n*^FA+&>>b%IqJLl@cOd82vQplx|>Lrcbe3lB&$I`)g zqAQjrxCc0HbTJ^jR74*3)nrj9wmLEl9WQyQguq^u&cB$w>7`OC)2Q4_KJsfc&Px>( z@KTUMd>+LFjly2iX*^fcn-kkKn&730bb^;AQHhsMq{$3Maf-TAX^p0czNub1iB2Xg z8FT!O_H|Xq`M_4^3|`;Y#Wtd88lB>$Q>oHR(`g2w;n>%7#ChR2u`t_xrbe@bUR7S2 zP1PFB@zPwHCt5z`rTH{Nqtm=pL#J!Bz)K6MR`l?(P=uHqvwCBUyi)5Bw#1WznHV2G zx9Dx>@UPKgFMXQM@X`|Df-{A^>cnHIc+?9MHHb$eO(irQyG|mIwr+`~g@bIR@Fi^V z(lW8Zayo%fckIiqjYN$gZY_D7F0`X2TbfXR>{8@TqOBUOU{m5D)(>6a0~WRnKe_fZ zm(0o@f39fM=164ID{~{RYTp zE=P?R{0b{P?F>H-MTAqVFl@Xit>nRqvCby(Y80_8UELE)#?p~Q^%_oc_zjcfJZPSo zhJ5m3R=PqsQRvo_O7$dS)m-dLCHW_j;LN33L@Pc8-ehcRT{<1vZobJvmCnGQ?cl?t zM*90Xt0Po>f+ptXR+Qt3dE+g~oSGMocV|*&6QRPECO^G!4fH4CY|~SnlGrP+KT<+s z*ulz9Ejt*mS@BXg4eT>s7?}=!O=ly-k=8$a_34~KO**=r`K`=m_OO{(L!}GWKa8RF3AI`i-$@@6yyZ(=}TC zipKhtjXY_FQ%Oh6wGiW&#k(Hq6doDJZqC>(;bxB}R$Vlj8cb%G(XCrBJ5n5i^;4rXd^QL3ncsiRhP}$%#M%GvJ zMm0c|Z40q-r&?*QYv%(!e{?~PIGL>=N4og+;A=d$y>V4TW5b5lwT-LI2vOQtx4Lo&BvZZP7C-OC;3%)>kUVq)RwlDf8)87%!fWyxazVq`(lXQUvdgPx`cc6|haT8}?iTdb@8 z&`nZ7CY+e}9%l)5ru78HHzGeJ!|B`Tkr)H~XI$cxl zuN%hFY~LJxT((>l_Bp4`)fp#-cgy|tIwQ?0H|PvOqg{0F-#xmQ(LpX65 z%X2l~Fjm;L-O^&m$lVB6MTbGU=)(BAn{L<3N5hMw^C);}wY^+C=Am$iU2(gfJg+hph8B`$wv5*b1P*;r}2-^_T^B@)~gjh%qFvJ|2=RqvM z5DVq767c6iEZ~G#z@LLyz@G=PfPbzYw4fAlKrG;QLM&iGOsXBm**1)Zz@R$EuI-j4 zQEjQCdpD|%9Aj1+sA$WfVhnbVA=T{4@sSSCEn4#-RKcY>^LQt5Sh&%2e!7mf&LL zd|aYLajCKimn)m`S>*=oRPMl4%3fTpd=sBjUdJ`cJGfT)0M{u8alNYuH@E`0(KQ7( zxn|-EuCuVq)q*d&*5h_pFLt|jV#swX?r=STJ6+G=Zr1_a<9ZGEy57fqs)GB~33x!A zhX>Urd`a!V9yNo9)z9M*^>#d}-h;2G58-k3WelsY;c4}CJfr>&&uYMkR))RWMC{Wl zv0s~y=d^k}ueIU@Z9QJpVt85PW%Lf_uuUgoE4CrT)?S6}Tnezw=VAw!g49i&_zdT2 z<#Z)A;$mC^9}UrLT#Cyuj-H|rF6UAOd*o((mU{zyIs6E&;2EVfi|)jg_$QRHoy?ZGE z)LbQYldqtMaW$99**50BVYZsNZ;)+g?i*5@Xrdu~fNgi1A$^c7c(Wl(*wrG1&6QmT z=q`Lttn7M?ZZlVQy>CmUDz;SW1eWR=A(hBg?Oc~jX0Gei&d0T^rG&6{Hm>86jA`tZ z>v?4b^Ryb=z;j(#qD{w*TvE}@{=11w8rHElZ|0I47iu1So@W$cr}}f;!fhU0qrQb( zxm1k3>Qndv`^}3N)W=w-ev}wF_G9cd)01iTr0Jn_)7Udy7Q*R<#^ zwy0^JG;I6uILkgf&aw}WGb~_c^rqhFtlsIY-n&?DQ=eU|k127QCH^8K^ZN)K;!xt% zaJz=x_P-$wcR2o8RlsuyUq<;@#&Y;ER~rHj;RytfZ4%FxO#z6>(npwj2zQ}$tZOi} znLc^)35TeHF)#+ja>8mDvi3FPzvDP}pYV6o@&fY@;a!A|UxM8B_aBS$7P-5V$=zL9 za`!Pqegebgs^cMdIX=haF30DX+~sKBv6DNugWQ>Ao7|Z-gWP%a;^QQDat-HRpUm$% zj2!CRY!1bY&OzGBt^9io{LUU~@jIV0qbba~{Lao?)>Ywb{(q52`Spq{zYFTVQBo*h zehTHwPoaDwg<5B&NzuoXMeZK9bN6sp&G>+B=kDY4a`&*v-76e-3Sm9Sm~(8NNBDw_xo{3J!FFsTnOWG@IGvM&PvL!mL!d(Vgq$lB!sj^d3!EW~ zZv)2H>bgD(hV=YP13e!@x)VdXBW~%ATLL{lZs`sT>3JB^52t?ba2g3FZ(h8@)bBe? z{l3e@?lq=<-(%|c1EzkjGxd9e)9@d1()%M$Hh;|d+E1DKy~Wh;ZKi(j@a&)ShlBtxC0(wi@$w3qAfHPo$SIm6UqUC!J881Ko2JN5(p33dbdvlooh<*2 zrYT-JMe)(8N+ne)H8ewMqghHnRViC(wsI-WQFhW?q1)QiqLXbidMKTqbApGI?J_(R=W05v+KLG z%Jma!b-hbxt3>ChVOp(LQ=57=wW~d}MjfOM^%h#EK0)WHBeY(9kuFfbK^Lk&qfYe$ zimD${Oe>>qZ4&ipRkTs7rMR|?HfgJ=SBp?W>!UtxJ0-O%X~3X>?_n<6)uKskaf>Fg z-7T6#af<@_=qif>`spr<0#?v77G(=ai!90(q$w5!ETd|R0+uT~tv$voZPp%PrQg~^ zXA7GYFvxZ`DP>4`!dfrPKDh~ZGr{q*XSP`s@LgJO(83D#;A;j^D`P*tY*4^*_U3cA zhiQ^e{f13F)mv=psXk#-PqwH@0fXuX76lBcA6gVpcSWSB=F04mJq86VXTRKItxR-< zA%UNL)N4pp!JcZzy)0=!WVBfdcvY4H?#NQWWR?O(vJ|jAO97V~#7|JbT7&or3Rq>( zLO}s5Z3@VL#br~#gSgM4fUjmL;48S_pn&hGLwq(LL}```nm$c4Ei`?VhV3gRZkPugJb4I)~qAa!Ll)Lo#lhmppSWyK>(TgTI82$ArsmhBfAU7 zw118felT`Un$N^=6-e@p^6I3fQLoB6>HZ}P=}!f&6I_Lr`ijt^ZevvM?O6(l^V z-}8LuJLmtM@BHu0i+_LgNdV(%whNcwJ}0&mLdK6A_!lRxb>cb)e(c2cF5HiwII-1< z?>ljW3lHEy2Oe^vSj>1>{B}FBSNuNW#J`H)9w+uWvEPLQc+`c*@VE<4;7K9-DJOpF z!qa%hiDwJ&Z+OndkLSg}7o7N60e+4bUHo{y0L$;+0+b(|aV(;KxG3P(T zgZmCS@t;my;lz7RykCId;sYW6L!sX9#N#9J_`T5WWAXSzJpSOoVHalNpo;;%`publ@u& z{u^IA@QnlC5~O&tjo@uerrN4H;_>?M`r78sXd)er z#yZ;xgN8M(46g}Sb){qRs@dU=$;0#Nyr+(ED%{SBl^oUO&)vrQ4s$DK=MJ5sSL5MC zTUAp!6-%^DwzSM`UKx#~C!fnY7Bt1$65(`Lift6nQ>~9e@;1=NS-j2WXk$3d>sI8g zn`4s3SZA8`^t41DDftLDer zqtmn{E)e!)h^*+0^Q?M?$%@XFwE`5HE38&xL8~Gg+Jr=REFEoc$*iWNqMcpwG@)#5 zj_?K^#l9-FIKa@kU}f{#mKE{V4cuL1PBMlU#ChvRxv)7}yEeSu>`AX^Z8K&SMB?Gj z&W1#5lEDy(N0O@=5@K8R;dGc=vRF0d%FQkDbp(4yGL~RX-6n2%Jlk36V)!<+5M26J zgqnoHNIV%a z!P&`iqlE$CCI>lL_#jazFgnr<9XGkCkig5@F20n#>1N?Y4k~t236(m?<0dbaxv89d zd>+LF2l?F;pdeRMtK;h&q`Ije^>@<%Dsjpz&qo$00_G}KLJ(J(^&$;-6FdEqxr@DUpBpb=tUBi%HLDjhW1 zO;t2Tw2XDrI2z`l@3?6^o$a7%H%*|4qGuA@K&Z(vYgLqyS8N=@*|9`dI?Bh-DSGE~ z_;*l^n$!n24iRRX5I-3%^d4FgI-vL3x@PleLUN$Oo z{JG+w^W8K<+(1ozUbpYbgM((eX%;mS23Vv=k|`teF!Bt-OiOq6Hn1cy<_(a^T#g$t z_zKHE?F>H-MTDV77}hRIBY7}lthGs8jUu+Cs@kH7Xeu19TEIyT-!KWzgU0D;$ccp+ z=?dX=vA4ElvMnC1;$nL;!9VdhXD(GDTJb4xC!%X>Q>pNJ{U!?xvj+Z52j4MDxTAx! zIzr_McA_tCL^+m%{(LAxq@p1pSdkf2cwxS zC3ST1t|nS{Wgx|}YH!%_WYO2a*)pg19PihJ<6Y6YtpxwD2CLnT5xnjgq5aXhdo$;7dp7R zsxEgpOYjvBSqd5kQG)5q~n3tO}q3k9IGb(jVW>&-iLE25EA(~|3S*Es5Cgz9F6 zc+v>#CM_}7K#XM;uX?Ogcx)UyIb%1J8{L~)wUJ1&E0JbKw}6SSq1^0-ISb~8n)o#I zs@&0YS;gENMhmkV8boMeWQ$}}+>TiybpEhC$kl#a0_1#p3p_}Lv!jw^~>ij49(LcL~*EgUgKg*Ly_6H z{DQ{XIUJhmLyfhIm(QQOT#GAaFL&rOkM8h_iTR_8YMW*)pFVfq^2Si@Lf(iov@ldR zzhN$~P^dL6*TnHD$bStYl0}Uo@&U{SQNuBomgC1`KJ;pZ_1smG~`{ zGSXX^sW?V@-IOIFQ|6EPJVf<3>)S!>2W~%2|T~q3E0W&NEDy;HQrb}qZ4AA{PQ}g>Q)9?8(8KD;SpiwwogUe3ZDE7j@*-5L_(%yhz z={yb)W}9xTDfjv{5bPkvy;`pOd^eQ{ys>w(%Ve?RH?ZS3uwxmNkDY*3LOynajFy1F zPQb)Ypru;%1x@UzIoJv0V<({c7(155bFkxM>;$sd@p*HwE4dYV@HJxGk#L=+6%s(L{thUagfe(uoNqi?pgWoD49}NLUgI}P*Z=%89QXTXKOf&>@ z(BRKUgI@qPs0Mq1M35oD!_06J%!NeI3W=Zv5F!5D`#F_phUHDVYRV>sXOBXJcfaVkMRt{pl zd^R@7Q?OC4!)5YJTrRg_lbpt8`9^$Cz6)2$58!I~FK^LIcxW5jO!q+t`#`rS_Zk)zy}CuWu|;+JbilL^k2CDU;|%-oIL!ij z;;iqxBeU<0%)YnrzV-cVBKZ@ftL6z%p^WcoGjd^)X0YWK%>l| z295Gq(~$gB$!qP*rb^}3=KmMTk5?_v&?vv^=_T*+?l(x{ada@0GG8fqDtVM+h@G%61!T7G;{4LjW+Pg_;qi$7bcO2V1K9`BXEL?w6BE2Sp}bZsFuX)z4tEES|%w{0ydG zHi`D zq~rvP?`Cl2V~hxvw1fCPiOMfF#Osyaq-O9~Vzqh}7x{eKqEJ3A0#*t6xHtvAZ4ENa zru)^Xs@e-U)Lhc7=7K}Dft4A}eC$${zDbDJiW`^}FGpy&BKfS;V>*vg{ ze!&dum&~wU;>`4A&MRNx{OL7Lo!(%E^(Hf{Uo*q{4Ku8_m|?xm4C`GS#v%Tjx%bG0 z_o)KEr7Cs|w@LWI=E7fW9(-x5 z#8p?wQeG^-9R?m4w7uU$zgk*oVHiVWjjQLwlBynfr_LuDwZm! zL>fyTX$EC7fQa|Yv>Ms)wkV|NwJc$?o!Y0F0RD)^xmAeh56;SRqn3l?Z`C6CEUbs?Y zTBYoZb-HBs$Wl!MFZ-ol)2f`kQ;D6dsZS)1Cez}Q!L%Iq4Ac55!?X@(nAV{T(|S$g zSAuChr|~PnwDxQ4OE9gy8K$*0!?d>GE`w<;$uO-25W6bEVPy#J!9Vfe@`}#~f^+FU z?ckE`s}7jHVvb~ZqXT}!w%lvjR`lw&-Nv@nE!6?jQasME6pu43#p5(v7@SM9fX=yu z1$53OETD5Pu```>3EfT3_14L9t{=nGR}!J~E`xOSnR*zrj>)=8`n+_8b`62r=Sdmf zrPDoTU(6e`#AgjoYW*zn`n2!VFSGkB_sc4<@uU>6P%r+IEdBEp-v~1Q3(PXV+l;h) zwwXOD%Qoil&98m38Ek&C;gQGqVl$^Q^I8yo=5^q!#78SpL8~x=;{3ucp?!55p)YG5 zT+Gs5Rq$6{ejO-Y9ohJ^;0W#2k)$1^LHx>q)#Op)OPoGRfLkB6jeGf(0l)sBZ_%Lp z&9Yzq6Rl(Kcfn%bMTTGf@9ejW_q&GoyO#I6j`zFaIQta=!`#X7_bZO3IjWEQb>iO4 im(vQKEdD9*F58dgd$B}(Jtbtno|ba$pSjJ3J^uq6_S8E7 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class index f04e9ab3cb3e170c7a84c66eb7e23e365052e004..6b6ab9a9abe9c1958233f1cd853bdfa5b9d878ef 100644 GIT binary patch literal 6811 zcmb7I349z?9sXXj+1cGpo1;zJZJ;gCLfWKF=@DpBDru6oX_J5?ZJ``xvO7sO+02C9 z*|Y&skxM}?MWscQf>IUas2UPPsHlJx5j?>IPZYE&9>^iIes5-WcQ!{U{iQSS{onh4 z@BjYC_ulMNhaP$azzQ)hg!kbC0i0V16_+abU;yWb@F9FSfC~cH9>Qh#NFjW6{+`&t0W5WbFYNQ7bec+h`(8+G|l_I3qe1u=rr5Fgh`t8WP4A-Tdg z<>O%m-%{|1f=31Xt7AsYS|gBOv2crkufdG!0!1w`LvKs#-UjMK)kv>*|*M2 zwCLKP-tNeoDXtSJ(Xu0JhdN^YG+<=ees06n5&?4qZ1KGm2w| zr6-blL~1)CUuQJFlOPheV`zZ3u9(Cjx{>NnR@Y}d)a+_BQBE7DM&epB*=}hG%RyFc zL6Z@6x*{e}FrX#0et~IPr(q`gwRl6^jPx}dEwQ8}Q0%c@N(k!fOD22y>UCZh4<(}l zv&^opq;7cvP;Zz78=|B7r5k4ChMT)`L%!0p0v)z`ystfyGdg?esJb;YW4%XDTIMRI zqj{7#5@`w@6zSvIwncU-U&(q_u%E>$5NwZi8=93$Fb?rCIdhb&jLEE{)DoDUleQbQ zcvquFkCu+HqHf_ffm6o_k8%;I8qQg!(amHx7cIM3in`21w{F?F;beyIqTXbL&a;L( zBSy5dH{R3P%hEkQuJw0DwfU1m&R-@le~hi^(z7e9nf1`ECm0w(kH0(K$wxD3sX(aR zOeG@vx|n32a!;musA7q%RTcGEtK!>uj1`nEUb$@r-%;^hd{4pSDxScTD!z}WRQwRnDtJ!CkMLs^KfzB`{0v)E{2b3KctOQ4@JkiH z!mky)sNy&Ht%~2__bUD%hySSJCHzUnpYfD}msPxizo_^t4l4MY9QnJ7f8bRW|HQvo z;cHFPN?HkRpjEee%xJR6kAD~AdA|Nr3`50h_^*Q3RlI>W6}+Y5e|THPJ2=D%hl}x8 zk)IeCRD}?EipW=mPZX%aFBC-tR1uVRza&DcC={w9rl?}7D56_k3T%xTDN9ePq8JBM zQG!mc{GpNgln-EG_#37#561|W)Ps<>&1p1Ezz!Dl+t-2u!*m7;t)D@=B_Kb zOrD86RO?$>ws$nQHVG`AB-JL=q%Zv3$0nWpJ3Z|#PsBMMYHe{5ewwJs z-IsZdPp1G$ch2NNB7I1=F-9A-WRFcIW$7ht$GT#!nLm(Xnx(nln^WUYO|P3>Lj>$x zac^2~uGmX7YL+hJ$Ga1^y_ON=jm0fjfs?$Oazo}>FdbLs%rt6CM$f(B)Et$*=Y*#d z>SPM$Yf;`dO0xClo)!YipcYT*XLL<$oOkcp111nNtSwSaV9AlPs6G-gQ-;Nh-)7!z zokUVvo7*;bG_?yXJz^e>*Jap>q*roojq58K$2+k3y&^AU=6T4d(M;KQ?XrqSuLB%0 z%?Kv+esfT-k2B0+HzaoS8yvdejnpnNf6_|m@{(AdlZK8|UWqwa7ZRmnS_o^zbkYV% zoq0JgXL?u4urImQXD0M$EW!k%2{W^&W)2)Hs4Es{-UzJnS~dZQyEWVJ91OyjkAru& zW+qr-e#>+Sa88b)E=Xo3aTJ$88EvmM<7Rr@?ADlcNtt}i;ALAI7?5}3xjE})_O#CR z5Eq=DHN3&>mv?ka(r1uq$__J8V5QfR@fcpWWFZLcPnro!XBnOB1@KJqYL0cNC%c^e zky0(Q-To?icXrQYUSZTuO}F@XyfASqxVH&D`W!lL=+Ps6Yt5Z*@ilB{YS`37rA0?9 z5wDiqxs&f~kVcsGikPX2S>hNKL-MAxQ$A7{}xHrNLrT`VJH~H z!v1Ve5p#&zVw!y^e(b2t29NOu`SGPQ&7OAsY}2!g=UlcnXht-yC+9ngb>kVpBgs*e zpM~D(M?dH+d1PI07Q4s|T0Gv)57IhC%oSKL&Oa0Fhlkve=ixZ4;jbtHr}K9Pg>PQG z`D|dXns32(!J-Et9$+I6jePoT;dC^ytvVC14(r(y*nnovqH_MND8Mv|ZmTTK8%2H| z_QTg&Sz2JXN8oR(ELGC&T3=;pAk!%rL9o`JU!#;MRig+A+#!}%m2q;R1W`+;WM&4u z;;FWHKZwL5N{2CRH%h_<`!IbNW$f+3@IK542Zu3pH|`$6 ztXeg!mKH1?MK~W@*;K+lw;c)>j$n4plrS4%bp+)#Q_H55O}(A!{`9J&I3^EU_d-hx zuMQVU$ml*CH-h6=m3XJ0Fsoz)^Br5RP{iItPgaHf zqgcT8q}fVXDb1rRZL^iq6XlrGzMnz!*+Ct|v22GK&~nUTdjaNR8IH#(IDvtlkMk%= z;zV47lduOB{M=f|kFP~|8kPJUs^T}#VjRR0yw0pSgr)qBSSBj4Tr}}#x~*6#Oq?K6 zs1+YXowyvU#q~H%>}KZ4B-)Q@oVy+yu?a=gScDd|qL_NK(1tTm!d33XnRq{~JBZ71 z7DuOWrJZPJYbwqY)6hX({(y$Ju^C$sq@6EeD`g>C`wY%ztB|YL;T&oxGA-Sdm91?= zCSi!1a4z?mhgsrEoKKB>ED$?!0b4%qrVrcMD!?hC3m0;ppZk~%jk*dtxr-GXbL@=J zP6s!V!Hp8v(Trv^Bh=KXIe>!0s6{|Qmx68uJqlv!zaAFgVO$1v;z4^_uQM5Rd`muvb}a8xXWj zx~htVc$&*Jfp8$pGyyVAnjiyNrnwk%m@&=FnT-tmCgxcSv!)F_tniyz+k05c_p*i` zX8j&u<-W|CJ&bMQIGjtCI8U64tzr$fi;d94Ip`FFh=}VD7570GkD^OF$qG2YvFFey zUO-&Dh<@=34DlLFJCASSZ~HHEt&7M6K_aiRxg&(f$tRK>0z};Gj1qT^Gb%c8sWU2b zI9&s5rMcsv%N-TsStQ5~`REZh+C1UI%_2%>YGvK+A*Wf~vmf`;e#s{a?Q>WpkYN$I zf>TMVkhqdN9NcIIHwvGt86odU7HLJ{A?&c(g9OsEjV!PnK@V+6sc@)*r1B13%FdgZ zK|&~e8$pqglzS+mI3#alEM<8iSVcqRg`j9rPKL?Ydanj8wx1nND8ddhBnZQsoeQ(h zg(*qHJPyUT7rt@Cv&jQg;sDuOEkIt;>4KQNGERocx}Okp;}J3G-;3?tTq4T(4nc^p gI9AN&$+(C8c^tok|L?>X@I|+EkK6hxv-ZCK1I@<IUJ4cjRPc=td@BgPMFD~M-!A*IHLk8dK9EWXbz(neIaZNVN)1s^j9DNLpG*@fe_Y& zur`eIVTF-_U5+dU!)$hiu^U5S?7;<6_MNi1FpPKM-BR^?LTHgQ7e#3H(h7V4mxXaT zu8_SCMj&u$1SPnp0w2almSm?^_{#Ut)&S~I$1?Y5ONx~VtNnN05%5GnpN3zQ9Lmewy%TdY~&NUhT_ zt$r;XPn(IpW}_vQu?4Dpa&ks$?8{_&`RR2(dxkPefmvo(S4Ove$7?i9DjQ;y`?Udq z8O6aI8ps87xz7U6xN7ntd^1}*d-a6fu$pe1;oB!Y^ET#Ub(ngjrX$*IEzw8Y&J{a} zGC&+C7-oFiQ{9GUXDwbwdct)arilrcc9^>arWa+z1})vyq%oY430^cT+##@H!sKBZ zkz1ohW}32=W~WTU&8UFw= zQUxCCr}&wIXI1vA zL(!?*yL8=XO&M8R&nWnd6#c7;zhS?MzvFs_MvVV%Sxl3}n73kKf3L~3NFLg=y&6VZJ zdagWFw`q2#^%%STrom4-P0EYO1SG;#L*LbCS=x|`!R1FxC0Qk@c%< znx}NWIL3}Whd<>ZXe`W7Y&R|WVof-N=doXD{t%&rY1mrIpn}={D8_pemX@6z&8_PM79S+lrrgO`1bL24I=ORtE?mAF=eiSi z?=APj?u4O9vvv1A6>4xPak2kM#bJ|lCNJ@6p((z`dWR{n(9`P3 zC3-B=Fk^A&Q>;&3W~r9sgIn$QBbT70^Kwh?HwX2`G_x@3$vB6JyNN_@cY;4h27l^Q zBZ0}wXQpk?GCdqgYyLd*rg^&3fh@t2dwu-KnEYt_lf`qGSCg?VT^1y>i!8XavWnqi zLm2e_rQfXUfPM_uv&=gAi zhc41V^|K3%?=5)|HZ4XkXqzrV=M*_QQIdKT58(nQ`MsGWIYsznNd6_8ms!|p0|Tk(9MULN@P!#-gcUCS?qoeIzcYbYqdBb!iD^ z1aqmPzc5l*ks;V(ntfUFf!b{Fxr?W@Oh%{EPx>A7^tt8A2F*yO^~?fyV}p+s+>7dozcNr83FQZ6qbOe)EUj0nmAWy61#ZSgb=4HEkV@3Z5qZgw zfBG%?>GEhM49j;_bj#iKYf8e%ho={MrIXuvn#%cWpWE3143F=riw4IqgTqnGT&YBrNC_RARf_HGM&+8@zmvxeI3d~y`6q;#3{MoZFdN6? z7%as+#&$l|;aHr5VW8}~4%)O{AtcGHGl2=+K%dMn#fU&1YOA~C~V&7ZZzJFE29 zO-4B*{dKkPVDIg@q%6IIC#qnczU)s*-sMpO_wt$;k)um6iettw$4S`DxwW~I*IILH z^S~|h$8c=X)>fIt%!8waL^A3 zWk2dhus9kV!IJB74eb&Xfn`^xVgce1h0{j;I;OCNUo^q6V#E1vZG)XcHT8rZ^kzVh|nTN^BK(V4HXl z+r?uzOFY4~r*V#W2Iq=rah`Y{JH<chf3;fBdVK-<8e}^M0A+w-0dJbM2%bB zRq9>su8Iy^=&s5f&S8K(5AWhd5AQYNDV$5sOVJ~)cCa15wIYf0XsrzU#CGhYwIFV% z|B?d~`sX4)cfVXoCc}a3WD=OZ=E(iOBf5#3nj#E(X zV+1)XTpDmFVTT;Nf*B-)iq}vsUWYd`+eZ;qVObLp%JNw{jgH7?sd7GiI{hj8_O0A52SPyhe` diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class index 679301b6b9cd6d6aef74412894976ec5f33b57e0..b8588de61b8b38c14dcf0ac56c92a6292f27e034 100644 GIT binary patch literal 6887 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 Ac>n+a literal 6024 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 VjB>~4KOkvtP5x9#bi4Db{skmBO6dRq diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class index c11a91d3a79659cbeec426ef4a11d3c796d87dbc..b9306cda7d145dddd3cc4d333f49fb28d91cd1a8 100644 GIT binary patch delta 9439 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 delta 9192 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 EC*v}6K>z>% diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class index 97b1f7a98955cbdd480a29e4528f85e93ee7c290..193c60350ac51607f07622ed5bd0580487e464d6 100644 GIT binary patch delta 481 zcmX|-O;1x%5Qd+7d!grEj)g!1AyPyw6f08HictAd(8L8Xd|4F)Zd*afjnNdaVZ)ll zO~caPfC+(^-~t5^5mqMt1Ac=pfw^6HPR{$zyfbrV&iPb+78*M`{jvijNZW+D?L)$c zJ3h2K)N@zSQAQ`pAot2pbU6~~R`e)(6@51MdEf~2D+Uw~6^~TmakwhTP>^ARnkCnZ z%*?%Uy^)O%)uuP18D&fpp;2>*2F+!zXs-Iu#8U$+oyq5eq%_ZXZg64VU2@}#3v*t4 z(0%KRFEry!7?h?nxokc!6|b_nj9-}br0}I?k}1tJ?pi1?W!nqyyxG^@%<^U-kTQG2 z@+7b-D*WakEd7ftBNSOClMF*n6H(!2aVD`S5#`@nwDiwPYzwRM;x@L)XPi{5vaYDq z{Z}?5)#RFBl91pIwS1LN{>Bq_nP-ppd}oz?KJtTg4kY@ML)pLi#R*6J<(QaMR?9uo imh0RQ_N@rfMwu!=tGFg{+Jr4`a*GzR9EpX6Wt{_gno)rO delta 573 zcmX|;NpI6o6oo%KZgS(k(khEeAf`Zo5{6JHGqlW5+EV5)gA+GRQ%isxij_@PELeBR zZvd$RA;E$f3I!HOtoRN5hL-D8!j{ju@7!~q?t5NX@~pEtH~;z#&_^vzmfbPziD7RH z`&`zrUpUatLHbh+v?CmHwR2cFA{-Ttr8&+CSK*{^N*EMQ3q!)NFe020MuoG&IpMr; zLAWSf5-tlx;YzB5t0}HoWTw0z7tTEDwwu=tH@Io&VWVL!Im0^E8#cs{=az+2Do0U@ z+lD)M79BNj$}2pmPXvV#?_MmH3}t+aWT_nbQKX46KP<;VKhWTqp~ASK%7l9S`eYc^ zw7E#h>1B!GoD)`j%~`!_X!w3qX;`G|_k;0jP-%o}_M__ayNRMbkkuOkr>iR-6_j<_ z7VE$*)^n)C(l5^@<;}X7#Gy@xc=q>&j+_Zmox7C%f3Dm8-q1vOfO+OHyN8 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class index c0d4b819cba6d14a2cd030344f04bb69ad2cf2ea..8f942b10ba6e67b3830c5f5747ccc6459166c73d 100644 GIT binary patch delta 514 zcmX|;%TE(g7{z}x9osv@6$uL?fvR9BSd;>S4@ALdVxlp;}<{}`niEzQ1lD!YtJI);-F@TVNHTY%@K}j>S@p%3n9rJ11pm)m12x& zMj12MpLZABbg?k!r*F9r!{WH+E)xdPOg8XJC7H;1K{g!pd>Ne7OmR;$jVl_jFdqbY zY5t?=N^Rt(Z5JN-_h&Lk|H_(3O^yq8Qz`g?8a~P|eBw5r$@7KBeB~)y zJm(v$eCI7c*x)Dc_$A8U?66HrCJ)LvaxE>K6b_>VO^xCzLaU@EY1)J>+UekgM2__0 H!m|DXP`zDu delta 547 zcmX|;NpBND5QV=PPvY{pA(0PAL2L%InZ*Rc4hd@r30VkBSOQ_8L*1VVxXToE@UP8_&E2>bE}5^9V@OZ{HetFF@P?&XzpZL_bJp1%OPC?`mBFoHu7 z9FE|K%SMh0$C4bUJ5Em$;e@M|lfo(Cv~VWDS$bWCb3&hRUg#GFgbTu;FeD5MBf>>t zRJbHu7On_ag)!k;d^OkO+^|T^ctNI;FBSY+P#7&#YC(0r5wrVl8pgS0*v59lCNhT2 zY%y$&Aj@qFXEGm#aV89R@GMr8y%{f8t4;^GLGNB9P8#y~jrVp(vS27OWhgP-uwxS$ zr&9Do3#-$jweI_2v2Ky5-VdfqL9t%Z*?w4hT#k*~J!yRhaN64=51_0znygNmtOoUj zr8~zm4k|H{1f*z8j5rcLn! z9emU;T40z@lv(5fpLxg^9`ThqzVVXpyy6FM_{lqdY4)2X{;*rSSLrPE&_#|;4K$2i aQ!U2WtC`I{9j%vRKL^;Ok*l?|vaY{)(P8BP diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class index 369305d95aede6c7d43ad577b2fef072c3adb1d8..63de041185100712211a1c3ad29e9f6e59f2b777 100644 GIT binary patch delta 5512 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 Nm;DkxgEKhue*kqczn%a9 delta 5468 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 V6o15@aKFi2!|Pb(G4=BD}{yuNVKx6z3T@AMXvu z`*4Af`!!r>Ks-L6W29)Zm3Vwm$3+G%#wFtWAssG=@L>&?8jy_33|x+nXlNSHMRvCc z9~JVLkjI6r5b}hMD`k9Av{o_a#iuk}Z9o>52w5X!t&nxH@2539?v%&!Qk)UhfUG^`f8J{@1xaf^X9SZiRN z7wg@)6&nmD+eE2RrrU+=&~T>#g}6(|Yi@iU-!PbL6K=PVH-)?GRaI-b;VfR5klcuL39I)10)84a5Z{1<-j0mPp@K=`vb z`9;J3==iISzZv*Do)xlANAEcu&+B+W$BQ~%Vpjy56+)fJAO|_w5V>>;a+5~7K^lio zZZZsV3#U=AOqFmU!i5UgLbx#D!iDn)7a?4vPEk^m>vW11VM~r~yf86BVl|30s1>!= zsErhViAHS=@JV6#C|;v>2Gq!;Mkej0h)aC=j=|2zIIed-C>)Ntc z3U0Q8J}yl&Yu;r78Fk z4kJWdRvS2bcG2yY1xlw34pdQBS=5cXBebyeywi(Hr)1<$FDfrr)Ps5|>P4A~vZ%YF zY|3mlXK4+dJGo?L#k8_g1+T*!ih5IyqCV7Dqkf9|Q?8-`G*F{FMfo&HqYjD&i?^%9 zo3gx>mQ-Yn9bKSk2yd5$QX0mBYwWdGrDbb0Own)}q0oa7iVA3?**3Cm=qS3H^Pu1? zU4sy9hPtD>Df%0YRy2mLRWz2aQ#6jQmuVqFQ2Jy$kntj)AkJ@~8_ngBtvxr!>q#`(+z~lk-%Z7eN+`(;kLuvvO*bo=LQ@eiUC}hry9M6V=vGD3X@;Uwx=~RX z%|y`4r%fp>E~+Sz`7AL!n-{h7Kd9jBYQ%U}&}|ycQS=X*tI_R>?w~sr-6eMKrh625 zW%^Iz+KUu)%-a&e(iQBcc|zuEbg!cOu!o`rLhcu`5PN9!fT9O!k)p-4#QZTTZd^7! zr08K1{5E zc0O0!K)3!5z02<|de1kiLpO4~LhqaNJ9Xjl17B6AM;%cgD*A|yDxAou;!PYn-heln z5*1Gx!{|htsft-x@B6lQc2smi}Rl+(N98`-L^~G37A= z5V*}SeT!!Ud1PF{l~M~>#f$^?Fb%SVaj=(pWh=lw*w3>Aw#3VWi$w={bi*My3}o3G z&jyHPVbwq>)!?WB=T10NkXp$y+q7Xl?*yTcXqk_;_2F%Jhjl`E_Ab1~F8z-DlJ{Bi z0Y4}Bko|oG-jA7;0RG@GNE~9)pB<*Np^U$Dc;rtGj|Lom!rZ6une7jk@~8orEzVWWhFS!iHVquAut6qu{VZ71YU*1c(l=24=pZ1Jh&_n6vx@5;e7xXpr3{Y&n`e4 z4VSa*0%T|?Se=K?=)MFaAmqQ+*y^^ft%$=}fuX~Y-@)z2RQn%mL?yIY!FgH1mJj6& zG4e;duCm*o@;Vkb^3z3o_Hxn*>9|H_k`N=plM*0M5*EijA|%|{x; zd34J=m96sO!6w#G`~-G4V4Qh(_x(j7{`6f3+Iiq>Q5;<2&f>PfYhpiK&Ma-ke;fsu zHD@#K668Se|I`p=f2z(x=vfYbkNH9myVP%B_^Kepf;ku#K~D>20|vnz7>QB*l(*$a zg*l971f)~#_M;-4Amw228?Ys>a6$^K!Wg+l1iFWYM^&&l&c;J2)Ln`p}kIYl2hImvaW; z55+umI|suOezO9M$-FvnmWS~*Af7kwgi(xGJFXrVtb@JSUMhfVU>YW{jL$O8!VWCs zA9Ee80&wCC>;y-6r_u_oHYv|Akzuf&VP}43hn37>rEt|+P2J&)VdKGU>Ud~xR|94j zwyA~jIT~|jSWcqZF{?w{?7|p#ElkMKV%&*k@~;kxSFC{y(T;JOJF_~O+p;6f)mibp zs4;7bMU%{t*~#s)3!```+lz89Of0jAy|}9^j&hqjvJ!c5t5kujBLrWBZVnBz`OkG8 zN*v*5fzH9;$a63{@;rafoaKYJ$E4m1EzqPY#=-U21=BdB`(Xm6GeBGmcpNiWCIB7B zt_&5wWti*chwnIc#~uu`1HZzatmopR`w{lSOg?-q@gQa~r?bW0%^=YsKSq_!80lAl zH0-YcO7H{Ju1}1)G^e|Ru{G!Qi8VjV$qn$?eUjV!B}g443-|QNN)~hy{(#Q)7CPCC z&0xl+z>m%6eHPxjm$hwdM)OPa3SNTO)qG6JK-ZRg^ApT4FjTi1Q8~abTk|=$2 z2IgU3PLl=?V|(n!oX!DF#{OK<+;DIU=KAY>3l3n8k2cE&TJJ95@>u484)_S>bBgVT zCuhL6anx^PASSZRJ_Ca|y@Ne?mBhfte&FTeD8sDEorjxEcV4D@UOmhu*Z`&G(7fz1 z^Zm25lsXul#{X(y%qoaaWiHlfPgg^jBhyt4vpn}&%2BROjD`J%3kT;#m~Z2N{m;RG zWQG6-=6Vybl5PXF3GE2h9`>$kpHE-q`{F{F>X5=7`w`o+W zXK`9RT<3sssh%Zu@K6mr+&o?CS=P)h_dL?fnsxA~wB5%X-J3;^H;bHpQ3@w#g&p4$ zJW_(jN2g!cR)uk?t~271v&T{jKtUB@Aw8+#h_(ZHot2!!uWk*W2RsYIyca@pHDgWi>o+ ziM`^}sD=$9_g}u{6o){Nyw;&9ntu`2RX>L>#(;ac0QN!{?t?ho51sJTeWE|AHn2zDyP zv(f*GeL-rFy9QIfn(!9v+Oxkl6kiLD@K=N(A5nj{@#6ny!)rMU7~#(`zmdDRV&qv~ zHM}H9c{ce?B|HhK)v)=GGDh^}|CX%;&A9=b4rv4q>*5~-j=qioXoX^Z-QZj=zjSW5 z;IZS$v$w*Rw4%VL*F>vQ0J1!%>!8vHvl^hPuokL)Kn>ty?$sLD;sZwm)bOOX2I_ne z)ByE7+3JIqQvJ5iXnxxP#Bzge1s-V4x9&FP+98^kzc2k!r?Q4b9Uno*UECcC9T9Y5 zOrbM^z8O;KSI=5X#uX g5Xacckj~h~P{7#EP|4WA(8Sou(9PI2*@xK-08Q2qQ~&?~ delta 77 zcmV~$sS-e70EN--4l{yLRaI34&8VuXs*-*EEk*Pq9??0*G0x{&X@jj6PaVE`0u6*3 ei8PUDCeuQ$l|mb(b}AWa9rQXex_ETIxfTCJ0uT@Y diff --git a/target/test-classes/Test$12.class b/target/test-classes/Test$12.class index 7f00bf301b61ed296e0f19f1f5f4c77d9fadb909..d4781448773b4a700ecb2a7407e2fc29d0261a53 100644 GIT binary patch delta 77 zcmV~$sS-e70EN--4l{yLRaI34&8VuXs;c@|`@X$|M|6&HjPtox+G4B2Q;)BKKqH|h eBF!XP$h4AcqtH&NgGwj0E*jk!J+yk)+=_p9n-O&Y delta 77 zcmV~$sS-e70EN-}4KspKRaI34&8VuXs;c@I`@X$~M|6&HjPtox+RCPrM=zg20i!}D eMa)WAl(8yjQ^Bs1LlviLE;ZaTJQ{h=+=_o~#}P3A diff --git a/target/test-classes/Test$13.class b/target/test-classes/Test$13.class index fc0363fc232917a8424d7c1ad733c12df7a179fb..01a734fd057f855aa4d149171a2d589cfdf47b88 100644 GIT binary patch delta 77 zcmV-T0J8sr2Z9H%3j;x%00aS@01W}202TqC03QLM04M>W05Jig06GDq07C(!089a; j0965|0A2y70A~TH0B`}R0C@qb0D=Ll0E+>vlS~6PpS05Jic06GDm07C(w089a) j0965^0A2y30A~TD0B`}N0C@qX0D=Lh0E+>rlS~6Pmy8lp diff --git a/target/test-classes/Test$2.class b/target/test-classes/Test$2.class index db1928dd6649ba4f39218968ddb672ba53bfb2b0..4558d8ea9920643dddc9ad55c9b188a193da3ae7 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7$1{Ovg23|&81~EoG26;w(1`S4o$;?b<0Cy$@fdBvi delta 33 ocmdnVvXf=QJ4R7;1{OvQ23|%@1~Eo026;wp1`S4?$;?b<0Cm0vX#fBK diff --git a/target/test-classes/Test$3.class b/target/test-classes/Test$3.class index 36340317bae2f842fb0d760f7c92f9b37b5ada43..0782d7942bfc1af38a0faaf87dc1bae4d1138170 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7M1{Ovm23|&E1~Enx26;wP1`S5D$;?b<0C_?Mr2qf` delta 33 ocmdnVvXf=QJ4R7m1{Ov=23|&e1~Enh26;w91`S4|$;?b<0C(C2jQ{`u diff --git a/target/test-classes/Test$4.class b/target/test-classes/Test$4.class index 66b14969b4f8ad89bdcfcc925c4917eb434b44de..5057d55e71eb6385bf6d82aa558eabcaee79ece9 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7+1{OvO23|%>1~En}26;wn1`S4=$;?b<0DE2q$p8QV delta 33 ocmdnVvXf=QJ4R7s1{OvW23|%}1~Eo626;wv1`S4w$;?b<0D1NWu>b%7 diff --git a/target/test-classes/Test$5.class b/target/test-classes/Test$5.class index 48401f10bc50fdbf0ad93db23e565fe704c09ed9..85bd6ca783884c9fa39d33f6e8c8427bf0176870 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7k1{Ov;23|&c1~Enl26;wD1`S51$;?b<0DXD|?EnA( delta 33 ocmdnVvXf=QJ4R7U1{Ovu23|&M1~En(26;wX1`S5L$;?b<0DKY!)c^nh diff --git a/target/test-classes/Test$6.class b/target/test-classes/Test$6.class index 90f1c1171792559dc80aeae532b85106a2ece569..74aab46fc92d31ff1ca883cb1a71dd9e7d649a07 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7w1{Ova23|&21~EoA26;wz1`S4!$;?b<0DqPS5dZ)H delta 33 ocmdnVvXf=QJ4R7^1{OvK23|%-1~En_26;wj1`S4+$;?b<0Ddk7`2YX_ diff --git a/target/test-classes/Test$7.class b/target/test-classes/Test$7.class index 7cff7c2966060ce5f21a37e59887ef652b7e067f..ea3ec6c48aa1c99162c5686a9c897530f7d7c145 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7Y1{Ovy23|&Q1~En-26;wb1`S5P$;?b<0D-awH2?qr delta 33 ocmdnVvXf=QJ4R7g1{Ov)23|&Y1~Ent26;wL1`S59$;?b<0Dwvc9RL6T diff --git a/target/test-classes/Test$8.class b/target/test-classes/Test$8.class index f4ed027d87475df05e8a461387b9aa1ef5cb0b66..d5e77b92120d2b6671dcd7a75745bc96e352d3b6 100644 GIT binary patch delta 33 ocmdnVvXf=QJ4R7|1{THu242QM1~JAU26@I{1`WoL$;?b<0E5m3SpWb4 delta 33 ocmdnVvXf=QJ4R7&1{Ovi23|&A1~EoI26;w*1`Wo5$;?b<0D@))K>z>% diff --git a/target/test-classes/Test$9.class b/target/test-classes/Test$9.class index fd531bc4dd14a5f4b59581e37dbb1fb88d814e88..ecc32d457693e6f65784535b66450409a70b996c 100644 GIT binary patch delta 77 zcmZo%ifasP!?k{V3?Dc6v0cGW7)ate zKR$`;4Ssyez^CyU12^EaI&L%&L?VEB_?(WL3}hprV~2rUML%y~qM~0gP@w1+4HP2D z%*_TSE5S|!Q&ZNvayX@14cvyW1n^bdu49jmuNf#;YF{^Sk)n4P2rK#x1C@&IH84y4 zfID%Q5BmZr!#92SmJj=VxZ8(&e7M)ZeK?QoL5e$0pC%4XQW35@6% z)p1hh(e3qGJeIHtp_a|&RT(QSkgeqZ|UzcLhko|_jzVt%O}35%?L-%Alul?sND#-{+$Kemh|gngdbGzN)`FF~N&pgz!9* z7eW{icoFAx{8HdocuB|00_*XLywS6G(yIc$#%~Bl?d;mR>PVzIQY-LV{7$~?S>CGS zHG$vb4d@wgmo;=XLx;;Gg)H zyu&+1KIvmeg_rLL$JP;_A+YQ~L#{2D~`}{FllI>i^`Mp8Vx0>-Gt96s=tEP(o z(>==mKOD^Fx)P?#gZ})2<%3pttc&kY<+&*qx2-|K+^{_C&#N0hOM7#Mh-+_|y)|tP zQC4=pnkzzaxS~Zq;V;Tzp)b~Fx2tpr?r=quygslh^p3!P$tBRQx@0r9$d>~3F4E*A z@tlV|YWg;a0(nSyWo}kI>GHCy%47&1=8YnF^Z^ep#br$WXu{J>b=Cd0h2O94-AM!8(i%?9tPMG|ZD>S2pbu?aX z$tad_q*jJ12PKMPIdgt|1S`@xT*I!ttWi`s0)Lc~@Gm<8V^;Mr0&}!{Z3N-~pSqmz zDlmwXpaK|Fh&(ECLf1QK6`>6)S(klb6?2qi@kF$vgUt1Oltnq0Wz}OSXT=#QMMf7fnwddiMim)U$*4-9 zBsy4i7Q^b);Rrr3Pb<`NY8cOUql4MVI9r=$m6oT_lT%lj*7D@k&&seLEYwo`cvo!Z z3kQ{QS<2w2auiS%W>5slI+}wz6fGVohqOgXN)hoE1QibiJW#w4Z-4r)KWCE~>pwH|&71jl=Dm4uH|6wB4j%ve z&=CM-_(Q<*&j^@~XH~INKyoLZGvIkOa+iSJ*u!Hlj~A3QwoNf<&c&N*+Z<~h)-KuI zVXbusU_htJtw?QL>vw5V0RG@;D%35C<6& zN{UNLEjF8_q-NW>88)vQB2hD97M$4fkphtL#5N_ zu}a=nw^y<{WLfgM9A4*W)8Tb=tP8jUR;R~hoiE9wcDh=YJXIc-x_#$Ge2K5relO4l z2HdU0BTFK_#wi}(i1-%YG3eChsFm<(b~wDPytSdFO>)XgJ71dhpWE6f``zAFI-)>V z3-uhflXI)9^ORnesBGsg#z;g(-V$ZKF)Jg!Rgx&hlxS!aJd+gawAiw)-_UAMcy*yv@uWnJuWIc#Ysv}49^Le zg&+183vRZ;JdzQf%Q{CVRl~qb-I9|kV7M%|cGTWFX;iIluPo90b;>@!waVx5IJ~YZ zANjiFio8)Xu5u}d`7|XcHpW~M@gsf_Az`(0K`hhYH)U+>Sq{H5WGky;Qq@d1d6TdRjg+lEZB1lpkqA8&V+k=C z(Tpm!j3DtZrX`-pXK^9K)r2snwqO{hr3Vo|1hWRsgc1lPMo|)>+qSjQHjhc#jgYr+mDp^vS_5w-y**jAilyKtWE#wE4~f3dv`tdDW5pPASIz1aI% z4m-f6vOzYJg~H>ofKHNQc3c%62P2z`rC3G>-GhDf!Y!w9*g`*y739<6Jg$LrB{_AB zgB`2L;wZsL?&UNo4(etm=?F list = Lists.newArrayList(); + aa(list); + System.out.println(list); // Map params = Maps.newHashMap(); // List> attendanceItems = new ArrayList<>(); // Map map = new HashMap<>(); @@ -60,7 +63,8 @@ public class Test { // } // System.out.println("aaaa"); - System.out.println(DateUtil.getBetWeenMinutes("2023-11-25 20:45:00","2023-11-25 21:00")); + System.out.println(AttendanceItemTypeEnum.MISSE_CARD.equals(AttendanceItemTypeEnum.MISSE_CARD)); + //System.out.println(Util.getIntValue("")); // List> beforeleaveDate = Lists.newArrayList(); // for (int i=beforeleaveDate.size()-1;i>=0;i--){ @@ -434,8 +438,13 @@ public class Test { params.put("clockInTimeCollect",collect); params.put("schedulingResultCollect",schedulingResultsMap); - Map beforeOneDayClockInTimeList = new GetClockInTimeItemCmd(params).execute(null); - System.out.println(beforeOneDayClockInTimeList); } + + public static void aa(List list){ + list.add(1); + list.add(5); + list.add(4); + list = list.stream().filter(e -> e <=4).collect(Collectors.toList()); + } }