From 0290e1f04f8a15150a04589336b16461a6c2e900 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Mon, 23 Oct 2023 17:12:23 +0800 Subject: [PATCH] liuliang --- log/sdk.log | 0 .../hrm_attendance/hrm-attendance.jar | Bin 71492 -> 80191 bytes .../web/AttendancePlanActionApi.java | 2 +- .../persongroup/web/PersonGroupActionApi.java | 2 +- .../web/SchedulingResultsActionApi.java | 2 +- .../workflow/ProcessSubmitCheckActionApi.java | 11 ++ .../attendance/attendanceanalysis/README.md | 4 + .../cmd/absenteeismCmd.java | 55 ++++++ .../job/AttendanceAnalysisJob.java | 39 ++++ .../wrapper/AttendanceAnalysisWrapper.java | 84 +++++++++ .../attendance/attendanceplan/README.md | 4 + .../GetAttendanceItemsByPersonDataCmd.java | 8 +- .../service/AttendancePlanService.java | 2 +- .../impl/AttendancePlanServiceImpl.java | 6 +- .../web/AttendancePlanAction.java | 8 +- src/com/engine/attendance/component/README.md | 4 + .../persongroup/cmd/GetDatatableCmd.java | 3 +- .../persongroup/cmd/GetDatatableCountCmd.java | 3 +- .../cmd/GetDatatableRecurrenceCmd.java | 7 +- .../commonutil/PersongroupCommonUtil.java} | 4 +- .../job/scheduling/SchedulingJob.java | 4 +- .../tactics/DayRegularScheduling.java | 11 +- .../tactics/MonthRegularScheduling.java | 6 +- .../scheduling/tactics/RegularScheduling.java | 3 +- .../tactics/WeekRegularScheduling.java | 9 +- .../tactics/YearRegularScheduling.java | 6 +- .../service/PersonGroupService.java | 2 +- .../service/SchedulingResultsService.java | 2 +- .../service/impl/PersonGroupServiceImpl.java | 4 +- .../impl/SchedulingResultsServiceImpl.java | 22 +-- .../persongroup/web/PersonGroupAction.java | 13 +- .../web/SchedulingResultsAction.java | 20 +- .../attendance/enums/AttendanceItemType.java | 28 +++ src/com/engine/attendance/workflow/README.md | 4 + .../service/ProcessSubmitCheckService.java | 3 + .../impl/ProcessSubmitCheckServiceImpl.java | 86 ++++++++- .../workflow/web/ProcessSubmitCheck.java | 4 - .../workflow/web/ProcessSubmitCheckApi.java | 40 ++++ .../common/exception/ExceptionUtil.java | 17 ++ .../exception/SalaryRunTimeException.java | 15 ++ src/com/engine/common/util/CommonUtil.java | 91 +++++++++ src/com/engine/common/util/DateUtil.java | 17 ++ .../engine/common/util/ResponseResult.java | 177 ++++++++++++++++++ .../web/AttendancePlanActionApi.class | Bin 712 -> 712 bytes .../web/PersonGroupActionApi.class | Bin 688 -> 698 bytes .../web/SchedulingResultsActionApi.class | Bin 718 -> 728 bytes .../ProcessSubmitCheckActionApi.class | Bin 0 -> 703 bytes .../attendance/attendancePlan/README.md | 4 + .../GetAttendanceItemsByPersonDataCmd.class | Bin 8352 -> 8373 bytes .../service/AttendancePlanService.class | Bin 371 -> 371 bytes .../impl/AttendancePlanServiceImpl.class | Bin 1264 -> 1264 bytes .../web/AttendancePlanAction.class | Bin 1801 -> 1801 bytes .../attendance/attendanceanalysis/README.md | 4 + .../job/AttendanceAnalysisJob.class | Bin 0 -> 759 bytes .../wrapper/AttendanceAnalysisWrapper.class | Bin 0 -> 410 bytes .../com/engine/attendance/component/README.md | 4 + .../persongroup/cmd/GetDatatableCmd.class | Bin 4601 -> 4621 bytes .../cmd/GetDatatableCountCmd.class | Bin 0 -> 3515 bytes .../cmd/GetDatatableRecurrenceCmd.class | Bin 7182 -> 7223 bytes .../commonutil/PersongroupCommonUtil.class} | Bin 12984 -> 13037 bytes .../job/scheduling/SchedulingJob.class | Bin 0 -> 3719 bytes .../tactics/DayRegularScheduling.class | Bin 7452 -> 7503 bytes .../tactics/MonthRegularScheduling.class | Bin 7507 -> 7558 bytes .../tactics/RegularScheduling.class | Bin 0 -> 325 bytes .../tactics/WeekRegularScheduling.class | Bin 7894 -> 7945 bytes .../tactics/YearRegularScheduling.class | Bin 7931 -> 7984 bytes .../service/PersonGroupService.class | Bin 576 -> 586 bytes .../service/SchedulingResultsService.class | Bin 362 -> 372 bytes .../service/impl/PersonGroupServiceImpl.class | Bin 8142 -> 8172 bytes .../impl/SchedulingResultsServiceImpl.class | Bin 5392 -> 5473 bytes .../persongroup/web/PersonGroupAction.class | Bin 0 -> 2999 bytes .../web/SchedulingResultsAction.class | Bin 0 -> 2418 bytes .../cmd/GetDatatableCountCmd.class | Bin 3495 -> 0 bytes .../job/scheduling/SchedulingJob.class | Bin 3659 -> 0 bytes .../tactics/RegularScheduling.class | Bin 315 -> 0 bytes .../persongroup/web/PersonGroupAction.class | Bin 2949 -> 0 bytes .../web/SchedulingResultsAction.class | Bin 1803 -> 0 bytes .../com/engine/attendance/workflow/README.md | 4 + .../service/ProcessSubmitCheckService.class | Bin 0 -> 365 bytes .../impl/ProcessSubmitCheckServiceImpl.class | Bin 0 -> 5143 bytes .../workflow/web/ProcessSubmitCheckApi.class | Bin 0 -> 2327 bytes .../common/exception/ExceptionUtil.class | Bin 0 -> 694 bytes .../exception/SalaryRunTimeException.class | Bin 0 -> 708 bytes .../com/engine/common/util/CommonUtil.class | Bin 3113 -> 8861 bytes .../com/engine/common/util/DateUtil.class | Bin 3951 -> 4335 bytes .../engine/common/util/ResponseResult.class | Bin 0 -> 6319 bytes target/test-classes/Test$1.class | Bin 460 -> 0 bytes target/test-classes/Test$2.class | Bin 466 -> 0 bytes target/test-classes/Test.class | Bin 2987 -> 1203 bytes test/Test.java | 21 ++- 90 files changed, 775 insertions(+), 94 deletions(-) create mode 100644 log/sdk.log create mode 100644 src/com/api/attendance/workflow/ProcessSubmitCheckActionApi.java create mode 100644 src/com/engine/attendance/attendanceanalysis/README.md create mode 100644 src/com/engine/attendance/attendanceanalysis/cmd/absenteeismCmd.java create mode 100644 src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java create mode 100644 src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java create mode 100644 src/com/engine/attendance/attendanceplan/README.md rename src/com/engine/attendance/{attendancePlan => attendanceplan}/cmd/GetAttendanceItemsByPersonDataCmd.java (91%) rename src/com/engine/attendance/{attendancePlan => attendanceplan}/service/AttendancePlanService.java (72%) rename src/com/engine/attendance/{attendancePlan => attendanceplan}/service/impl/AttendancePlanServiceImpl.java (69%) rename src/com/engine/attendance/{attendancePlan => attendanceplan}/web/AttendancePlanAction.java (75%) create mode 100644 src/com/engine/attendance/component/README.md rename src/com/engine/attendance/{ => component}/persongroup/cmd/GetDatatableCmd.java (97%) rename src/com/engine/attendance/{ => component}/persongroup/cmd/GetDatatableCountCmd.java (96%) rename src/com/engine/attendance/{ => component}/persongroup/cmd/GetDatatableRecurrenceCmd.java (96%) rename src/com/engine/attendance/{persongroup/commonutil/CommonUtil.java => component/persongroup/commonutil/PersongroupCommonUtil.java} (99%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/SchedulingJob.java (90%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/DayRegularScheduling.java (95%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/MonthRegularScheduling.java (96%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/RegularScheduling.java (63%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/WeekRegularScheduling.java (96%) rename src/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/YearRegularScheduling.java (96%) rename src/com/engine/attendance/{ => component}/persongroup/service/PersonGroupService.java (80%) rename src/com/engine/attendance/{ => component}/persongroup/service/SchedulingResultsService.java (69%) rename src/com/engine/attendance/{ => component}/persongroup/service/impl/PersonGroupServiceImpl.java (97%) rename src/com/engine/attendance/{ => component}/persongroup/service/impl/SchedulingResultsServiceImpl.java (82%) rename src/com/engine/attendance/{ => component}/persongroup/web/PersonGroupAction.java (83%) rename src/com/engine/attendance/{ => component}/persongroup/web/SchedulingResultsAction.java (53%) create mode 100644 src/com/engine/attendance/enums/AttendanceItemType.java create mode 100644 src/com/engine/attendance/workflow/README.md delete mode 100644 src/com/engine/attendance/workflow/web/ProcessSubmitCheck.java create mode 100644 src/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.java create mode 100644 src/com/engine/common/exception/ExceptionUtil.java create mode 100644 src/com/engine/common/exception/SalaryRunTimeException.java create mode 100644 src/com/engine/common/util/ResponseResult.java create mode 100644 target/classes/com/api/attendance/workflow/ProcessSubmitCheckActionApi.class create mode 100644 target/classes/com/engine/attendance/attendancePlan/README.md create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/README.md create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class create mode 100644 target/classes/com/engine/attendance/component/README.md rename target/classes/com/engine/attendance/{ => component}/persongroup/cmd/GetDatatableCmd.class (64%) create mode 100644 target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.class rename target/classes/com/engine/attendance/{ => component}/persongroup/cmd/GetDatatableRecurrenceCmd.class (60%) rename target/classes/com/engine/attendance/{persongroup/commonutil/CommonUtil.class => component/persongroup/commonutil/PersongroupCommonUtil.class} (74%) create mode 100644 target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class rename target/classes/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/DayRegularScheduling.class (69%) rename target/classes/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/MonthRegularScheduling.class (73%) create mode 100644 target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.class rename target/classes/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/WeekRegularScheduling.class (64%) rename target/classes/com/engine/attendance/{ => component}/persongroup/job/scheduling/tactics/YearRegularScheduling.class (73%) rename target/classes/com/engine/attendance/{ => component}/persongroup/service/PersonGroupService.class (68%) rename target/classes/com/engine/attendance/{ => component}/persongroup/service/SchedulingResultsService.class (52%) rename target/classes/com/engine/attendance/{ => component}/persongroup/service/impl/PersonGroupServiceImpl.class (90%) rename target/classes/com/engine/attendance/{ => component}/persongroup/service/impl/SchedulingResultsServiceImpl.class (73%) create mode 100644 target/classes/com/engine/attendance/component/persongroup/web/PersonGroupAction.class create mode 100644 target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class delete mode 100644 target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.class delete mode 100644 target/classes/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.class delete mode 100644 target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/RegularScheduling.class delete mode 100644 target/classes/com/engine/attendance/persongroup/web/PersonGroupAction.class delete mode 100644 target/classes/com/engine/attendance/persongroup/web/SchedulingResultsAction.class create mode 100644 target/classes/com/engine/attendance/workflow/README.md create mode 100644 target/classes/com/engine/attendance/workflow/service/ProcessSubmitCheckService.class create mode 100644 target/classes/com/engine/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.class create mode 100644 target/classes/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.class create mode 100644 target/classes/com/engine/common/exception/ExceptionUtil.class create mode 100644 target/classes/com/engine/common/exception/SalaryRunTimeException.class create mode 100644 target/classes/com/engine/common/util/ResponseResult.class delete mode 100644 target/test-classes/Test$1.class delete mode 100644 target/test-classes/Test$2.class diff --git a/log/sdk.log b/log/sdk.log new file mode 100644 index 0000000..e69de29 diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index 8e079b737f72bd560c3c0a096e185036a39de8b9..e157294e09b61d8c391a660c1cdf9c76e1459c86 100644 GIT binary patch delta 14022 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 bAn?G%cmP6F1qcO*cp?ah43bBP4aENgzAH`_ delta 5792 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 X8tM??4rmDE4DKt+41pXS9=HAvRH>nI diff --git a/src/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.java b/src/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.java index cfa9f3c..eb2d8ae 100644 --- a/src/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.java +++ b/src/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.java @@ -1,7 +1,7 @@ package com.api.attendance.attendancePlan.web; -import com.engine.attendance.attendancePlan.web.AttendancePlanAction; +import com.engine.attendance.attendanceplan.web.AttendancePlanAction; import lombok.extern.slf4j.Slf4j; import javax.ws.rs.Path; diff --git a/src/com/api/attendance/persongroup/web/PersonGroupActionApi.java b/src/com/api/attendance/persongroup/web/PersonGroupActionApi.java index 039d41b..d0313b2 100644 --- a/src/com/api/attendance/persongroup/web/PersonGroupActionApi.java +++ b/src/com/api/attendance/persongroup/web/PersonGroupActionApi.java @@ -1,6 +1,6 @@ package com.api.attendance.persongroup.web; -import com.engine.attendance.persongroup.web.PersonGroupAction; +import com.engine.attendance.component.persongroup.web.PersonGroupAction; import lombok.extern.slf4j.Slf4j; import javax.ws.rs.Path; diff --git a/src/com/api/attendance/persongroup/web/SchedulingResultsActionApi.java b/src/com/api/attendance/persongroup/web/SchedulingResultsActionApi.java index 9ddd498..0dc45d4 100644 --- a/src/com/api/attendance/persongroup/web/SchedulingResultsActionApi.java +++ b/src/com/api/attendance/persongroup/web/SchedulingResultsActionApi.java @@ -1,6 +1,6 @@ package com.api.attendance.persongroup.web; -import com.engine.attendance.persongroup.web.SchedulingResultsAction; +import com.engine.attendance.component.persongroup.web.SchedulingResultsAction; import lombok.extern.slf4j.Slf4j; import javax.ws.rs.Path; diff --git a/src/com/api/attendance/workflow/ProcessSubmitCheckActionApi.java b/src/com/api/attendance/workflow/ProcessSubmitCheckActionApi.java new file mode 100644 index 0000000..30b15de --- /dev/null +++ b/src/com/api/attendance/workflow/ProcessSubmitCheckActionApi.java @@ -0,0 +1,11 @@ +package com.api.attendance.workflow; + +import com.engine.attendance.workflow.web.ProcessSubmitCheckApi; +import lombok.extern.slf4j.Slf4j; + +import javax.ws.rs.Path; + +@Path("/attendance/processsubmitcheck") +@Slf4j +public class ProcessSubmitCheckActionApi extends ProcessSubmitCheckApi { +} diff --git a/src/com/engine/attendance/attendanceanalysis/README.md b/src/com/engine/attendance/attendanceanalysis/README.md new file mode 100644 index 0000000..123ba41 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤分析模块 +## 用于计算分析人员的考勤,算出正常上下班、加班、早退、迟到等一些列考勤项目,并入到出勤结果表 + diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/absenteeismCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/absenteeismCmd.java new file mode 100644 index 0000000..79947fb --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/cmd/absenteeismCmd.java @@ -0,0 +1,55 @@ +package com.engine.attendance.attendanceanalysis.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import weaver.general.Util; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 人员旷工 + */ +public class absenteeismCmd extends AbstractCommonCommand> { + @Override + public BizLogContext getLogContext() { + return null; + } + public absenteeismCmd(Map params){ + this.params=params; + } + + @Override + public Map execute(CommandContext commandContext) { + //作用时段 + String workfor = Util.null2String(params.get("workfor")); + String time = Util.null2String(params.get("time")); + String userId = Util.null2String(params.get("userId")); + String itemType = Util.null2String(params.get("itemType")); + List> attendanceItems = (List>)params.get("attendanceItems"); + attendanceItems.stream().filter(e -> { + //项目类型 + String xmlx = Util.null2String(e.get("xmlx")); + //作用时段 + String zysd = Util.null2String(e.get("zysd")); + //最小核算分钟数(不包含) + String zxhsl = Util.null2String(e.get("zxhsl")); + //最大核算分钟数(包含) + String zdhsl = Util.null2String(e.get("zdhsl")); + if( .equals(xmlx) && workfor.equals(zysd)){ + + } + + + + + + + return false; + }).collect(Collectors.toList()); + + return null; + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java new file mode 100644 index 0000000..08a9299 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java @@ -0,0 +1,39 @@ +package com.engine.attendance.attendanceanalysis.job; + + +import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper; +import com.engine.attendance.workflow.service.ProcessSubmitCheckService; +import com.engine.attendance.workflow.service.impl.ProcessSubmitCheckServiceImpl; +import com.engine.common.util.DateUtil; +import com.engine.common.util.DbTools; +import com.engine.common.util.ServiceUtil; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.schedule.BaseCronJob; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +public class AttendanceAnalysisJob extends BaseCronJob { + + + private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class); + @Override + public void execute() { + log.info("********AttendanceAnalysisJob start********"); + String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3); + String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); + String sql = "select userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?"; + + List> dataList = DbTools.getSqlToList(sql,beforeThreeDayDate,beforeOneDayDate); + + Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); + collect.entrySet().forEach(e -> { + + }); + log.info("********AttendanceAnalysisJob end********"); + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java new file mode 100644 index 0000000..ce53752 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -0,0 +1,84 @@ +package com.engine.attendance.attendanceanalysis.wrapper; + +import com.engine.attendance.attendanceplan.service.AttendancePlanService; +import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; +import com.engine.common.util.DateUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 考勤分析主题逻辑 + */ +public class AttendanceAnalysisWrapper extends Service { + + private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); + + public void attendanceAnalysis(String userId, List> dataList){ + String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3); + String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(1); + String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); + Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); + + /**获得人员考勤项目*/ + Map paramMap = new HashMap<>(); + paramMap.put("startDate",""); + paramMap.put("endDate",""); + paramMap.put("resourceId","85"); + paramMap.put("modeId","204"); + Map dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); + List> attendanceItems = (List>)dataMap.get("data"); + + + if (collect.size() == 0){ + //没有打卡数据,前一天记为全天旷工 + + + }else if (collect.size() == 1){ + //有1天有打卡数据 + if (collect.get(beforeOneDayDate) != null){ + //打卡数据为前一天 + + + }else { + //否则前一天记为全天旷工 + + + } + + }else if (collect.size() == 2){ + //有2天有打卡数据 + + //计算前一天考勤 + if (collect.get(beforeOneDayDate) != null){ + //打卡数据为前一天 + + + }else { + //否则前一天记为全天旷工 + + + } + + //计算第二天数据 + if (collect.get(beforeTwoDayDate) != null && collect.get(beforeOneDayDate) != null){ + + + } + + + }else if (collect.size() == 3){ + //连续3天打卡 + + + } + } + + + +} diff --git a/src/com/engine/attendance/attendanceplan/README.md b/src/com/engine/attendance/attendanceplan/README.md new file mode 100644 index 0000000..e71d698 --- /dev/null +++ b/src/com/engine/attendance/attendanceplan/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤方案模块 +## + diff --git a/src/com/engine/attendance/attendancePlan/cmd/GetAttendanceItemsByPersonDataCmd.java b/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java similarity index 91% rename from src/com/engine/attendance/attendancePlan/cmd/GetAttendanceItemsByPersonDataCmd.java rename to src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java index 8436efa..2e68f6a 100644 --- a/src/com/engine/attendance/attendancePlan/cmd/GetAttendanceItemsByPersonDataCmd.java +++ b/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java @@ -1,6 +1,6 @@ -package com.engine.attendance.attendancePlan.cmd; +package com.engine.attendance.attendanceplan.cmd; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.common.util.DbTools; @@ -94,7 +94,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(sql); - Set personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); log.info("personnelGroupIds : {}",personnelGroupIds); for (Map personGroupOrganization :personGroupOrganizationList){ String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; @@ -108,7 +108,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand> attendanceItems = DbTools.getSqlToList(sql); log.info("dataIds : {}",dataIds); - sql = "select b.id `key`,b.mc kqxm,c.mc famc from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on a.kqxm=b.id left join uf_jcl_kq_kqfa c on a.mainid=c.id where mainid in ("+String.join(",",dataIds)+")"; + sql = "select b.id `key`,b.mc kqxm,c.mc,b.* famc from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on a.kqxm=b.id left join uf_jcl_kq_kqfa c on a.mainid=c.id where mainid in ("+String.join(",",dataIds)+")"; if (dataIds.size() > 0){ log.info("query attendanceItems sql : {}",sql); attendanceItems.addAll(DbTools.getSqlToList(sql)); diff --git a/src/com/engine/attendance/attendancePlan/service/AttendancePlanService.java b/src/com/engine/attendance/attendanceplan/service/AttendancePlanService.java similarity index 72% rename from src/com/engine/attendance/attendancePlan/service/AttendancePlanService.java rename to src/com/engine/attendance/attendanceplan/service/AttendancePlanService.java index 69a6c85..fb349af 100644 --- a/src/com/engine/attendance/attendancePlan/service/AttendancePlanService.java +++ b/src/com/engine/attendance/attendanceplan/service/AttendancePlanService.java @@ -1,4 +1,4 @@ -package com.engine.attendance.attendancePlan.service; +package com.engine.attendance.attendanceplan.service; import java.util.Map; diff --git a/src/com/engine/attendance/attendancePlan/service/impl/AttendancePlanServiceImpl.java b/src/com/engine/attendance/attendanceplan/service/impl/AttendancePlanServiceImpl.java similarity index 69% rename from src/com/engine/attendance/attendancePlan/service/impl/AttendancePlanServiceImpl.java rename to src/com/engine/attendance/attendanceplan/service/impl/AttendancePlanServiceImpl.java index 6784870..8982ca0 100644 --- a/src/com/engine/attendance/attendancePlan/service/impl/AttendancePlanServiceImpl.java +++ b/src/com/engine/attendance/attendanceplan/service/impl/AttendancePlanServiceImpl.java @@ -1,7 +1,7 @@ -package com.engine.attendance.attendancePlan.service.impl; +package com.engine.attendance.attendanceplan.service.impl; -import com.engine.attendance.attendancePlan.cmd.GetAttendanceItemsByPersonDataCmd; -import com.engine.attendance.attendancePlan.service.AttendancePlanService; +import com.engine.attendance.attendanceplan.cmd.GetAttendanceItemsByPersonDataCmd; +import com.engine.attendance.attendanceplan.service.AttendancePlanService; import com.engine.core.impl.Service; import java.util.Map; diff --git a/src/com/engine/attendance/attendancePlan/web/AttendancePlanAction.java b/src/com/engine/attendance/attendanceplan/web/AttendancePlanAction.java similarity index 75% rename from src/com/engine/attendance/attendancePlan/web/AttendancePlanAction.java rename to src/com/engine/attendance/attendanceplan/web/AttendancePlanAction.java index 9a9b0a9..fc71a1d 100644 --- a/src/com/engine/attendance/attendancePlan/web/AttendancePlanAction.java +++ b/src/com/engine/attendance/attendanceplan/web/AttendancePlanAction.java @@ -1,9 +1,7 @@ -package com.engine.attendance.attendancePlan.web; +package com.engine.attendance.attendanceplan.web; -import com.engine.attendance.attendancePlan.service.AttendancePlanService; -import com.engine.attendance.attendancePlan.service.impl.AttendancePlanServiceImpl; -import com.engine.attendance.persongroup.service.SchedulingResultsService; -import com.engine.attendance.persongroup.service.impl.SchedulingResultsServiceImpl; +import com.engine.attendance.attendanceplan.service.AttendancePlanService; +import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.common.util.ApiReturnTools; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; diff --git a/src/com/engine/attendance/component/README.md b/src/com/engine/attendance/component/README.md new file mode 100644 index 0000000..6fc597b --- /dev/null +++ b/src/com/engine/attendance/component/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤组件模块 +## person_group 人员分组功能组件 + diff --git a/src/com/engine/attendance/persongroup/cmd/GetDatatableCmd.java b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.java similarity index 97% rename from src/com/engine/attendance/persongroup/cmd/GetDatatableCmd.java rename to src/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.java index d46bcaf..e365636 100644 --- a/src/com/engine/attendance/persongroup/cmd/GetDatatableCmd.java +++ b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.java @@ -1,4 +1,4 @@ -package com.engine.attendance.persongroup.cmd; +package com.engine.attendance.component.persongroup.cmd; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; @@ -6,7 +6,6 @@ import com.engine.common.util.DbTools; import com.engine.core.interceptor.CommandContext; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.icbc.api.internal.apache.http.M; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSet; import weaver.general.Util; diff --git a/src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.java similarity index 96% rename from src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java rename to src/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.java index c7a1126..7fd7063 100644 --- a/src/com/engine/attendance/persongroup/cmd/GetDatatableCountCmd.java +++ b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.java @@ -1,4 +1,4 @@ -package com.engine.attendance.persongroup.cmd; +package com.engine.attendance.component.persongroup.cmd; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; @@ -6,7 +6,6 @@ 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.RecordSet; import weaver.general.Util; import java.util.List; import java.util.Map; diff --git a/src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java similarity index 96% rename from src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java rename to src/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java index ed5a6e6..644a552 100644 --- a/src/com/engine/attendance/persongroup/cmd/GetDatatableRecurrenceCmd.java +++ b/src/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java @@ -1,6 +1,6 @@ -package com.engine.attendance.persongroup.cmd; +package com.engine.attendance.component.persongroup.cmd; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; @@ -10,7 +10,6 @@ import com.engine.core.interceptor.CommandContext; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import weaver.hrm.company.DepartmentComInfo; @@ -69,7 +68,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand> personGroupData = DbTools.getSqlToList(queryryfz); - Set personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null); querySqlbyPbdx = sql +conditions + " and pbdxryfz in (?)"; log.info("递归查询人员-人员分组节点,sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds); if(personnelGroupIds.size() > 0){ diff --git a/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java b/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java similarity index 99% rename from src/com/engine/attendance/persongroup/commonutil/CommonUtil.java rename to src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java index 7690bec..5089693 100644 --- a/src/com/engine/attendance/persongroup/commonutil/CommonUtil.java +++ b/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java @@ -1,4 +1,4 @@ -package com.engine.attendance.persongroup.commonutil; +package com.engine.attendance.component.persongroup.commonutil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; @@ -13,7 +13,7 @@ import java.util.*; import java.util.stream.Collectors; @Slf4j -public class CommonUtil { +public class PersongroupCommonUtil { /** * * @param calendarMap key:年份,value:明细数据 diff --git a/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java b/src/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.java similarity index 90% rename from src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.java index e24a514..7c991f7 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.java @@ -1,6 +1,6 @@ -package com.engine.attendance.persongroup.job.scheduling; +package com.engine.attendance.component.persongroup.job.scheduling; -import com.engine.attendance.persongroup.job.scheduling.tactics.RegularScheduling; +import com.engine.attendance.component.persongroup.job.scheduling.tactics.RegularScheduling; import com.engine.common.util.DbTools; import com.engine.common.util.Utils; diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java similarity index 95% rename from src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java index cdcd9af..e598846 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/DayRegularScheduling.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java @@ -1,18 +1,15 @@ -package com.engine.attendance.persongroup.job.scheduling.tactics; +package com.engine.attendance.component.persongroup.job.scheduling.tactics; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; 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.ArrayList; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Collectors; /** @@ -73,7 +70,7 @@ public class DayRegularScheduling implements RegularScheduling{ log.info("detailDataGroupingByYear : {}",detailDataGroupingByYear); //循环总天数 int circulateDays = Integer.valueOf(detailDataList.get(detailDataList.size()-1).get("jsts").toString()); - int betweenDays = CommonUtil.getBetweenDays(data); + int betweenDays = PersongroupCommonUtil.getBetweenDays(data); log.info("betweenDays : [{}]",betweenDays); /**按照天数规律循环遍历插入*/ //从第几天开始循环 @@ -176,7 +173,7 @@ public class DayRegularScheduling implements RegularScheduling{ } /**插入排班结果表*/ - CommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); + PersongroupCommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); } } diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java similarity index 96% rename from src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java index e123a51..d0b78e7 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java @@ -1,6 +1,6 @@ -package com.engine.attendance.persongroup.job.scheduling.tactics; +package com.engine.attendance.component.persongroup.job.scheduling.tactics; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.google.common.collect.Lists; @@ -164,6 +164,6 @@ public class MonthRegularScheduling implements RegularScheduling{ count++; } /**插入排班结果表*/ - CommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); + PersongroupCommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); } } diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/RegularScheduling.java b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.java similarity index 63% rename from src/com/engine/attendance/persongroup/job/scheduling/tactics/RegularScheduling.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.java index bab8164..28e62b2 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/RegularScheduling.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.java @@ -1,6 +1,5 @@ -package com.engine.attendance.persongroup.job.scheduling.tactics; +package com.engine.attendance.component.persongroup.job.scheduling.tactics; -import java.util.List; import java.util.Map; public interface RegularScheduling { diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java similarity index 96% rename from src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java index 9412c20..d69ffa5 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java @@ -1,20 +1,17 @@ -package com.engine.attendance.persongroup.job.scheduling.tactics; +package com.engine.attendance.component.persongroup.job.scheduling.tactics; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; 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.time.DayOfWeek; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Collectors; /** @@ -172,7 +169,7 @@ public class WeekRegularScheduling implements RegularScheduling{ } /**插入排班结果表*/ - CommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); + PersongroupCommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); } public int getDayOfWeek(DayOfWeek dayOfWeek){ diff --git a/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java similarity index 96% rename from src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java rename to src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java index bfe63ad..3035b37 100644 --- a/src/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.java +++ b/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java @@ -1,6 +1,6 @@ -package com.engine.attendance.persongroup.job.scheduling.tactics; +package com.engine.attendance.component.persongroup.job.scheduling.tactics; -import com.engine.attendance.persongroup.commonutil.CommonUtil; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.google.common.collect.Lists; @@ -174,6 +174,6 @@ public class YearRegularScheduling implements RegularScheduling{ } /**插入排班结果表*/ - CommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); + PersongroupCommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid); } } diff --git a/src/com/engine/attendance/persongroup/service/PersonGroupService.java b/src/com/engine/attendance/component/persongroup/service/PersonGroupService.java similarity index 80% rename from src/com/engine/attendance/persongroup/service/PersonGroupService.java rename to src/com/engine/attendance/component/persongroup/service/PersonGroupService.java index 3bebf76..254a2bb 100644 --- a/src/com/engine/attendance/persongroup/service/PersonGroupService.java +++ b/src/com/engine/attendance/component/persongroup/service/PersonGroupService.java @@ -1,4 +1,4 @@ -package com.engine.attendance.persongroup.service; +package com.engine.attendance.component.persongroup.service; import weaver.hrm.User; diff --git a/src/com/engine/attendance/persongroup/service/SchedulingResultsService.java b/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java similarity index 69% rename from src/com/engine/attendance/persongroup/service/SchedulingResultsService.java rename to src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java index ea105f0..c3165b3 100644 --- a/src/com/engine/attendance/persongroup/service/SchedulingResultsService.java +++ b/src/com/engine/attendance/component/persongroup/service/SchedulingResultsService.java @@ -1,4 +1,4 @@ -package com.engine.attendance.persongroup.service; +package com.engine.attendance.component.persongroup.service; import java.util.Map; diff --git a/src/com/engine/attendance/persongroup/service/impl/PersonGroupServiceImpl.java b/src/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java similarity index 97% rename from src/com/engine/attendance/persongroup/service/impl/PersonGroupServiceImpl.java rename to src/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java index dea4fc5..4aa26bd 100644 --- a/src/com/engine/attendance/persongroup/service/impl/PersonGroupServiceImpl.java +++ b/src/com/engine/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.java @@ -1,7 +1,7 @@ -package com.engine.attendance.persongroup.service.impl; +package com.engine.attendance.component.persongroup.service.impl; -import com.engine.attendance.persongroup.service.PersonGroupService; +import com.engine.attendance.component.persongroup.service.PersonGroupService; import com.engine.common.util.DbTools; import com.engine.common.util.Utils; import com.engine.core.impl.Service; diff --git a/src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java b/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java similarity index 82% rename from src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java rename to src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java index ea3eca9..c0a7fbe 100644 --- a/src/com/engine/attendance/persongroup/service/impl/SchedulingResultsServiceImpl.java +++ b/src/com/engine/attendance/component/persongroup/service/impl/SchedulingResultsServiceImpl.java @@ -1,10 +1,10 @@ -package com.engine.attendance.persongroup.service.impl; +package com.engine.attendance.component.persongroup.service.impl; -import com.engine.attendance.persongroup.cmd.GetDatatableCmd; -import com.engine.attendance.persongroup.cmd.GetDatatableCountCmd; -import com.engine.attendance.persongroup.cmd.GetDatatableRecurrenceCmd; -import com.engine.attendance.persongroup.commonutil.CommonUtil; -import com.engine.attendance.persongroup.service.SchedulingResultsService; +import com.engine.attendance.component.persongroup.cmd.GetDatatableCmd; +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.core.impl.Service; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; @@ -16,11 +16,11 @@ import java.util.Map; @Slf4j public class SchedulingResultsServiceImpl extends Service implements SchedulingResultsService { - private Map personGroupMap = CommonUtil.getPersonGroup(); - private Map departMentMap = CommonUtil.getDepartMent(); - private Map subCompanyMap = CommonUtil.getSubCompany(); - private Map classesInformationMap = CommonUtil.getClassesInformation(); - private Map candidateTeamMap = CommonUtil.getCandidateTeam(); + private Map personGroupMap = PersongroupCommonUtil.getPersonGroup(); + private Map departMentMap = PersongroupCommonUtil.getDepartMent(); + private Map subCompanyMap = PersongroupCommonUtil.getSubCompany(); + private Map classesInformationMap = PersongroupCommonUtil.getClassesInformation(); + private Map candidateTeamMap = PersongroupCommonUtil.getCandidateTeam(); @Override public Map queryDataTable(Map params) { diff --git a/src/com/engine/attendance/persongroup/web/PersonGroupAction.java b/src/com/engine/attendance/component/persongroup/web/PersonGroupAction.java similarity index 83% rename from src/com/engine/attendance/persongroup/web/PersonGroupAction.java rename to src/com/engine/attendance/component/persongroup/web/PersonGroupAction.java index d0834f1..1a8c001 100644 --- a/src/com/engine/attendance/persongroup/web/PersonGroupAction.java +++ b/src/com/engine/attendance/component/persongroup/web/PersonGroupAction.java @@ -1,14 +1,11 @@ -package com.engine.attendance.persongroup.web; +package com.engine.attendance.component.persongroup.web; -import com.alibaba.fastjson.JSONObject; -import com.cloudstore.dev.api.bean.SplitPageBean; -import com.engine.attendance.persongroup.service.PersonGroupService; -import com.engine.attendance.persongroup.service.impl.PersonGroupServiceImpl; +import com.engine.attendance.component.persongroup.service.PersonGroupService; +import com.engine.attendance.component.persongroup.service.impl.PersonGroupServiceImpl; import com.engine.common.util.ApiReturnTools; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import lombok.extern.slf4j.Slf4j; -import weaver.general.Util; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -19,9 +16,6 @@ import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; @Slf4j @@ -66,5 +60,4 @@ public class PersonGroupAction { } } - } diff --git a/src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java b/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java similarity index 53% rename from src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java rename to src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java index 9e65110..dab0edc 100644 --- a/src/com/engine/attendance/persongroup/web/SchedulingResultsAction.java +++ b/src/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.java @@ -1,10 +1,11 @@ -package com.engine.attendance.persongroup.web; +package com.engine.attendance.component.persongroup.web; -import com.engine.attendance.persongroup.service.SchedulingResultsService; -import com.engine.attendance.persongroup.service.impl.SchedulingResultsServiceImpl; +import com.engine.attendance.component.persongroup.service.SchedulingResultsService; +import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl; import com.engine.common.util.ApiReturnTools; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import lombok.extern.slf4j.Slf4j; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,7 +14,7 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import java.util.Map; - +@Slf4j public class SchedulingResultsAction { private SchedulingResultsService basicsetService = ServiceUtil.getService(SchedulingResultsServiceImpl.class); @@ -25,8 +26,13 @@ public class SchedulingResultsAction { @Path("/getSchedulingData") @Produces({"text/plain"}) public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) { - Map paramMap = ParamUtil.request2Map(request); - Map dataMap = basicsetService.queryDataTable(paramMap); - return ApiReturnTools.success(dataMap); + try { + Map paramMap = ParamUtil.request2Map(request); + Map dataMap = basicsetService.queryDataTable(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/AttendanceItemType.java b/src/com/engine/attendance/enums/AttendanceItemType.java new file mode 100644 index 0000000..1fa2336 --- /dev/null +++ b/src/com/engine/attendance/enums/AttendanceItemType.java @@ -0,0 +1,28 @@ +package com.engine.attendance.enums; + +import com.finance.toolkit.BaseEnum; + +public enum AttendanceItemType implements BaseEnum { + LATE("0","迟到"), + LEAVE_EARLY("1","早退"), + ABSENTEESIM("2","旷工"),; + + private String key; + private String value; + + AttendanceItemType(String key,String value){ + this.key=key; + this.value=value; + } + + + @Override + public String getKey() { + return this.key; + } + + @Override + public String getValue() { + return this.value; + } +} diff --git a/src/com/engine/attendance/workflow/README.md b/src/com/engine/attendance/workflow/README.md new file mode 100644 index 0000000..1097df6 --- /dev/null +++ b/src/com/engine/attendance/workflow/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤流程模块 +## + diff --git a/src/com/engine/attendance/workflow/service/ProcessSubmitCheckService.java b/src/com/engine/attendance/workflow/service/ProcessSubmitCheckService.java index f97f95b..555c4c1 100644 --- a/src/com/engine/attendance/workflow/service/ProcessSubmitCheckService.java +++ b/src/com/engine/attendance/workflow/service/ProcessSubmitCheckService.java @@ -1,4 +1,7 @@ package com.engine.attendance.workflow.service; +import java.util.Map; + public interface ProcessSubmitCheckService { + Map processSubmitCheck(Map params); } diff --git a/src/com/engine/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java b/src/com/engine/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java index 45c06d7..9f35191 100644 --- a/src/com/engine/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java +++ b/src/com/engine/attendance/workflow/service/impl/ProcessSubmitCheckServiceImpl.java @@ -1,4 +1,88 @@ package com.engine.attendance.workflow.service.impl; -public interface ProcessSubmitCheckServiceImpl { +import com.engine.attendance.workflow.service.ProcessSubmitCheckService; +import com.engine.common.util.CommonUtil; +import com.engine.common.util.DateUtil; +import com.engine.common.util.DbTools; +import com.engine.core.impl.Service; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Slf4j +public class ProcessSubmitCheckServiceImpl extends Service implements ProcessSubmitCheckService { + @Override + public Map processSubmitCheck(Map params) { + String userId = Util.null2String(params.get("userId")); + String submitDate = Util.null2String(params.get("submitDate")); + String modeId = Util.null2String(params.get("modeId")); + Map resultMap = Maps.newHashMap(); + resultMap.put("result","0"); + + Set attendanceSetIdsSets = CommonUtil.getDataIds(userId,modeId,null,null); + log.info("attendanceSetIdsSets : {}",attendanceSetIdsSets); + + LocalDateTime localDateTime = DateUtil.getTime(submitDate); + int year = localDateTime.getYear(); + int month = localDateTime.getMonth().getValue(); + String sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; + Map departMentMap = DbTools.getSqlToMap(sql,userId); + String deptid = Util.null2String(departMentMap.get("departmentid")); + String pdeptids = ""; + try { + pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); + pdeptids = deptid + pdeptids; + log.info("pdeptids : [{}]",pdeptids); + sql = "select a.zt,a.gzrq,a.gzsj,b.zt dtzt,b.tsbm,b.gzrq dtgzrq,b.gzsj dtgzsj from uf_jcl_kq_kqzq a left join uf_jcl_kq_kqzq_dt1 b on a.id=b.mainid where a.nd=? and a.mc=? and a.yf=?"; + if (attendanceSetIdsSets.toArray().length > 0){ + List> list = DbTools.getSqlToList(sql,year,attendanceSetIdsSets.toArray()[0],month); + for (Map dataMap : list){ + //先看人员是否在此笔考勤周期的明细中,如果在,看明细记录上的开关账状态,如果状态为关账,直接返回false,否则看明细记录上的关账日期时间是否小于当前日期时间,如果小于,返回false; + String tsbm = Util.null2String(dataMap.get("tsbm")); + String dtzt = Util.null2String(dataMap.get("dtzt")); + if (!"".equals(tsbm) && CommonUtil.ifContainStr(pdeptids,tsbm,",")){ + //明细表有值 + if (dtzt.equals("1")){ + //关账 + resultMap.put("result","1"); + }else { + String gzrq = Util.null2String(dataMap.get("dtgzrq")) +" "+Util.null2String(dataMap.get("dtgzsj")) +":00"; + if (DateUtil.getBetWeenMinutes(gzrq,submitDate,DateUtil.yyyyMMddHHmm) >0){ + resultMap.put("result","1"); + } + } + } + } + if ("0".equals(resultMap.get("result"))){ + for (Map dataMap : list){ + //先看人员是否在此笔考勤周期的明细中,如果在,看明细记录上的开关账状态,如果状态为关账,直接返回false,否则看明细记录上的关账日期时间是否小于当前日期时间,如果小于,返回false; + String zt = Util.null2String(dataMap.get("zt")); + String gzrq = Util.null2String(dataMap.get("gzrq")) +" "+Util.null2String(dataMap.get("gzsj")) +":00"; + if (zt.equals("1")){ + //关账 + resultMap.put("result","1"); + }else { + if (DateUtil.getBetWeenMinutes(gzrq,submitDate,DateUtil.yyyyMMddHHmm) >0){ + resultMap.put("result","1"); + } + + } + } + + } + } + + }catch (Exception e){ + log.error("catch error :{}",e); + } + + + return resultMap; + } } diff --git a/src/com/engine/attendance/workflow/web/ProcessSubmitCheck.java b/src/com/engine/attendance/workflow/web/ProcessSubmitCheck.java deleted file mode 100644 index c67b502..0000000 --- a/src/com/engine/attendance/workflow/web/ProcessSubmitCheck.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.engine.attendance.workflow.web; - -public class ProcessSubmitCheck { -} diff --git a/src/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.java b/src/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.java new file mode 100644 index 0000000..9b59da3 --- /dev/null +++ b/src/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.java @@ -0,0 +1,40 @@ +package com.engine.attendance.workflow.web; + +import com.engine.attendance.workflow.service.ProcessSubmitCheckService; +import com.engine.attendance.workflow.service.impl.ProcessSubmitCheckServiceImpl; +import com.engine.common.util.ApiReturnTools; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import java.util.Map; + +@Slf4j +public class ProcessSubmitCheckApi { + + private ProcessSubmitCheckService basicsetService = ServiceUtil.getService(ProcessSubmitCheckServiceImpl.class); + /** + * 提交流程检查 + * @return + */ + @POST + @Path("/processSubmitCheck") + @Produces({"text/plain"}) + public String processSubmitCheck(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + Map paramMap = ParamUtil.request2Map(request); + Map dataMap = basicsetService.processSubmitCheck(paramMap); + return ApiReturnTools.success(dataMap); + }catch (Exception e){ + log.error("execute fail,catch error: [{}]",e); + return ApiReturnTools.error("500","processSubmitCheck error"); + } + + } +} diff --git a/src/com/engine/common/exception/ExceptionUtil.java b/src/com/engine/common/exception/ExceptionUtil.java new file mode 100644 index 0000000..d48dfa4 --- /dev/null +++ b/src/com/engine/common/exception/ExceptionUtil.java @@ -0,0 +1,17 @@ +package com.engine.common.exception; + +public class ExceptionUtil { + public static String getRealMessage(Throwable e) { + while (e != null) { + Throwable cause = e.getCause(); + if (cause == null) { + return e.getMessage(); + } + e = cause; + } + return ""; + } +} + + + diff --git a/src/com/engine/common/exception/SalaryRunTimeException.java b/src/com/engine/common/exception/SalaryRunTimeException.java new file mode 100644 index 0000000..6b26d4d --- /dev/null +++ b/src/com/engine/common/exception/SalaryRunTimeException.java @@ -0,0 +1,15 @@ +package com.engine.common.exception; + +public class SalaryRunTimeException extends RuntimeException { + public SalaryRunTimeException(String message) { + super(message); + } + + public SalaryRunTimeException(Throwable cause) { + super(cause); + } + + public SalaryRunTimeException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/engine/common/util/CommonUtil.java b/src/com/engine/common/util/CommonUtil.java index e7ce3f3..6003c6f 100644 --- a/src/com/engine/common/util/CommonUtil.java +++ b/src/com/engine/common/util/CommonUtil.java @@ -1,8 +1,15 @@ package com.engine.common.util; +import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; +import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; @Slf4j public class CommonUtil { @@ -50,4 +57,88 @@ public class CommonUtil { return updateSql; } + + public static Set getDataIds(String resourceId,String modeId,String startDate,String endDate){ + + String sql = "select dxlx,dataid,dx from uf_syzz where modeid=?"; + List> organizationList = DbTools.getSqlToList(sql,modeId); + sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?"; + Map departMentMap = DbTools.getSqlToMap(sql,resourceId); + Set dataIds = Sets.newHashSet(); + Map>> organizationListGroupBydxlx = organizationList.stream().collect(Collectors.groupingBy(e ->e.get("dxlx").toString())); + //对象类型为人员 + List> personOrganizationList = organizationListGroupBydxlx.get("0"); + //对象类型为人员组织 + List> personGroupOrganizationList = organizationListGroupBydxlx.get("1"); + //对象类型为部门 + List> departmentOrganizationList = organizationListGroupBydxlx.get("2"); + //对象类型为分部 + List> subCompanyOrganizationList = organizationListGroupBydxlx.get("3"); + if (personOrganizationList != null){ + for (Map personOrganization :personOrganizationList){ + String dx = Util.null2String(personOrganization.get("dx")); + String ids = dx.split("-")[0]; + if (ids.equals(resourceId)){ + dataIds.add(Util.null2String(personOrganization.get("dataid"))); + } + } + } + try { + if (departmentOrganizationList != null){ + String deptid = Util.null2String(departMentMap.get("departmentid")); + String pdeptids = ""; + pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids); + pdeptids = deptid + pdeptids; + log.info("pdeptids : [{}]",pdeptids); + for (Map departmentOrganization :departmentOrganizationList){ + String dx = Util.null2String(departmentOrganization.get("dx")); + String ids = dx.split("-")[0]; + for (String pdeptid : pdeptids.split(",")){ + if (pdeptid.equals(ids)){ + dataIds.add(Util.null2String(departmentOrganization.get("dataid"))); + } + } + } + } + }catch (Exception e){ + log.error("catch error :{}",e); + } + if (subCompanyOrganizationList != null){ + String subCompanyId = Util.null2String(departMentMap.get("subcompanyid1")); + for (Map subCompanyOrganization :subCompanyOrganizationList){ + String dx = Util.null2String(subCompanyOrganization.get("dx")); + String ids = dx.split("-")[0]; + if (ids.equals(subCompanyId)){ + dataIds.add(Util.null2String(subCompanyOrganization.get("dataid"))); + } + } + } + if (personGroupOrganizationList != null){ + Set personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); + sql = "select mainid,empid,filters,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")"; + log.info("query personGroupData : {}",sql); + List> personGroupData = DbTools.getSqlToList(sql); + Set personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate); + log.info("personnelGroupIds : {}",personnelGroupIds); + for (Map personGroupOrganization :personGroupOrganizationList){ + String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0]; + if (personnelGroupIds.contains(personnelGroupId)){ + dataIds.add(Util.null2String(personGroupOrganization.get("dataid"))); + } + } + } + + + log.info("dataIds : {}",dataIds); + + return dataIds; + } + public static boolean ifContainStr(String fatherStr,String sonStr,String mark){ + for (String pdeptid : fatherStr.split(mark)){ + if (pdeptid.equals(mark)){ + return true; + } + } + return false; + } } diff --git a/src/com/engine/common/util/DateUtil.java b/src/com/engine/common/util/DateUtil.java index 29d26f9..989e029 100644 --- a/src/com/engine/common/util/DateUtil.java +++ b/src/com/engine/common/util/DateUtil.java @@ -38,9 +38,14 @@ public class DateUtil { return LocalDateTime.now().format(formatter); } + //获得往后日期 public static String getCurrentDatePlusDay(int day){ return LocalDateTime.now().plusDays(day).format(yyyyMMdd); } + //获得往前日期 + public static String getCurrentDateMinusDay(int day){ + return LocalDateTime.now().minusDays(day).format(yyyyMMdd); + } public static LocalDateTime getTime(String time){ @@ -114,6 +119,18 @@ public class DateUtil { long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); return Math.toIntExact(daysBetween); } + /** + * 获得当前时间相差的分钟数 + * @param startTime 开始时间 yyyy-MM-dd + * @return + */ + public static int getBetWeenMinutes(String startTime,String endTime,DateTimeFormatter formatter){ + LocalDateTime startDate = LocalDateTime.parse(startTime,formatter); + LocalDateTime endDate = LocalDateTime.parse(endTime,formatter); + + long daysBetween = ChronoUnit.MINUTES.between(startDate, endDate); + return Math.toIntExact(daysBetween); + } /** * 获得两个时间相差的小时 diff --git a/src/com/engine/common/util/ResponseResult.java b/src/com/engine/common/util/ResponseResult.java new file mode 100644 index 0000000..ef86aa5 --- /dev/null +++ b/src/com/engine/common/util/ResponseResult.java @@ -0,0 +1,177 @@ +package com.engine.common.util; + + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.engine.common.exception.ExceptionUtil; +import com.engine.common.exception.SalaryRunTimeException; +import com.engine.common.service.HrmCommonService; +import com.engine.common.service.impl.HrmCommonServiceImpl; +import com.engine.core.exception.ECException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import weaver.general.BaseBean; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; + +/** + * 请求执行器 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class ResponseResult { + + private static final long serialVersionUID = 1L; + + private final User user; + + private final HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + + private final BaseBean baseBean = new BaseBean(); + + private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log")); + + public ResponseResult(User user) { + this.user = user; + } + + + /** + * 统一返回方法 + */ + public String run(Function f, T t) { + try { + if (isLog) { + log.info("run salary api , param {}", t); + } + return Ok(f.apply(t)); + } catch (SalaryRunTimeException e) { + log.error("salary api run fail , param {}", t, e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("salary api run fail , param {}", t, e); + Throwable cause = e.getCause(); + String message = ""; + while (cause != null) { + Throwable causeTmp = cause.getCause(); + if (causeTmp == null) { + message = cause.getMessage(); + } + cause = causeTmp; + } + return Error(message); + } catch (Exception e) { + log.error("salary api run fail , param {}", t, e); + return Error("系统异常!"); + } + } + + /** + * 统一返回方法(有参无返回) + */ + public String run(Consumer f, T t) { + try { + if (isLog) { + log.info("run salary api , param {}", t); + } + f.accept(t); + return Ok(); + } catch (SalaryRunTimeException e) { + log.error("salary api run fail , param {}", t, e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("salary api run fail , param {}", t, e); + return Error(ExceptionUtil.getRealMessage(e)); + } catch (Exception e) { + log.error("salary api run fail , param {}", t, e); + return Error("系统异常!", e); + } + } + + + /** + * 统一返回方法(无参有返回) + */ + public String run(Supplier f) { + try { + if (isLog) { + log.info("run salary api"); + } + return Ok(f.get()); + } catch (SalaryRunTimeException e) { + log.error("salary api run fail", e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("salary api run fail", e); + Throwable cause = e.getCause(); + return Error(cause.getMessage()); + } catch (Exception e) { + log.error("salary api run fail", e); + return Error("系统异常!", e); + } + } + + + private static String getJsonString(Object apidatas) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(apidatas); + } + + /** + * 成功返回 + */ + private String Ok() { + Map apidatas = new HashMap<>(); + apidatas.put("status", true); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + + /** + * 成功返回 + */ + private String Ok(R r) throws JsonProcessingException { + Map apidatas = new HashMap<>(); + apidatas.put("status", true); + apidatas.put("data", r); + String success = getJsonString(apidatas); + if (isLog) { + log.info("run salary api success return {}", success); + } + return success; + } + + + /** + * 失败返回 + */ + private static String Error(String message) { + Map apidatas = new HashMap<>(); + apidatas.put("status", false); + apidatas.put("errormsg", message); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + + /** + * 系统异常失败返回 + */ + private static String Error(String message, Exception e) { + Map apidatas = new HashMap<>(); + apidatas.put("status", false); + apidatas.put("errormsg", message); + apidatas.put("error", e.getMessage()); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + +} diff --git a/target/classes/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.class b/target/classes/com/api/attendance/attendancePlan/web/AttendancePlanActionApi.class index c9ba7e911222e6e297bf1162caa5144955c52b9e..7f3bd51c80d0200d3b6fcd12a7c129a83dba5264 100644 GIT binary patch delta 16 YcmX@XdV+PsAx6f6i3?;V-)DRY06I(uC;$Ke delta 14 WcmX@XdV+PsA;yXGWhdWfd{#j|0?(62ZjIu diff --git a/target/classes/com/api/attendance/persongroup/web/SchedulingResultsActionApi.class b/target/classes/com/api/attendance/persongroup/web/SchedulingResultsActionApi.class index 3483ada05142319ee22e0abc609441f8c9749c81..8be4b4d23e87f7d3c89b24682c0b52a4dd70ff0f 100644 GIT binary patch delta 45 zcmX@ddV_Vtaz+LBo)-V*v!zv!wyz6Ji=NJ4Xk(Ym|@AdlA&KXU-Dqi z_Ro3Y%2N3QhW4ShI=&{K?VS-rbLdVL!%Cs8dQ(lu%D)q1LmCQ}!ia_OY^sANIi6x8M;jf6mnn_1B@Ogu+3WGl)%b5CnrVjB-}iMS zWOV)mL$6eEu|kID+jXzp2wU=@5g{Dx{JCjt(KWQ_N*LA?Fyb1-Q>XN2BypmQXlwT~ z*vHzuOnZfCb(G}wHA{Symg!Q@+vnw#(NFtRcFOui>1rjwkX qTacfZnpdJgUs|9K6wS@gD=o>)(GNffZ{`-B$_oIHf+KtY delta 53 zcmV-50LuThL7+jf*#QAiv)Tcy1pzdZhX*(TGqb=4@&o};liC3(v)l{;1_3vd-Vzp* L{t_3nAQP1h6_XOd diff --git a/target/classes/com/engine/attendance/attendancePlan/service/AttendancePlanService.class b/target/classes/com/engine/attendance/attendancePlan/service/AttendancePlanService.class index 452e33b6af0cbe66ef8dfd757639b8c5b72e90af..194e40ed8ed85d4c6b3ef6c33c85513f88f662f0 100644 GIT binary patch delta 13 Ucmey&^qFac1S4a?WJ$&-03#s;EC2ui delta 13 Ucmey&^qFac1S4a>WJ$&-03v||3;+NC diff --git a/target/classes/com/engine/attendance/attendancePlan/service/impl/AttendancePlanServiceImpl.class b/target/classes/com/engine/attendance/attendancePlan/service/impl/AttendancePlanServiceImpl.class index 29d537cf6e8ac81a1678955080f844afb6096eb2..13523547540cd7cbc6a27a5f1513d4127aa052c7 100644 GIT binary patch delta 51 zcmeys`GIr7RK|kI+nKaB9_V2NvV55`!TcQFf}F%W{o>T3vdrXE{mG0>qMKcrS2F?t D0v-}O delta 51 zcmeys`GIr7RK|eG+nKaB9_V2NvV55`!TcQFfSklU{o>T3vdrXE{mG0>qMKcrS2F?t D@(&Ta diff --git a/target/classes/com/engine/attendance/attendancePlan/web/AttendancePlanAction.class b/target/classes/com/engine/attendance/attendancePlan/web/AttendancePlanAction.class index 1ba19d61984fd31c53ef7a654fa4c21b439f48dc..4fc3e03490c643bcd0e87e5b593ea8e893f834e9 100644 GIT binary patch delta 63 zcmeC=>*Sk|#aJ*gyNj`4*Sk|#TYO#yNfYk6aZ$G5JUg~ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/README.md b/target/classes/com/engine/attendance/attendanceanalysis/README.md new file mode 100644 index 0000000..123ba41 --- /dev/null +++ b/target/classes/com/engine/attendance/attendanceanalysis/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤分析模块 +## 用于计算分析人员的考勤,算出正常上下班、加班、早退、迟到等一些列考勤项目,并入到出勤结果表 + diff --git a/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class b/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class new file mode 100644 index 0000000000000000000000000000000000000000..ba163ce9b6a5b58efd5d1a98c5678642de123fc1 GIT binary patch literal 759 zcmbtSO-~d-5PiL01IzN^DyXP&xELVBj)^xv64;H2X2AoY~^b)*d)l|@4CL?t;h{gF*oeyW_V>N(j8nf3z1QECfGX39-cg+OMkOnMtC zqw*`Sy*#st+`m@r&*={~c_k3hXG+UZ4NGWZ9i3#3XsE7+swPKg>O#p}nW;PuPMazB ztj&}k&5f?<&vSw9u`OLn?{xL^oBtg7yz=XzgDApg50CJeui`1EG{mJRr^kC3l&R}>=j;fIpbhE-@~|lunnOow6BzL_i{;b+ZwlEr`J<sw!g#ES0v=2tvsxH;kgq76>hlu3=x(gVf(2qjH1G3GWa0>0q7m{h^5$>M literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/component/README.md b/target/classes/com/engine/attendance/component/README.md new file mode 100644 index 0000000..6fc597b --- /dev/null +++ b/target/classes/com/engine/attendance/component/README.md @@ -0,0 +1,4 @@ +# attendance.attendanceAnalysis +## 考勤组件模块 +## person_group 人员分组功能组件 + diff --git a/target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCmd.class b/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.class similarity index 64% rename from target/classes/com/engine/attendance/persongroup/cmd/GetDatatableCmd.class rename to target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.class index 59c54b2e3b80aaa777e0a888f9d045c56969a8dd..880d4e2e4e4af5ad31d47ddc8c29fb63811e9466 100644 GIT binary patch delta 265 zcmY+2%`3xk0EeH?w`G2{GSN8LjBS?p_jEY`RJRzT|gqno}))3^vq#%*kI%zaZ;4fB*mh delta 279 zcmZvTy-Nad9EYFp4=Dwqjwri9v$Txfjv$keUXGCH3d-1Nu-IQ2vyLQ?zZ0G3Mv5l(h+D^Ud)ND@= zC;g6?Jww@lyRV0@LNe&xN6ko#5W_^!{g3Fgx{T9DBG?FXBw1mUB4gA^aY33EU8 z9T_@I^1u|2O!LYN@67TUyna}aUa}HrQ8MIYo+Yu!ONC`=uqsVVX|XQ16r|0DblH?A xEO}u|-Vzk$n;m7atMZgofjw2CtPZHC6ZZXb|DlNHb+xqt4TS{(&p7|H`wPT>J|F-9 diff --git a/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.class b/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..57b73f54f69d5a6ba8bb98c8818509a12e13e32f GIT binary patch literal 3515 zcmbtX>vJ1d75`mH)~?p;I96V$NgU;EJ5JV3Qxp7(9lLHRj$5#sK0=|Z)mmO>wJWby ziJed=uNG)|zuNGT8JK=xhNqLl41WMKeC9KM1v4-M{O)RHuM|^Cv8~;6&OP^>bIb8cMKKl)GVLMMXu$stQNNnu?n$ToqLno(f-jsi|1+Mu57CQ0g}{+`?^* zD;o+nHQd2n1)md0yM9F=zu*TIqwcO;S~C{>O2rPw1$ruWNM_deLVF_=7#bK{u>7iF zdlkpC4U$#gBNsa1rg7D|v!lz+nOVPV3-m5fb+J(`*}<||aw(xJ%XF`sfg|}?ma#iy^dNOKuQ1`t`;5TZ9RV^D&+TolT@|U(|{e~CLR?GCBop3xS zoT9gZg*Ee*X*5E|HLjVp@xkj{t(k#YrN7>eMS+9u(QVdR5kB6oI?-fZ)2kRuVc>X` z@r2}=(wc3B<5P?zx8zhjGi(Gr`sI#bKA;g9vSM%8RwJa5$$?~&EI+UfhXo2OyB7L^ zG0Uo$UO6t>_+We33}}z6+m437@c&|u2a0mNXjY?IM#)WPfeQ7|3}jWPps<2XDpM=D z8-zuzROTyPUv~xeCW2dV>LH`kEZ-|Tq2qfjk5Xn~Su}xD9h%9^C6e8<6q?pe?ucMT zoGW-$!RHlxLBRTd@|N`XzU7|&FkYhk#m5j(CoDHcZ+bx1zT94*sOw739b=|c4+GN* zWyyUnE_@tm3-2E=aEVlH$!`!v^N#G&!fuUqK~`JGqj*-wW4NT?H635XmlS+i$5-%G zfkT~exY}^svKv1;hyZ zJ(5WX2Ai?;QGvdMbmdMgznIi6Rb%O6N$E;SN_7liP~gaJ2`duj#j(4@;CFO<7vE!4 z&CydFE8e*K>dQL5j~^)bp^hKn$2vZSF@ZVuXKTcM=n<&kZ5{96p1`?;Ig)Z>|3~a_ z#J6d`?`UEBc2=7;j6@OmWJB}3JA$Z@)4Wpz&cuT-3H*3cB}D@JZrkQ9J1{D?X9uQh zJjXFE(Csx`_hPdT|GTlcUpe;8T8;Ba;C#}3yqt936vfzOXQ-jya<-p$VCS)^aZKi| z;`Y z-Cg#h>W=Q>dKbG7UrL8MPczTC<_DX+P3WNcjYQyd()_Gz*6Y0AI(LraIKSka<(Dpj zM`Ul3>LNXab9@ey8|Iq>1u5}M`NVlXvyr3^7f9>PRTvl{CphmeQcLc9f$tRG+R%N7 zp>w}O>R05_k%c{c1N)G{e&lc))Ns73kdr(1#XE8Z_56F-pThG6wUB92 z+>(v9Y_)AUu(PGm6>AA;247YHU zbOF7DU_TBM3`a0U*&>QqB|xh0-bml4wd>p804i69?H6O>kt$aM3*QcI@Rism*;`c^LetB)0GpCMQZH{DRQ-0 z(YO^0$CCD3f!Fyevo5KzCuQ;c;LH^~(0|=^|6N}^oH%F2IuceY?#t7t6-y;MBfii) zc5;QUl`OFn?kZOqhGn=|?##Gd3(_76S;=qBz;w2yf_DG1m(!xIJrbaUCmn^k1 z$^p5T=Ab+xC^Lj)mO6RCA$iMTc}KncqCu6=s5~?&KSxxMW>rs%I>AxZ$uZT#an;93 zHAbtNR delta 500 zcmW-dNk|l67>1wk`~Qd`LKvZ8kZeI)q?{H?Dax5@+8f(UbH&t3oXxRuqO8fBB8|pi zw4$OQFI_5i4tD5LhYq$tbn_4x8AOMmi0D*Pm-l_%!*h8j%G2eePego~QE_G8$v1~o zWX5D(c6!c3BW3^46>W=kMZzayk$BY85($MO;rOZcpeOq}@2yH<=8n_nScqj24i;x; zoQ_$^CFHS`LY7g=ayC;!fEAp~tsovcSw)J~+-40UtmP5w7-u~bY~VQ?dBr9^=d7<( z@Dne8@X1`ZNC8`=7{8RTUHt5j{p^%Fc1bt8CB+^|vsZ@MC-;*C znW9QQa72Dnt!`?xn4{{YRs+;&74_OggSOMC37WK*X1&WX9iv5`(yA|L)Ats%-n(HLpa!AhoDCKQFx~ zzq9}(nwy_jT9TQgAAk_vyo!l~i^YVIL3#2yCh^HYIKQ+gIn^yQCzX+be{(mlCA*k8ZqwLBpUDCMJ=-S1 diff --git a/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class new file mode 100644 index 0000000000000000000000000000000000000000..39b5e85476392061b7dd562fd412e3041b301fe9 GIT binary patch literal 3719 zcmb_f`Bxj)75+vNjF5(a727dx>dJxGAaEviNL(B6hBsWmwM9rBH+4s&hcqyn5u*`c zr)j!xNtdK+y6@@UI%#ZhPkZ`vPk-y5(f$QJr%k^%8d)Pl)1KpUU}oNZ@7{OscfWV< zQ-^7Lq7QVL6E*xyVXm5lcx7%YmK5hy$jVUey=ff?hMrqFA@-iS8SwZ<#gyk|@<} z!^_{989ORt7`GhDKT3B8hvpR|Ch4kzo@wqhTdx#^H)j-VN(g{y*z<;G$#E!5_+^XH zoWB?MTK=4O3v@^oYr?Gi+*0A+jtH`+*Gy6ME!W|yv|0B&27bzrE913gTS2mD_=ZGN z!OnJXuT`5KpWTFPkhvfcGe&hhvR#D-dn{`>#Vix#i}8tLOjqmlHd3tOlNvsSPixqZK|dm6rvAE@}D zh9BX_8h(OTHT)Dm)9`bgQE=`a6491?6~EB%OZ-Z~zExq6ySnB0!doy*QEQeRp`SEr zV$yRRp6NDx8;454eJv6;PHd(nn4&qucX_gtmxl#wh?4{OEsMQj$`Y!; z8oZbC(#D52;1}u+n+b#Z~cYAb$4qYPEJYmx_jUaAG#PSHrMUah(w-AD{hNk3E`64}EPJa9Lk&+r!F zdb|*I5!=QMO2NZXgqz3sZp|?jH#EG4n;K5bO7>7I9Lrg8mxMkYbX!(ngH@=pOS;k; zsaPlVr(JicPI72d4zm<&CU}DX5_KW8*Qn*^*d%OG8)ztwMR>BAk8O%`ylzC7|L>EH zE#F!VEZTd zpUWW}$Kk-iQ93b7HxJ_o9j7~?s|ieCjM(rPe>d|^d&~tk-dq%8+a(jxpZG*cmw?e z?ajZ+JjEGm6P^)t^ZvD);p`_ckKs{VWXcQlf03&y1V`pCM^G*@u(LQ9z~hAQ(0f8Q z6+|?K^8q}^xxNSSe_|pC{oNz~AZAHS(_|y?y?o1`uFSwX9)2BZ>5~%p)EP`s8#9!} bFpD?%PEqHlFQyfh3u(}y=u%ysbjwQ+l!pj{ItT@k*XsKD!uM9yY}NFXh~LUdsjWLS7!Cyk z!I<@JX=VPGd?=Du>#3Cd6>6pBKXc^=Y>oP#N1=Fy-4}>NL&3gCC?3ww7r$I0%dD)U z+E#+0lp@OVUmUY0xe7b07hx^yaIuN?c-erDa*pBV1QjF}HN_Uj*h&Tu6Kv-pJ9y4c zUQo>pyLd+}AF1Ofd!&fHvXOe(%s#21QR>+*4IGdrd~%p3>7ZG3AMl}Z5YujIjvos(G?_hvXW7~n{&FEly2v|9^itGGp0wm zsMB21*GcOMF6(Ko=(k+e1uXrZas7#m{?0Z1n;XW?O|zWaW({|Yo4aNk_l%dU@iA$7 scwmA&HbXoyF{Vs{oEc%-qeP@k0ta+#B5A+6&cK`qY delta 510 zcmXYtPe{{o9EP9I_xsIQ(xq5qG7n-ArL`o=GDvF%S{qIKXOc?(pXoN;rX|%Z7O_}G z{A?usp_CAz+2BVViZ0dFNrym>LESplLFf?e(B*~qd3i4Ha@~`<{40@@R!&@YL7eL) zU@giPt01-3A;$(e{=Ze)X-7a8VR3Xt`^I9C@W5Ck5%u;&Mn)pxL_9R?wcQ)vuPeG= zH`P1b7|JNYW0!AUHpvP~sl>&$Vs2*-JMd9OkX>}(Wr!Lk*h`9iq^Tv#LFPEjJoUWg z2=6$`5{-P}7~g2(56x1-38}&_H3X!ApfuAWep;o4Q_{w1>EeuZb526ENi0dbjB`OA z(jg0U$_KjSBNwGWx2)15Kj@X;^vN3i%Ef@HW>EPFsk02J^9-wg!YWQgO%YWYMpc%W znkBAsB-AIy)e@K0Dp%A`Ce<2Owc(mB svS7mG%qWW{&TBJ4-b`Yf6mMt;JLKM}Wzd@T_@v2N@id6ja+mM_2Pfu!^8f$< diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class similarity index 73% rename from target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/MonthRegularScheduling.class rename to target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class index 26523b24a3ff8a6e86ad88b5b9f91011eb0f8e65..2dee4be64aec36961439319005a44781ceef8fe0 100644 GIT binary patch delta 119 zcmca?)n>h6HzQND&*c9cVw}nOxdr)osd*)n^Eg!|TX2eP=3)B8#u$lJQh_l9ReW;U}yB^ zVf112Wn}Qes%Uc$Cnvj}IaWFSg4Cko{Jiv{{L%t_po-l5ywZ})9R1BV1lI8Y0CTrD AcmMzZ diff --git a/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/RegularScheduling.class new file mode 100644 index 0000000000000000000000000000000000000000..6b74e3964d5535a1fb34930aa323293aad2dedd0 GIT binary patch literal 325 zcmZXQ!Ab)$5QhKMwQH+_c<>q8i*xZHtauazMd*qLZ)rNjENc?76Ccil58y+I=@vxv zG{eU~|NJwbU+*6PE^u7qu*Q)>J>(ce5`}7UyL>Ldgx8pb6;2m-oqp4l#r1TrW3zlx zn6=J&EjbmzlsZGMr5b;m}U>(OT3hMWxFxW4$Dt=Q&Xr`EjiCii9T ze7jiTv1B3k)_Eo^!hWN@VcI4Pp1n}yGz4!`$dS6Rrs2ndL>qBtpnu*9C*xUT%w4Fd cg2JRc2AEU|d#Hd?_c1NJ-clTtZZ>xFZ^zbL=>Px# literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class similarity index 64% rename from target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/WeekRegularScheduling.class rename to target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class index d494078e2af2f3814e907dafebc46a69364fff5c..4fb879a9bd54b2a0a0090547b3c7eda09bc7f359 100644 GIT binary patch delta 629 zcmZXRO-NK>7=@qr`>x1jM53l(A@P?l(=nWkx4Gc|Ju9h(So2%|FT zhi+DAq2a=$1nrh)KSLW=(IOYE%5WF7OWFic)24{F&*40abKV#A6;FN?skas++0knH z0;a#sAGD?%nO3(W$<9$pu~KJ!l2!kOYi0kx+@5kI#QyeV|M9p3Z5^Ga|9FSl6>vwX z&-8Z%J*V7Nf3f{_<-C$4Yc8S0kwOfq#FA#ONVJTwi#Re!CX;onXA2uBViia^iVIoVGheR8f1`08Rv-1&?FI>Wr3rzM2kwGRi$%GxoB58oKOXL)GoZL zhLfrhpYq^WK}>a-fVxSC8lh9!1XYC7>J1^a$Qkv8v+5h&>L)!qj<8PUoX(c>bmY!um&v9GNb4Pz*P=97fFLBp^d&V+` zjb!c{n;12=F=piRz$jqcDCUt-!33=!rMM)bLiq5rMwV15CIQlI=jv)*G>Kx03!_;%W4TY23`PgJ%>oOGR|cJj|jF4AdkH>0)lW9Qf@(Qp|#njfQxRJ(LPT&4MW^JDDF zh_9Mu)G$Uiw|$YqVdgKhC7Zu6{b%!Mvzg7f{`24K_1f#NN3!fwY3hrp;07~gn_-UH zTxPc|&+@6fY^nNhnj`Bcn>A{imMy-?=!iAMTceStc(gs{sgH)k(MWq+sKsNs?PE&v z&0o3YwgR%4O*T$z)pXNHxX8hcgL$}^&q9i+poAbEYFR`xOX$GMF?=LhPA`6Lv68!# z^MuumWZv&t!w1$fP9?vo;t!hyf|A8%v9m?;sg}8H6*oJ?$4=SCE@`GlPEaeS6YQ3Y z?2$g|Ksn#nVivX&g#XS)AcJz>HwX(nl4?(dELwf z-9fkR;*##c)cy46L3;HtSM^)^^cdIlXRhn-+|U#B8!%u@;ilo>wo%L-!^?eR8H0wO z2SynWjQ}ajJ1e3~EfkNK%46&qx&nqM;wcLl&QOnJXrEEWa{|0zBWbqtk{Vvo$ZJBp YF~1dtrNOLnR!F6J*;y_Q^P_X=KXy!sr2qf` diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class similarity index 73% rename from target/classes/com/engine/attendance/persongroup/job/scheduling/tactics/YearRegularScheduling.class rename to target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class index b5b77e03ddc509616a1daecab356026a1657a019..451219913e78ee2c168c7b4197262d588a019da8 100644 GIT binary patch delta 206 zcmexuyTNY5c}B*l$rl*KIg|5q3-a?)^GYV~=2Y3t#WagqR4^woHz_4i1te8klB!~8 z%*dcJ*-=1v@_r#U<sgMlv%-Ouon{hHCy~E+)~* yvpKmKLr~>5@8;}c2RTOv?i~Gs)S}}2y!4{{(gJ;;Xl{NU*yaF)@aAH{4qgBXy+^SC delta 133 zcmdmB_uF>Ec}B*7$rl*KH-BW@%Pc66lbD;7lBklLpIcB`lB!}j`2edfhN!{j|E!VB zjDC|ZGKx+9$Y{aM&KSYN7|9sL$lwJPQ{McaGmV|m9K;nbNG&SP&r2`LFD=jqnw*=T PS6Y&pqrZ8DUpW8qT>9#^rHOI0)3!pZhl^ANoJ0I M077{4K8_$B0PvwlU;qFB delta 92 zcmaE;H9>2GD-)Bi&*X`0Vw=;MqL~@(LCnb;*<>dFXPwAs1?6connGE!lcm`AFnWV| a-`V3BoxrRzjxa`ZFzYRc_-202ARYi{Y#jms diff --git a/target/classes/com/engine/attendance/component/persongroup/web/PersonGroupAction.class b/target/classes/com/engine/attendance/component/persongroup/web/PersonGroupAction.class new file mode 100644 index 0000000000000000000000000000000000000000..74162783100612fdbac86493fe67ef7d278c1928 GIT binary patch literal 2999 zcmbVO?_1kc6n-ylNhzH`+1LP`-H?sZZP_O1q_~MV#z~x+-!gp}tVnOmGNr(L$#iSFbSjo3bt4F*vu-%1 z)G4jIj&uUOEwa`iUkYWnl`OVI z%FI_s7a37BK0 zO=HX02{W)|pjU&SuFrE(@l&uYA2*~Q6puXS6Bb_qcONIzfC+w3xoNW6FA*mF7h; z3Y|!6sEQeyFti$ z^#c_jXg}|{>kU)-ypsv!4!hbmEcV6O_9&KAkz^pfws3~pOqs4Hb+(o=LvuquOFdJs z+m@-?dC{vFj`eMr$$_93S5zj$`hQ(XPn&i;N0}A3;hA#IQd2X~GILR*Usi3D#Sn%C z7GGtGtyEq1ZFiaJ)qjEV(cJK| z?AYQqX25(~q|fsWXD-UNJ7&0RAs1f%zfr|p+(M{(NHs+V82R9x(HF!wQ@567(D0m9 z*R@Gbn%^+VB;1X}^=NuI^rg_d|2<6F3R_oTytSYQ33RpUx!a0Vit2qD!_oH235lsq za%c$o7X;c2T;SyXDCZ0_a6Pt37uzKIfDjmM4S25u_unjXs{8qI19Xs_IKJVI7;StbClKgR+yKHm;Zz9isg09XY z5gPlO&rZrF3Kw_Lxlq`JHkBOz38}&4rC*UwU@A43+C|sXg=gr_WhpzBK<>3%&n|kO zhE|o$3_U5or=f8@ON%4)`4)p7rS=^CoySFtg|W=@OeZxX)F*iAIM1Bp{UJ)vbC(K% z7{di>)hAyRv)YZL5PF=TtxL@CGW7#|MmF@O4V^ZwP}d3ZP{UPR<9?Xd-VW^vO!{~S z@6y!deFz`d@g5b&6sS|&?5)KnMt|{cikgB#XF-8O82UOel^jeS0!^+7jjG}vG%7vN zZ;GD#=<_7Ko}$AMGOH@l4eC?Kg3=ML%|Y* z!4KZ&U`*5Jgu=kb`$vJ1W^{YqcZPS=uPfKTi{n3{TXmfXt53YSKf(1TpB?z%UlZph AH2?qr literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class b/target/classes/com/engine/attendance/component/persongroup/web/SchedulingResultsAction.class new file mode 100644 index 0000000000000000000000000000000000000000..7b50f786c0009f5a6238f1cba2dc0a5878a8e9ab GIT binary patch literal 2418 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 O-s-{6;&YUyF#m5ZhIak{ diff --git a/target/classes/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.class b/target/classes/com/engine/attendance/persongroup/job/scheduling/SchedulingJob.class deleted file mode 100644 index edeca6d389f36d755d827c7de103f9989907d4d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3659 zcmbtX`Bxj)75+vNjF5(a727dx>dJxGAaEviNL(B6hL_+9Tw8?HaT7WkJ;cChMvO*) zou+Hjec#i4PxsbIV}pCz)1Q0#TmOvqFX%aK`n}P}8X20_ryQ6!@4k2MyZ5`_yLb5W zzi$5#z$k8~Z~zxoyeoy6952c7au)_rNMROFB{8Ss=@j0LD^mDO5?9lB51!3X+f1Vb zp<*G4vJ@^RF(fxxX)IwmiD5ahlNga>C5a1C?xf(NDm7Qq@KBQvKZQD0dur zGFRgz1`IUCZNn)2-;j zDO--v4c`||$#6`eS82?3%AQ-V>Pv1>ubGRYRJVD)?i;3WnKk{gDA#SnE8JNbJ1#vR zw;anqPA3P4<`g6*>7at1JnhfaD@EbW8bzBDhHV=5oZ(q=9tsowqQw|a-n&yRFD|%6 zx}l17Vb*;fr0{Q71jV!Krl|Us>u^`vtb3kt{4<8!8LzF_3X&zmHzaZjcDMU@t=jbS z{1z00ECrxX8`bg1abeOTl8eP9VfqA1!qr_MoXgY+5FkBNykEr!$UmmiHY&xEF%X6_ z@HkN$jGRoZF^Tb>HP>6dxJqcPikNgORmOc;(m_G~-jV#z>6K}0i@W@AT+9m3bG?Rr4PU~S zH4GuA;wu`yimz!HMoz-b%fdfp+mp6YtDU|!)jUT*e|TSl`WY;b4MjK{7RcS9 zgCPgcFw2sHJe_tYqa|YJV5r_+koQHP3XKFrK2w}^T}fq)h6*e8tlJ3UNYt&cLR{Ti zBDQh0_wHuF5^FgNu7ZQx*xbhCTnfL&Z&(te+ryGH#Ki&pmPOn!Wsy`cKX~s2q>Tk_ za4*yywhrF%N!O{>D?z7I*~QKp=AwdZ=uv>&)~&MAbp(`Gkc&FMwZhIWdhVKRD?xee zZZU=xlVzUuQNcT+Cc^l)forRX2AE8;dK&{#a)dT{heLLig+spDdV^YNr*7Man>7D# z#=;m`WUUtIn_LV4YhDJ~`xcGbj990S?7`2FAWkr8=k6W%cC<>2yg2;+poLY#u8WK8 zLEEt^8fB=$Qjb5bohc8W%7^=j4i=tg32O8TMlYRKNC;DNhYe2(7~uE&p>E@IpG z3R3WJ6yfIOy<2lk#SIOw;--ePvT8ll3deF*-DRQYgD%QyYq0h-PDxim-LZg@z+Tz%_!g7xCm7jzf^j4q*><5o4`h$> zGgy)BpU=lAIgdEsfL*y;P;$RV?8+^~Gl`q%cpaTL0+mrd@8dS0m&*IG6a9FcGp(VB zCvb!_Ugm z#PAAs981Wx9es&SWa79%v;Fk^aB#GAsBJ|4ZCeAviLBIf8PDft|;b0X$9!54|U3Q$a*yxDdc| zlKXoQ|0gDb(BC=o4`P-?o+cZC@8>9gx-tVBc=$D>rB6!WQ)jS5ZA?=Z!wg>Mn4%JwDEZ5AadqWCJ34 z>Y}KsuI|sT_YVLUIIeM6<4B<%a*QE~LbbSEJ{Q7-*O-MBP8au`e$$l2_4J@)vwTvR zwa$7iITgX>AHmg5-)nEFmE^o_ele?c$3~j#F=pO|oDAQ%zT})evdz6tt$E>1?u+ky zyIA3_bRqWEc_uBwexto%ikybvZ3;P37uGcV_(-%7X9oJ0sBkhKGnU&`nJOqu$~%Bb WrLczzD03gv!q;0C2L;VWH2(%`ELhzD diff --git a/target/classes/com/engine/attendance/persongroup/web/PersonGroupAction.class b/target/classes/com/engine/attendance/persongroup/web/PersonGroupAction.class deleted file mode 100644 index a8f7bba8f9d573fd73d1be8430a5a674da9f34a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 zcmb7GYgZFj6y293ObBCzpeWGVsI?+dM=ew(6r~i!HUb5t4{PgWxP-yUOq`hjwyXcC z&sEwFUH#nti~f+V?mIKY1h7z8Yv$(MbNAh6pGWfNKfnDBU=+`DIEg6@@8>X$4>Zhl zp%3?RxR2Q!9^k`nr14P>Wjxd{r}pNvSm?&bSj=K6i)FR-NI9)!@ri~{bNCFOYj`Y> za=fZQzU=u`BXHJ6H;l4ZtxCTnaJ*s$wiU>5N&1_%B?TtSmRB>RTeV$jm|-a0RnxVk zQI~$;xmDk5)Quo^HWnh=ePv6|6S8x{cI|MI*A8D=5lByatAssXCf;15R+0X)S#f9~ zAIo%BOy5?Y6Jt7Dw*!IOMD|TQr`BSdzg{F#>x$jNl+X@UnFz(MR6C&ScTQI|Q8Z(=w)1YKM#=eaAxBL6v zYQvHN&*Vb69U67Vv{@JD+F2~9B*{?vZFC0Ppe)aq21`r95Nmo?9gn?8~05eERvk@ORT!1cIE z{88#exYTl@cy7q!|h1lw|K;`i6|G)FE<=SM%7224- zj5q44INI)HhTVv!-L0dtN~Ueg$lO(`Y1%h)_n*1&3Vu^{dr^iB-(B`RhvP>J8Wv{- zSLc&_G;cX@?Dy>bR^?!d3RYmGHKF@QB+JLvf?LRFYK-lXn5 z1C7sNB3|O1BP3nq?q%M0h0m)Ims$FBa_2nW;@vt<-~!&}`9WGQa+QgM7$!nW@k%(W z)dt#ofQ}h@Gfo=YV0vYfLplD zjblpGaV~bBrKU!I@oa`WMWxQ15{EMMc3?a`kUl_~d{Y{g#a(Gsc)$dK-a{`YxpRjj z{Vrvgie#DOeg^qSj1)a$G1BzuqoA=E#ikg=rWnONV#F8*DaRN}mP8Exe0?d#1lf!# q4FVE6M2sx??pEJfo>6~Y`Mw>T_z~Tz>O_=%>dm!syu)_~?*0pnr4m^H diff --git a/target/classes/com/engine/attendance/persongroup/web/SchedulingResultsAction.class b/target/classes/com/engine/attendance/persongroup/web/SchedulingResultsAction.class deleted file mode 100644 index 08b0c363d971e9312f4d17fd18b6725b8a23f465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1803 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 R&}GULp_FN`=TWAh_+JA^j~D;| literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.class b/target/classes/com/engine/attendance/workflow/web/ProcessSubmitCheckApi.class new file mode 100644 index 0000000000000000000000000000000000000000..46a6395374d57f5e08f01d5fecef1a7f5acb3e01 GIT binary patch literal 2327 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 BF2(== delta 1040 zcmYk5+iz4=6vlu1blS6L<`hc{7KX_O!~i zARs6gfq_T=0DLp^03m^Q#6Q6B05QJ!?j@#Pzdh4NlF3@%UgukvZ>`MNo3AgL{_dY! zcYsw~OVLD+Pj3p39?KifZ+B*gr7z8!^rv}?x6{1CyUx7lGms|WeV?6{4=jW3^`XlM zQ_N$RGeef$mMFN08>vmCID`%I*Wne>?|_LyId zztiUvpHGWj6(gpwF`2DsAzK(tX0sgRP{3i17)-NB0Y^FJGaYc86UqqqjFSPUI9<4% ztWWT{zz@kM2RXy(K*?tVzTnG%bDUR&7K6=9h55;7A``HjW<%Zna9`9lG7*i(eFyTH zwF8HbYM2WF7x~KIPmb*l<0xaO%uGbFymoMj%Z0vFd!eTK=}xW$6u4@r84jnyTs|Dx zlk43z91X>W>QZPj-kZ;D3&#w#|G&H9XgrKZ#|u&Qk$I2s`l7h_uzIB_{8ZOHK%>^$ zr0W?P+^|9kVXa2CRj-`9CZaNX1M{tb$1}23rJ&_m;h;>QO=L*2f|X*m7Jpw@Wu_hZ zIZ>d71GF<*yck-*|x+Cs&h(`x97bTC)MA(zmOQ&vvxRO$vL zG*J0BO=VSo63*cLMOF%D*fy(gD^^RMJ9uO1n!01{(wi(RQtys#9yz+-pvv6}daAHW OKBdor{@l-3CI17ywV}!Y diff --git a/target/classes/com/engine/common/util/DateUtil.class b/target/classes/com/engine/common/util/DateUtil.class index 0b8d0f416b2841d5003d64a6ad43847ae0599e2e..24b0d1494150fa41862f774d6693365b0a8da724 100644 GIT binary patch literal 4335 zcmb_f`%@fM8a)m3YQVms#2*oL2(_&J`G+fyda;%Qm?g^X;u&C6{;))q}TI49F3xht83@UP46=Xk+DxNiYyJ+GPF3a?}6n>e)uTuDR3cpF>`6OO2kh;vje137! zz@1a)?Pu+rUo1Phb6%xv`?)dOcV;<1rl!7AIcT80c4A_pTwYx@V1*Y9B!Vdihl*~| zKVqPDaMx)Au~Bc)G0-tpbe-vHdETka+Vdr@WT(6ZyL8&F6lJa#WBziH*gK{cymHQQ zmv|`0VcBzYRlitL%uaDYLT&R7={kAO^_LCYJs7xAvfZUz!LJnErGvX}ULqfHRIDqn z!`lsHN{VYIPr2SjJ#1fc{LyNq;<&zSHgMZuB#qEMQJN7E zUbB~1I7|m&pza2`ug9AyRaeLC%UmCvjKpnSl()vDfu8G6=8LXAn&gYX=16nVgiY>7 zpA#j9MAXg{e0$+S-d@pR>mcM&$3NpZ?u1vZFoNAt(8uZ9s&7}c`P5>yV*5qUrAi^C z$Mh;i4&lx@c2it>tK+F?&p4H$x5(o=BS_pF_gy@mblk;26A6rVg+kMlfN>Da?hwto zI5Z^3gB@+uf0gGiQVPa_9(OhXB?i7j%o7_T7BbefFopaE-6WUPp@ovJPP4#3EjY)D zQi~ZOFLiZ~RE34RvD3m13?%WQg)4Z;!ppdt#48qF#cLMs!hnU>@rH#rW%?GbTKI|V ze%r!3c-O*vviv??OX33ykK(r$?vx`}@L>`kS@<1(Z{ZL4qlG`=&q@46R{mwBoV z!WLDt*UH9dV4%US85YaTJ2zwd?0GDkn)xttn0GT2%9axIx^R{2!8jDu;Nze^Ppq9Y z|Nr2L@MMy0cwOsgOvL$GYnTa3>^tQZuVR;Svw9Ftots~VwWwiB7xF#befjBSwYT|R zJ);ctMrRPu1>&e!2d&e2qstY~ z^-l4p1;62AkIofX%c0VV*hkL}hux@encbMkRIptUQE8aB<-=$C-lXe~U$Uhw#8^%8 z?Z{6~pPC&nuwicFk3ArUv@}nS($W^yll@OU**f{mg1=a>llMW+a(o(m#)rOx@ox@V zu#5MES~M}lu@!8$7uat&e~|=KHN{xG#%DkTOEREf0dpN`ilS98LZWV?m;0LRr*=xU@csd{zb5&(CY~8uN81#Q3`Yok z7vcwtHRb(`qNG3v(fY2g!D{dhC&RD;43eP(hj5rj(m2u- zCKC;li-dU?k7zdEYX{E`t)czU)~{#d{^jcnw|a{25E^?yqmaE}#>$A?zNF-KnsTYwQymdyb;C5}{Vm!$DmWJij{v z{3(|6(+Yfha7=>}08?~0|CZSkJV=gchLFash zEF_!zhjueJribNzAa)IXBU@s^B;FH`VDbX7UPJ~jVKaXe3zH+tm;O4Fe$9l)s?uBd zelwN1pY}3Lg&B@wTnRYE$!Qd)B7!d&%isrz+bO}nDQn+haNpZN@E>C+QY_)x7iXO2 x#e>>lt;rkZ+^nZNf!9D;0 delta 1578 zcmah}TXPgu5dLPfli4|Yvf0eC32Z{x1wwE)ArXVY8)8TV%|+x+fPjjqsDOzVB*=oG za#Mlv3IX0JtpZXNws`P~Cw<_Z;?-yVfMxmhnMpPV3wNu!`}FDV@9REi&V$^8#^UdP z-~J6i2d*kKVuOph*r>1xn?-C<*or~%Z4+y|h#ew^#J5vn7haR)>k4mRxA@+a6@iT+aKE1c9g zg<}p*YplQ-jrkHiin9*B*7yeBYMjG)jSKJ{d?%joHGYu5QT*uOCyk%0aZ&u29E@pP z#+C8Sc57t(oHH0H5@#-F2SnitLt3t28%-pm$&We-3v7gP5m#;07PXzf1?vWl2%0G? zjZ&Q9uhllKcuP7!TC>BdTGUgW)!R7>HIzfk3c+zxeBZf|nSvp*frwm%F&UTj3@+K>oX*Hh4Gpym_ zSv)7Pv~P1_GSi{_1giW$^x9&ggo+77uUpsYt}w^b2#0nXNwo97ltnu5A}PE|(CsW* zCN>m~!RAM>f^im}XQqPv7uqewAHi4Rg%G?q1W)B}LX}Wmf?MiBvac|KnqQe0T#n$7 zdypVz87YM>GlB$JtwJ{|y69nq4E%o8>~61wloXov%Zx$;sNqd27pe^l)tEx7!$NCJ zq2-B&VyeI8KdNlujT4fBHtMsyLpxOAkFthi05SknGn*ZzZZRk)SOX2tq46f2FwQ| z;HDX793*(Ff$8}y)b$DNg4Hwliv%zdLG9hjX!$U-E2I@OF8-2^bk*e lId4u0@o_}FjM2)gH#*@p7+on3k%eaeZgP&Zj&=m={{eP@voZhx diff --git a/target/classes/com/engine/common/util/ResponseResult.class b/target/classes/com/engine/common/util/ResponseResult.class new file mode 100644 index 0000000000000000000000000000000000000000..c50b4ce81a86c7e9685466e855dec7ddbfcb02c6 GIT binary patch literal 6319 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 literal 2987 zcma)8SyvQC6#kkSXlPo&K~cdiiVBF15)(~8qvD1EH5t^X*@~HRXzb}8dwN*RzVG|K z?|I5Y;)8-YCnwK2`As?bs=I-n!)OBMbXDED_ttm6d+XNx_0P>e0PM!k2G-z!frB`t zW57TH2O4o0M|2!DP!}$arKmdGh?6*F;4~gkvj=r#8Zd%0^*C$b93C=o9v2K;#KR4E z1dkg0JZ9i=hiA(j!EA25ImX2`^=Ah$9Z@?C%k}PSc>$e=s->)Ij*>zS! za=^_=4NXIqBTtqKqtY7@qc$a}AvY`Rv%<5~Iua)RF-!Rv8j&TxkJbfYIT~6!FAj~1 z36ZvilTT-S&vNp8fp_8Msozp%TSI$MdL`F6=DFqKDK9S^>#FcA*BP=(zJ}(|W7)Ut zw36_&r7?rS9Q`)MbTU$@v{s^?F3ur87E@L3`eW;1QH+*x{Gmc1IW;;ivwq)x{%hD2 zv*e*wES1*Myz~!?>Cz$TPfAISwsyuGMiecUbPZ~#%?V%bQW;ppX|&m^p`qjpk0H#IMA}pi3tgYBc8JP_z>ome`^&niCx=fgL*;RRk~Kn}qarRXbe^N+p0b zuc*PuxMeRZk6Nm38dPcQP%0+YVZDyaCTtW~G-{(`mk!5-i{hN1*TfZg%=aPJ^-I1d zio?<$b91GpI+U8>b0{~X&%^{KbxfI<##J3pn0OLTnRpt{FqQ>COo)zWO+1I^HE2CL zUNG?@UefWhiC6Hdj@L}QjyH6?Y2q!sZQ>ogtK&Tr@8bgvHMuDrADZ|G^zyNZPw*+d zY&Y>4K4-D300?v;D`8z|Sf6zZ>AdUaZJFk@;5r;^n>7=ZE-Te^?$Ws4~Y=6P?tv=%#vGf`nr*X@g34}`qB z9!ahBUFKWEx(bMqk9kFP5u$8p*cr#NNHbpZ5gQfx&POc_sraDg-uvSDJi<1u+sx$p6j@0_`ERU!w1i2SUs`U zR7FqaW^}GY?u$TFIvt6;M-<&+vx_Y)ygEU{9v1!>`;zYtI{uLlN&B zOeOm?AE-$wCZw0nOFos1-b$&UP2vToA?Ib zo46MwWMjZ=5QgPUxR=?}gI3M9C@wJ+*W;~hEG(>a{HUH}*S%b3K!3+m894|$>T%)Z zY+33EHRB~0L5~$-h2aRF(YX5m-wcnuy>0x`MV<$QZD%aLVLE=&uz3+7)#70rxV;|k zU}IaupIJZ>)W&*#H*l5asBx_Az5(qwPHLzM{xVZS0~`4@Lj`O?2UiW)j4hOG;QR)E z&Lubw&Y)&!+wVx6zk%c|YHM(gt2(aqXf=y^4L50wSr|2#LE|jU8vKbR!`HAh)zmYC z=IdCd03-qcZG-?UA=;%#p^3*eqaVv~oGS%tLwGQ@qLZs6j-U(Ogw;=*ZRlYb+bM75 z81C(u-%C^0fSuSC1u;cW>a4cz8Kj1{@pJMTT6(r$$MQYN*5nLU{KDOkmK41KD^N?% z23BD?RtIQyQ$i2u#ho10Y&U1T4b;60chlM+{ym%}Xj6y1xChB*L)CnQVjp!B*7n6s=0FzK*s;@2?ccv(g;PN(%$t$NdEM2U_=GEyuPfB%q!%^;eH?@dLgi+~ZuS Mj1F?=1n$Sszd2za*Z=?k diff --git a/test/Test.java b/test/Test.java index ce6e9a1..afef149 100644 --- a/test/Test.java +++ b/test/Test.java @@ -1,20 +1,25 @@ -import com.google.common.collect.Lists; -import weaver.general.Util; + + +import com.engine.common.util.CommonUtil; +import com.engine.common.util.DateUtil; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.*; -import java.util.stream.Collectors; + public class Test { public static void main(String[] args) { - List> personGroupOrganizationList = Lists.newArrayList(); - personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}}); - personGroupOrganizationList.add(new HashMap(){{put("dx","8-测试条件录入");}}); - Set personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); - System.out.println(String.join(",",personGroupIds)); + + System.out.println(DateUtil.getCurrentDateMinusDay(1)); +// List> personGroupOrganizationList = Lists.newArrayList(); +// personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}}); +// personGroupOrganizationList.add(new HashMap(){{put("dx","8-测试条件录入");}}); +// Set personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); +// System.out.println(String.join(",",personGroupIds)); } public static int getDaysBetween(String date1, String date2) {