diff --git a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat index 7f359d2..6bae168 100644 Binary files a/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat and b/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat differ diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7df2fb4..0015056 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,26 +10,29 @@ - - + - - - - - + + + - - - - - - - - + + - + + + + + + + + + + + + + @@ -726,7 +731,7 @@ file://$PROJECT_DIR$/src/com/engine/common/util/DateUtil.java - 158 + 171 @@ -734,11 +739,6 @@ 407 - - file://$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java - 38 - file://$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java 111 diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index b3a6e46..70bcd8b 100644 Binary files a/out/artifacts/hrm_attendance/hrm-attendance.jar and b/out/artifacts/hrm_attendance/hrm-attendance.jar differ diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java index 401c5d0..715a1b7 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java @@ -66,9 +66,7 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand abnormalClockInMap : abnormalClockInList){ - int betweenMinutes = Integer.valueOf(Util.null2String(abnormalClockInMap.get("betweenMinutes"))); AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInMap.get("itemType"); - String item = Util.null2String(abnormalClockInMap.get("item")); String kczgsc = Util.null2String(abnormalClockInMap.get("kczgsc")); if (itemType == AttendanceItemTypeEnum.MISSE_CARD){ //早上漏卡 @@ -77,6 +75,8 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand> abnormalItemList = attendanceItems.stream().filter(e->e.get("key").equals(item)).collect(Collectors.toList()); if (abnormalItemList.size() > 0){ //起步扣除分钟数 diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.java b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.java deleted file mode 100644 index 1a51897..0000000 --- a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint; - -public interface AdjustClockPoint { -} diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.java b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.java new file mode 100644 index 0000000..c9b096b --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.java @@ -0,0 +1,11 @@ +package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint; + + +import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO; +import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo; + +import java.util.List; + +public interface AdjustClockPointAction { + List execute(ClockPointInfo clockPointInfo); +} diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.java b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.java new file mode 100644 index 0000000..768dec7 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.java @@ -0,0 +1,74 @@ +package com.engine.attendance.attendanceanalysis.cmd.getclockInpoint; + +import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO; +import com.engine.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo; +import com.engine.attendance.enums.ClockPointEnum; +import com.engine.common.util.DateUtil; +import com.engine.common.util.Utils; + +import java.time.ZoneOffset; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 当一天只存在上班卡点和下班卡点2个卡点时,且第一笔卡为上班,第二笔卡为下班的时候 + */ +public class AdjustWhenHaveTwoClockPoint implements AdjustClockPointAction{ + @Override + public List execute(ClockPointInfo clockPointInfo) { + List clcokInPointList = clockPointInfo.getClcokInPointList(); + List> scheduleResult = clockPointInfo.getScheduleResult(); + String analysisDate = clockPointInfo.getAnalysisDate(); + + clcokInPointList = clcokInPointList.stream().sorted(Comparator.comparing(e-> DateUtil.getTime(e.getClassTime()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + + if (clcokInPointList.size() ==2 && clcokInPointList.get(0).getPointType() == ClockPointEnum.START + && clcokInPointList.get(1).getPointType() == ClockPointEnum.END){ + if (clcokInPointList.get(0).getTimeType() == ClockPointEnum.EMPTY){ + //当上班存在漏卡时则全天漏卡 + for (Map map :scheduleResult){ + if (!Utils.getkssjTime(map,analysisDate).equals(clcokInPointList.get(0).getClassTime())){ + clcokInPointList.add(ClockPointDTO.builder().classTime(Utils.getkssjTime(map,analysisDate)).pointType(ClockPointEnum.START).timeType(ClockPointEnum.EMPTY).classSegmentType(map.get("bdlx").toString()) + .record(false).build()); + } + } + } + if (clcokInPointList.get(1).getTimeType() == ClockPointEnum.EMPTY){ + //当上班存在漏卡时则全天漏卡 + for (Map map :scheduleResult){ + if (!Utils.getjssjTime(map,analysisDate).equals(clcokInPointList.get(1).getClassTime())){ + clcokInPointList.add(ClockPointDTO.builder().classTime(Utils.getjssjTime(map,analysisDate)).pointType(ClockPointEnum.END).timeType(ClockPointEnum.EMPTY).classSegmentType(map.get("bdlx").toString()) + .record(false).build()); + } + } + } + if (clcokInPointList.get(1).getTimeType() != ClockPointEnum.EMPTY && clcokInPointList.get(0).getTimeType() != ClockPointEnum.EMPTY){ + //上班时间 + String toWorkTime = clcokInPointList.get(0).getClockTime().get("signdate")+" "+clcokInPointList.get(0).getClockTime().get("signtime"); + //下班时间 + String afterWorkTime = clcokInPointList.get(1).getClockTime().get("signdate")+" "+clcokInPointList.get(1).getClockTime().get("signtime"); + + + if (clcokInPointList.get(0).getTimeType() == ClockPointEnum.AFTER){ + //上班迟到 + for (Map map :scheduleResult){ + String kssj = Utils.getkssjTime(map,analysisDate); + String jssj = Utils.getjssjTime(map,analysisDate); + if (kssj.equals(clcokInPointList.get(0).getClassTime())){ + + } + } + + } + if (clcokInPointList.get(1).getTimeType() == ClockPointEnum.BEFORE){ + //下班早退 + + } + + } + } + return null; + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java index 12df253..a0822d7 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java @@ -236,6 +236,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand> scheduleResult; /** - * 班次集合 + * 请假以及出差班次集合 */ private List> askForLeaveAndEvctionScheduleList; + /** + * 打卡数据 + */ + List> clockInTimeList; } diff --git a/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java b/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java index 428e04b..cc22f61 100644 --- a/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java +++ b/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java @@ -401,13 +401,12 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService { map.put("rqlx",CommonUtil.getRqlx(str,date)); organizationList.add(map); } - String sql = "select id,mc,sfxx from uf_jcl_kq_bcxx where id=?"; - List> bcxxList = DbTools.getSqlToList(sql,bcxxId); + Map insertDataMap = Maps.newHashMap(); insertDataList.add(insertDataMap); insertDataMap.put("pbtj",RegularScheduleTypeEnum.CALENDAR.getKey()); insertDataMap.put("bcrq",date); - insertDataMap.put("sfxx", bcxxList.get(0).get("sfxx")); + insertDataMap.put("sfxx", CommonUtil.ifrestByClass(bcxxId)); insertDataMap.put("sfdkpp",CheckBoxEnum.UNCHECKED.getKey()); insertDataMap.put("bcxx",bcxxId); insertDataMap.put("pbrq",DateUtil.getCurrentDate()); diff --git a/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java b/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java index 8fe42b0..98235ce 100644 --- a/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java +++ b/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java @@ -17,4 +17,11 @@ public interface SchedulingResultsService { * @return */ Map queryDataTableActualUse(Map params); + + /** + * 出勤结果更改时插入排班结果 + * @param params + * @return + */ + Map saveScheduleResult(Map params); } diff --git a/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java b/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java index 480bd11..3b0f4bb 100644 --- a/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java +++ b/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java @@ -5,8 +5,11 @@ import com.engine.attendance.component.persongroup.cmd.GetDatatableCountCmd; import com.engine.attendance.component.persongroup.cmd.GetDatatableRecurrenceCmd; import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.attendance.component.persongroup.service.SchedulingResultsService; +import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.SchedulingApproachEnum; +import com.engine.common.util.CommonUtil; import com.engine.common.util.DateUtil; +import com.engine.common.util.DbTools; import com.engine.common.util.Utils; import com.engine.core.impl.Service; import com.google.common.collect.Lists; @@ -135,4 +138,26 @@ public class SchedulingResultsServiceImpl extends Service implements SchedulingR log.info("queryDataTableActualUse schedule : [{}]",resultList); return resultMap; } + + @Override + public Map saveScheduleResult(Map params) { + String billid = Util.null2String(params.get("billid")); + String sql = "select bc,rqlx,rq,ygid from uf_jcl_kq_cqjg where id=?"; + List> dataList = DbTools.getSqlToList(sql,billid); + Map dataMap = Maps.newHashMap(); + dataMap.put("pbtj",SchedulingApproachEnum.UPDATE.getKey()); + dataMap.put("dxlx","0"); + dataMap.put("pbdxry",dataList.get(0).get("ygid")); + dataMap.put("bcrq",dataList.get(0).get("rq")); + dataMap.put("rqlx",dataList.get(0).get("rqlx")); + dataMap.put("sfxx", CommonUtil.ifrestByClass(dataList.get(0).get("bc").toString())); + dataMap.put("sfdkpp", CheckBoxEnum.CHECKED.getKey()); + dataMap.put("bcxx",dataList.get(0).get("bc")); + dataMap.put("pbrq",DateUtil.getCurrentDate()); + dataMap.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]); + + Utils.InsertFormTable("uf_pbjg",dataMap,Utils.getFormmodeIdMap()); + + return null; + } } diff --git a/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java b/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java index dab0edc..af57c31 100644 --- a/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java +++ b/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java @@ -35,4 +35,21 @@ public class SchedulingResultsAction { return ApiReturnTools.error("500","saveApplicableOrganization error"); } } + /** + * 出勤结果更改时插入排班结果 + * @return + */ + @POST + @Path("/saveScheduleResult") + @Produces({"text/plain"}) + public String saveScheduleResult(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + Map paramMap = ParamUtil.request2Map(request); + Map dataMap = basicsetService.saveScheduleResult(paramMap); + return ApiReturnTools.success(dataMap); + }catch (Exception e){ + log.error("execute fail,catch error: [{}]",e); + return ApiReturnTools.error("500","saveApplicableOrganization error"); + } + } } diff --git a/src/com/engine/attendance/enums/SchedulingApproachEnum.java b/src/com/engine/attendance/enums/SchedulingApproachEnum.java index 8f04d45..1eecb99 100644 --- a/src/com/engine/attendance/enums/SchedulingApproachEnum.java +++ b/src/com/engine/attendance/enums/SchedulingApproachEnum.java @@ -13,7 +13,8 @@ public enum SchedulingApproachEnum implements BaseEnum { SCENE("4","现场排班"), WORKFLOW("5","流程申请"), COMPREHENSIVE("6","综合工时"), - DASH("7","划线排班"); + DASH("7","划线排班"), + UPDATE("8","出勤结果修改"); private String key; private String value; diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.class deleted file mode 100644 index 96e3d5d..0000000 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPoint.class and /dev/null differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.class new file mode 100644 index 0000000..1b78380 Binary files /dev/null and b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustClockPointAction.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.class new file mode 100644 index 0000000..88f4b86 Binary files /dev/null and b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustWhenHaveTwoClockPoint.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class index 9a5c81c..81d4a89 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class and b/target/classes/com/engine/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class b/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class index 1539125..e078a3d 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class and b/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo$ClockPointInfoBuilder.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.class b/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.class index 45f0f0a..c7313b7 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.class and b/target/classes/com/engine/attendance/attendanceanalysis/dto/clockpoint/ClockPointInfo.class differ diff --git a/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class b/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class index dcda8cc..714bc2e 100644 Binary files a/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class and b/target/classes/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/component/persongroup/service/SchedulingResultsService.class b/target/classes/com/engine/attendance/component/persongroup/service/SchedulingResultsService.class index e68f950..cbc449e 100644 Binary files a/target/classes/com/engine/attendance/component/persongroup/service/SchedulingResultsService.class and b/target/classes/com/engine/attendance/component/persongroup/service/SchedulingResultsService.class differ diff --git a/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class b/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class index 93b0e42..0b84f65 100644 Binary files a/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class and b/target/classes/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class b/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class index 7b50f78..c0c92af 100644 Binary files a/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class and b/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class differ diff --git a/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class b/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class index 85ba671..6b7d66d 100644 Binary files a/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class and b/target/classes/com/engine/attendance/enums/SchedulingApproachEnum.class differ