zm_dev
liuliang 1 year ago
parent 0401d6c890
commit 8251489d62

@ -10,42 +10,89 @@
</component>
<component name="ChangeListManager">
<list default="true" id="baeb3dfb-5097-46c5-933e-6d1dab18b815" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/test/TestOneTimePayMentWay.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/api/attendance/component/calendarscheduling/WorkRulesControllerApi.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/item/ForGetClockItemCmd.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/WorkRulesService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/calendarscheduling/web/WorkRulesController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/PersonGroupListTypeEnum.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/RegularScheduleTypeEnum.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/README.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/com/engine/common/util/ExceptionUtil.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/test/calendarscheduling/Testmain.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" afterPath="$PROJECT_DIR$/log/sdk.log" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" beforeDir="false" afterPath="$PROJECT_DIR$/out/artifacts/hrm_attendance/hrm-attendance.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/api/attendance/persongroup/PersonGroupActionApi.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/api/attendance/component/persongroup/PersonGroupActionApi.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/api/attendance/persongroup/SchedulingResultsActionApi.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/api/attendance/component/persongroup/SchedulingResultsActionApi.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/cmd/RecordDataCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/enums/ClassSegmentTypeEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/ClassSegmentTypeEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/enums/WorkForTimeEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/enums/WorkForTimeEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/VocationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/cmd/VocationCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/HolidayGenerationWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/HolidayGenerationWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/impl/VocationServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/service/impl/VocationServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/vacation/util/VocationCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/vacation/util/VocationCommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/cmd/GetPersonDateBySuitOrganzation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/cmd/GetPersonDateBySuitOrganzation.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/DbTools.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/DbTools.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/cmd/VocationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/ByIntervalPayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/BySchedulePaymentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/HolidayGenerationWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/HolidayGenerationWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/cmd/GetDateCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/cmd/GetDateCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/exception/SalaryRunTimeException.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/exception/AttendanceRunTimeException.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/ResponseResult.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/ResponseResult.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/api/attendance/persongroup/PersonGroupActionApi.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/api/attendance/persongroup/SchedulingResultsActionApi.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableCountCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/ClassSegmentTypeEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/ClassSegmentTypeEnum.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/WorkForTimeEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/enums/WorkForTimeEnum.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/job/holidaygeneration/tactics/SinglePaymentInFullWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/service/impl/VocationServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/DbTools.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/DbTools.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestByIntervalPayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestByIntervalPayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestBySchedulePaymentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestBySchedulePaymentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetDateCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/cmd/GetDateCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/exception/SalaryRunTimeException.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/ResponseResult.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/ResponseResult.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/common/util/Utils.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$5.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint$6.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestGetClockInPoint.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestObj.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestSinglePaymentFullWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestSinglePaymentFullWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestGetClockInPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestGetClockInPoint.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestObj.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestSinglePaymentFullWay.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestSinglePaymentFullWay.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -56,9 +103,9 @@
<option name="RECENT_TEMPLATES">
<list>
<option value="FxmlFile" />
<option value="Enum" />
<option value="Kotlin Class" />
<option value="Interface" />
<option value="Enum" />
<option value="Class" />
</list>
</option>
@ -86,7 +133,7 @@
<property name="ToolWindowRun.ShowToolbar" value="false" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File" value="PLAIN_TEXT" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../easyentry" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/com/api/attendance/component/calendarscheduling" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Artifacts" />
<property name="project.structure.proportion" value="0.0" />
@ -95,21 +142,21 @@
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\api\attendance\component\calendarscheduling" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\component\calendarscheduling" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\vacation" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\weaver\formmode\customjavacode\modeexpand" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\component" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\workflow" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\attendancePlan" />
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\attendance\attendanceAnalysis" />
</key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.engine.common.util" />
<recent name="com.api.attendance.vocation" />
<recent name="com.engine.attendance.vacation.web" />
<recent name="com.engine.attendance.enums" />
<recent name="com.engine.common.util" />
<recent name="com.api.attendance.attendanceAnalysis" />
</key>
</component>
<component name="RunManager" selected="Application.TestSinglePaymentFullWay">
<component name="RunManager" selected="Application.Testmain">
<configuration name="TestByIntervalPayMentWay" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestByIntervalPayMentWay" />
<module name="hrm-attendance" />
@ -117,13 +164,6 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="TestBySchedulePaymentWay" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestBySchedulePaymentWay" />
<module name="hrm-attendance" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="TestObj" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="TestObj" />
<module name="hrm-attendance" />
@ -145,13 +185,26 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Testmain" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="calendarscheduling.Testmain" />
<module name="hrm-attendance" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="calendarscheduling.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.Testmain" />
<item itemvalue="Application.TestObj" />
<item itemvalue="Application.TestSinglePaymentFullWay" />
<item itemvalue="Application.TestOneTimePayMentWay" />
<item itemvalue="Application.TestObj" />
<item itemvalue="Application.TestByIntervalPayMentWay" />
<item itemvalue="Application.TestBySchedulePaymentWay" />
</list>
</recent_temporary>
</component>
@ -401,6 +454,17 @@
<workItem from="1704850781225" duration="25349000" />
<workItem from="1704937221520" duration="25311000" />
<workItem from="1705023288904" duration="2704000" />
<workItem from="1705038564539" duration="4577000" />
<workItem from="1705069359848" duration="2890000" />
<workItem from="1705282502338" duration="11191000" />
<workItem from="1705368931066" duration="22302000" />
<workItem from="1705408127027" duration="1265000" />
<workItem from="1705454997130" duration="44306000" />
<workItem from="1705628572363" duration="17959000" />
<workItem from="1705667466243" duration="1146000" />
<workItem from="1705816217403" duration="1886000" />
<workItem from="1705887116206" duration="29639000" />
<workItem from="1705973725825" duration="26570000" />
</task>
<servers />
</component>
@ -443,11 +507,6 @@
<line>301</line>
<option name="timeStamp" value="28" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/test/TestMergeAskForLeaveAndEvctionSchedule.java</url>
<line>90</line>
<option name="timeStamp" value="49" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<watches-manager>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
package com.api.attendance.component.calendarscheduling;
import com.engine.attendance.component.calendarscheduling.web.WorkRulesController;
import javax.ws.rs.Path;
/**
* @Author liang.cheng
* @Date 2023/12/26 6:52 PM
* @Description:
* @Version 1.0
*/
@Path("/attendance/component/calendarscheduling")
public class WorkRulesControllerApi extends WorkRulesController {
}

@ -1,4 +1,4 @@
package com.api.attendance.persongroup;
package com.api.attendance.component.persongroup;
import com.engine.attendance.component.persongroup.web.PersonGroupAction;
import lombok.extern.slf4j.Slf4j;

@ -1,4 +1,4 @@
package com.api.attendance.persongroup;
package com.api.attendance.component.persongroup;
import com.engine.attendance.component.persongroup.web.SchedulingResultsAction;
import lombok.extern.slf4j.Slf4j;

@ -247,7 +247,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
* @param clockInTimeList
* @param needClockDateList
* @return {2023-11-12 09:00|0|3|2023-11-12 09:15 ={signtime=09:11:00, id=48, userid=53, signdate=2023-11-12}}
* ||| = map
* |||timeType| = map
*/
public List<Map<String, Map<String, Object>>> getClockInPoint(String analysisDate, List<Map<String, Object>> scheduleResult, List<Map<String, Object>> clockInTimeList, List<String> needClockDateList) {
@ -301,7 +301,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
String dtkssj = analysisDate + " " + needClockIn.get("dtkssj");
String dtjssj = analysisDate + " " + needClockIn.get("dtjssj");
int thdkfzs = 60;
if (Util.null2String(needClockIn.get("tqdkfzs")).equals("") && !"".equals(getNextClockTime(needClockDateList,dtjssj))){
if (Util.null2String(needClockIn.get("thdkfzs")).equals("") && !"".equals(getNextClockTime(needClockDateList,dtjssj))){
thdkfzs = DateUtil.getBetWeenMinutes(dtjssj,getNextClockTime(needClockDateList,dtjssj));
}else {
thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs")));
@ -429,10 +429,9 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
})).collect(Collectors.toList());
/**
*
*/
if (scheduleResult.size() > 0) {
//上下班弹性,
*/ //上下班弹性,
List<Map<String, Object>> workScheduleList = scheduleResult.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
if (scheduleResult.size() > 0 && workScheduleList.size()>0) {
//请假和外出集合
List<Map<String, Object>> leaveAndEvctionList = scheduleResult.stream().filter(e -> ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey().equals(e.get("bdlx")) ||

@ -36,6 +36,7 @@ public class GetClockInTimeItemCmd extends AbstractCommonCommand<Map<String,Obje
Map<String, Object> resultMap = Maps.newHashMap();
List<Map<String, Object>> resultList = Lists.newArrayList();
resultMap.put("resultList",resultList);
//当天打卡日期集合
List<Map<String,Object>> needGetDateList = clockInTimeCollect.get(needGetDate);

@ -15,9 +15,9 @@ import java.util.Map;
import java.util.UUID;
@Slf4j
public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
public class RecordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
public recordDataCmd(Map<String, Object> params){
public RecordDataCmd(Map<String, Object> params){
this.params=params;
}
@Override
@ -66,7 +66,12 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
String sql = "select ygid,rq from uf_jcl_kq_cqjg where ygid=? and rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate);
if (dataList.size() >0){
sql = "update uf_jcl_kq_cqjg set cqsc="+attendanceDuration+",cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentTime()+"',rqlx="+rqlx+",";
sql = "update uf_jcl_kq_cqjg set cqsc="+attendanceDuration+",cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentTime()+"',rqlx="+rqlx;
if (classInfo.get(0).get("bcxx") == null || "".equals(classInfo.get(0).get("bcxx"))){
sql = sql + ",bc=NULL,bcbdxx=NULL,";
}else {
sql = sql + ",bc="+classInfo.get(0).get("bcxx")+",bcbdxx='"+classInfo.get(0).get("bcsdxx")+"',";
}
for (int i =0;i<recordDataList.size();i++){
String item = Util.null2String(recordDataList.get(i).get("item"));
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));

@ -102,7 +102,7 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand<Map<String
List<Map<String,Object>> userList = DbTools.getSqlToList(sql,userId);
if (dataList.size() >0){
if ("1".equals(sfxx)){
sql = "update uf_jcl_kq_cqjg set cqzt="+cqzt+",cqsc=0,sjzt=1,rqlx="+rqlx+",sfxx="+sfxx+",fxrq='"+DateUtil.getCurrentTime()+"',";
sql = "update uf_jcl_kq_cqjg set bc=NULL,bcbdxx=NULL,cqzt="+cqzt+",cqsc=0,sjzt=1,rqlx="+rqlx+",sfxx="+sfxx+",fxrq='"+DateUtil.getCurrentTime()+"',";
for (int i=1;i<9;i++){
sql = sql +"xm"+i+"=NULL,sc"+i+"=NULL,"+ "j"+i+"=NULL,c"+i+"=NULL,";
@ -110,7 +110,7 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand<Map<String
sql = sql.substring(0,sql.length()-1) +" where ygid=? and rq=?";
DbTools.update(rs,sql,userId,date);
}else {
sql = "update uf_jcl_kq_cqjg set xm1=?,sc1=NULL,j1=NULL,c1=NULL,cqzt="+cqzt+",cqsc=0,sjzt=1,rqlx="+rqlx+",sfxx="+sfxx+",fxrq='"+DateUtil.getCurrentTime()+"',";
sql = "update uf_jcl_kq_cqjg set bc=NULL,bcbdxx=NULL,xm1=?,sc1=NULL,j1=NULL,c1=NULL,cqzt="+cqzt+",cqsc=0,sjzt=1,rqlx="+rqlx+",sfxx="+sfxx+",fxrq='"+DateUtil.getCurrentTime()+"',";
for (int i=2;i<9;i++){
sql = sql +"xm"+i+"=NULL,sc"+i+"=NULL,"+ "j"+i+"=NULL,c"+i+"=NULL,";
}
@ -120,17 +120,17 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand<Map<String
}else {
if (scheduleList.size()>0){
if ("1".equals(sfxx)){
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx,sfxx) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
sql = "insert into uf_jcl_kq_cqjg (cqsc,szjg,ygid,fbid,bm,zw,rq,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx,sfxx) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,0,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
userList.get(0).get("departmentid"),userList.get(0).get("jobtitle"),date,cqzt,1, DateUtil.getCurrentTime(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1],rqlx,sfxx);
}else {
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx,sfxx) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
sql = "insert into uf_jcl_kq_cqjg (cqsc,szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx,sfxx) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,0,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
userList.get(0).get("departmentid"),userList.get(0).get("jobtitle"),date, SystemItemEnum.NO_SCHEDULING.getKey(),cqzt,1, DateUtil.getCurrentTime(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1],rqlx,sfxx);
}
}else {
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
sql = "insert into uf_jcl_kq_cqjg (cqsc,szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,0,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
userList.get(0).get("departmentid"),userList.get(0).get("jobtitle"),date, SystemItemEnum.NO_SCHEDULING.getKey(),cqzt,1, DateUtil.getCurrentTime(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1]);
}

@ -0,0 +1,54 @@
package com.engine.attendance.attendanceanalysis.cmd.item;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.WorkForTimeEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
public class ForGetClockItemCmd extends AbstractCommonCommand<Map<String,Object>> {
@Override
public BizLogContext getLogContext() {
return null;
}
public ForGetClockItemCmd(Map<String,Object> params){
this.params=params;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
//作用时段
String workfor = Util.null2String(params.get("workfor"));
//项目id
String key = Util.null2String(params.get("key"));
Map<String, Object> resultMap = new HashMap<>();
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
attendanceItems = attendanceItems.stream().filter(e -> {
//项目类型
String xmlx = Util.null2String(e.get("xmlx"));
//作用时段
String zysd = Util.null2String(e.get("zysd"));
//项目id
String id = Util.null2String(e.get("key"));
if(AttendanceItemTypeEnum.OTHER.getKey().equals(xmlx) && (zysd.contains(workfor) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) && key.equals(id)) {
return true;
}else {
return false;
}
}).collect(Collectors.toList());
log.info("ForGetClockItemCmd attendanceItems : [{}]",attendanceItems);
resultMap.put("attendanceItems",attendanceItems);
return resultMap;
}
}

@ -11,7 +11,7 @@ public interface ForgetClockInService {
*
* @return
*/
List<Map<String,Object>> forgetClockInAllDays();
List<Map<String,Object>> forgetClockInAllDays(Map<String,Object> params);
/**
*
* @param params

@ -1,12 +1,16 @@
package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.item.BeLateItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.item.ForGetClockItemCmd;
import com.engine.attendance.attendanceanalysis.service.ForgetClockInService;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.SystemItemEnum;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
@ -15,34 +19,36 @@ import java.util.Map;
public class ForgetClockInServiceImpl extends Service implements ForgetClockInService {
@Override
public List<Map<String,Object>> forgetClockInAllDays() {
public List<Map<String,Object>> forgetClockInAllDays(Map<String,Object> params) {
Map<String,Object> forgetParam = Maps.newHashMap();
forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN.getKey());
forgetParam.put("itemduration", 1);
List<Map<String,Object>> resultList = Lists.newArrayList();
// forgetParam.put("classInfo", params.get("classInfo"));
// forgetParam.put("userId",params.get("userId"));
// forgetParam.put("date",params.get("analysisDate"));
// forgetParam.put("modeId",params.get("modeId"));
// log.info("userId : {} ,analysisDate: {} forgetClockInAllDays");
resultList.add(forgetParam);
return resultList;
}
@Override
public List<Map<String,Object>> forgetClockIn(Map<String, Object> params) {
Map<String, Object> classInfo = (Map<String, Object>)params.get("classInfo");
//班段类型
String bdlx = Util.null2String(classInfo.get("bdlx"));
String workFor = Utils.getWorkFor(bdlx);
params.put("workfor",workFor);
params.put("key",SystemItemEnum.MISSING_CLOCK_IN.getKey());
Map<String,Object> result = commandExecutor.execute(new ForGetClockItemCmd(params));
List<Map<String,Object>> resultList = Lists.newArrayList();
List<Map<String,Object>> forgerAttendanceItems = (List<Map<String,Object>>)result.get("attendanceItems");
if (forgerAttendanceItems.size() > 0){
Map<String,Object> forgetParam = Maps.newHashMap();
forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN.getKey());
forgetParam.put("item", forgerAttendanceItems.get(0).get("key"));
forgetParam.put("itemduration", 1);
forgetParam.put("itemType", AttendanceItemTypeEnum.MISSE_CARD);
// List<Map<String,Object>> classInfoList = Lists.newArrayList();
// classInfoList.add((Map<String, Object>)params.get("classInfo"));
// forgetParam.put("classInfo",classInfoList);
// forgetParam.put("userId",params.get("userId"));
// forgetParam.put("date",params.get("analysisDate"));
// Map<String,Object> result = commandExecutor.execute(new UpdateAttendanceResultsCmd(forgetParam));
resultList.add(forgetParam);
}
return resultList;
}
}

@ -3,7 +3,7 @@ package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.ComputeAttendanceDurationCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd;
import com.engine.attendance.attendanceanalysis.cmd.recordDataCmd;
import com.engine.attendance.attendanceanalysis.cmd.RecordDataCmd;
import com.engine.attendance.attendanceanalysis.service.UtilService;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
@ -12,6 +12,7 @@ import com.engine.common.cmd.GetDateCmd;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@ -36,6 +37,7 @@ public class UtilServiceImpl extends Service implements UtilService {
/** 班次信息*/
Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTable(params);
List<Map<String,Object>> schedulingResultsList = (List<Map<String,Object>>)schedulingResultsMap.get("data");
schedulingResultsList = Utils.getSchedulingList(schedulingResultsList);
Map<String,Object> schedulMap = Maps.newHashMap();
String glpb = "";
if (schedulingResultsList.size() >0){
@ -94,8 +96,8 @@ public class UtilServiceImpl extends Service implements UtilService {
dateParam.put("nd",Util.null2String(params.get("startDate")).split("-")[0]);
dateParam.put("glpb",glpb);
Map<String,Object> result = commandExecutor.execute(new GetDateCmd(dateParam));
List<Map<String,Object>> List = (List<Map<String,Object>>)result.get("data");
Map<String,String> dateMap = List.stream().collect(Collectors.toMap(e->Util.null2String(e.get("rq")),e->Util.null2String(e.get("rqlx"))));
List<Map<String,Object>> list = (List<Map<String,Object>>)result.get("data");
Map<String,String> dateMap = list.stream().collect(Collectors.toMap(e->Util.null2String(e.get("rq")),e->Util.null2String(e.get("rqlx"))));
for (Map.Entry<String,List<Map<String,Object>>> e: overtimePlanMap.entrySet()){
@ -114,17 +116,17 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("sfkt","0");
}
//查找对应的考勤项目
String querySql = "select id `key`,ksjbbxydk,jsjbbxydk,tqdkyxfzs,thdkyxfzs,jbwdhlfzs,jbzzhlfzs,tqdkjrjb,thdkjrjb,jbscbdccsqsc,zdkcjcxxsc,ccclfs,rzdjbxss,yzdjbxss,zzdjbxss,jbzdzjqye,jbqsfzs,ccqszhdhsfzs,hsl,hsdw from uf_jcl_kq_kqxm where id=?";
String querySql = "select id 'key',ksjbbxydk,jsjbbxydk,tqdkyxfzs,thdkyxfzs,jbwdhlfzs,jbzzhlfzs,tqdkjrjb,thdkjrjb,jbscbdccsqsc,zdkcjcxxsc,ccclfs,rzdjbxss,yzdjbxss,zzdjbxss,jbzdzjqye,jbqsfzs,ccqszhdhsfzs,hsl,hsdw from uf_jcl_kq_kqxm where id=?";
attendanceItems = DbTools.getSqlToList(querySql,overtimePlan.get("jblx"));
map.put("bcxx",schedulingdateMap.get(0) == null ? "0" :schedulingdateMap.get(0).get("bcxx"));
map.put("bcsdxx",schedulingdateMap.get(0) == null ? "":schedulingdateMap.get(0).get("bcsdxx"));
if (dataList.size()>0){
map.put("edsc",Util.null2String(dataList.get(0).get("edsc")));
map.put("sfdx",Util.null2String(dataList.get(0).get("sfdx")));
map.put("zddxfz",Util.null2String(dataList.get(0).get("zddxfz")));
map.put("dxhs",Util.null2String(dataList.get(0).get("dxhs")));
if (resultList.size()>0){
map.put("edsc",Util.null2String(resultList.get(0).get("edsc")));
map.put("sfdx",Util.null2String(resultList.get(0).get("sfdx")));
map.put("zddxfz",Util.null2String(resultList.get(0).get("zddxfz")));
map.put("dxhs",Util.null2String(resultList.get(0).get("dxhs")));
}else {
map.put("edsc","0");
}
@ -194,7 +196,7 @@ public class UtilServiceImpl extends Service implements UtilService {
@Override
public void recordItem(Map<String, Object> params) {
commandExecutor.execute(new recordDataCmd(params));
commandExecutor.execute(new RecordDataCmd(params));
}
@Override

@ -44,6 +44,42 @@ public class AttendanceanalysisAction {
String endAfterDate = DateUtil.AfterDay(endDate,1);
String userIds = Util.null2String(paramMap.get("userIds"));
int betweenDays = DateUtil.getBetWeenDays(startDate,endDate);
if ("".equals(userIds)){
String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
for (Map<String,Object> userMap :userList){
String userId = userMap.get("id").toString();
/**获得人员考勤项目*/
Map<String,Object> param = Maps.newHashMap();
param.put("startDate","");
param.put("endDate","");
param.put("resourceId",userId);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(param);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
/** 获取人员班次*/
Map<String,Object> classesParamMap = Maps.newHashMap();
classesParamMap.put("tableName","uf_pbjg");
classesParamMap.put("startDate",startBeforeDate);
classesParamMap.put("endDate",endAfterDate);
classesParamMap.put("pblx","0");
classesParamMap.put("pbdx",userId);
classesParamMap.put("current","1");
classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap);
}
}
}else {
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
@ -75,6 +111,7 @@ public class AttendanceanalysisAction {
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap);
}
}
}
return null;
}catch (Exception e){
log.error("execute fail,catch error: [{}]",e);

@ -147,15 +147,7 @@ public class AttendanceAnalysisWrapper extends Service {
}
recordParam.put("rqlx",scheduleResult.get(0).get("rqlx"));
List<Map<String, Object>> needClockInSchedule = scheduleResult.stream().filter(e -> "1".equals(e.get("ksdk")) || "1".equals(e.get("jsdk"))).collect(Collectors.toList());
if(clockInTimeList == null || clockInTimeList.size() == 0){
if (needClockInSchedule.size() > 0){
//全天漏打卡
recordParam.put("cqzt",0);
recordParam.put("recordData",forgetClockInService.forgetClockInAllDays());
utilService.recordItem(recordParam);
return;
}
}
//请假记录
String sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry=? and b.ksrq=? and (b.cxqj=0 or b.cxqj is null)";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId,analysisDate);
@ -245,6 +237,19 @@ public class AttendanceAnalysisWrapper extends Service {
askForLeaveAndEvctionSchedule.add(evectionMap);
}
}
// if(clockInTimeList == null || clockInTimeList.size() == 0){
// if (needClockInSchedule.size() > 0){
// //全天漏打卡
// recordParam.put("cqzt",1);
// recordParam.put("needClockInSchedule",needClockInSchedule);
// List<Map<String,Object>> iforgetClockIn = forgetClockInService.forgetClockInAllDays(recordParam);
// if (iforgetClockIn.size()>0){
// recordParam.put("recordData",iforgetClockIn);
// utilService.recordItem(recordParam);
// }
// return;
// }
// }
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());

@ -105,11 +105,11 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
}
}
sql = "select id `key`,mc kqxm,a.* from uf_jcl_kq_kqxm a where tyxm=1";
sql = "select id 'key',mc kqxm,a.* from uf_jcl_kq_kqxm a where tyxm=1";
List<Map<String,Object>> attendanceItems = DbTools.getSqlToList(sql);
log.info("dataIds : {}",dataIds);
sql = "select b.id `key`,b.mc kqxm,c.mc famc,b.* 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 famc,b.* 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));

@ -1,4 +1,4 @@
# attendance.attendanceAnalysis
## 考勤组件模块
## person_group 人员分组功能组件
## calendar_scheduling 日历排班

@ -0,0 +1,33 @@
package com.engine.attendance.component.calendarscheduling.service;
import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/12/26 6:53 PM
* @Description: TODO
* @Version 1.0
*/
public interface WorkRulesService {
/**
* @Description:
* @Author: liang.cheng
* @Date: 2023/12/26 7:18 PM
* @param: [resourceIds]
* @return: java.lang.String
*/
Map<String, Object> getWorkRulesList(String resourceIds);
/**
*
* @param params
* @return
*/
Map<String, Object> getDepartSchedule(Map<String, Object> params);
/**
*
*/
Map<String, Object> saveCalendarWork(Map<String, Object> params);
}

@ -0,0 +1,373 @@
package com.engine.attendance.component.calendarscheduling.service.impl;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.pc.table.WeaTableType;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.attendance.component.calendarscheduling.service.WorkRulesService;
import com.engine.attendance.component.persongroup.cmd.GetDatatableRecurrenceCmd;
import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.enums.PersonGroupListTypeEnum;
import com.engine.attendance.enums.RegularScheduleTypeEnum;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSet;
import weaver.conn.constant.DBConstant;
import weaver.general.PageIdConst;
import weaver.general.Util;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author liang.cheng
* @Date 2023/12/26 6:54 PM
* @Description: TODO
* @Version 1.0
*/
@Slf4j
public class WorkRulesServiceImpl extends Service implements WorkRulesService {
private Map<String,Object> departMentMap = PersongroupCommonUtil.getDepartMent();
private Map<String,Object> subCompanyMap = PersongroupCommonUtil.getSubCompany();
private Map<String,Object> classesInformationMap = PersongroupCommonUtil.getClassesInformation();
@Override
public Map<String, Object> getWorkRulesList(String resourceIds) {
Map<String, Object> resultMap = new HashMap<>(4);
WeaTable table = new WeaTable();
String pageId = "936b04850b7b478cafd59d1cf4cb9fc1";
table.setPageID(pageId);
table.setPageUID(String.format("%s_%s",pageId,user.getUID()));
String pageSize = PageIdConst.getPageSize(pageId, user.getUID());
table.setPagesize(pageSize);
String fields = "t.id, t.mc,t.jc,t.ys,t.bcsdxx";
table.setBackfields(fields);
String fromSql = " from uf_jcl_kq_bcxx t ";
table.setSqlform(fromSql);
String sqlWhere = " where 1=1 ";
table.setSqlwhere(sqlWhere);
table.setSqlprimarykey("id");
table.getColumns().add(new WeaTableColumn("id").setDisplay(WeaBoolAttr.FALSE));
table.getColumns().add(new WeaTableColumn("20%", "班次名称", "mc"));
table.getColumns().add(new WeaTableColumn("20%", "简称", "jc"));
table.getColumns().add(new WeaTableColumn("20%", "颜色", "ys"));
table.getColumns().add(new WeaTableColumn("40%", "班次时间", "bcsdxx"));
table.setTableType(WeaTableType.RADIO);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
resultMap.putAll(result.getResultMap());
return resultMap;
}
@Override
public Map<String, Object> getDepartSchedule(Map<String, Object> params) {
Map<String, Object> resultMap = new HashMap<>();
String dateTime = Util.null2String(params.get("dateTime"));
int pageSize = Integer.valueOf(Util.null2String(params.get("pageSize")));
int pageindex = Integer.valueOf(Util.null2String(params.get("pageindex")));
String deparmentId = Util.null2String(params.get("deparment"));
String subcompanyId = Util.null2String(params.get("subcompany"));
String userId = Util.null2String(user.getUID());
//0:全体人员、1分部、2部门
String type = Util.null2String(params.get("type"));
String conditions ="";
if (type.equals("0")){
conditions = " 1=1 ";
}else if (type.equals("1")){
conditions = " subcompanyid1="+subcompanyId;
}else if (type.equals("2")){
conditions = " departmentid="+deparmentId;
}
RecordSet rs = new RecordSet();
String dbType = rs.getDBType();
List<Map<String,Object>> dataTable = null;
int startindex = (pageindex-1)*pageSize;
int monthDays = DateUtil.getDays(dateTime, Calendar.DAY_OF_MONTH);
String startTime = dateTime+"-01";
String endTime = dateTime+"-"+monthDays;
//当为系统管理员用户登录时
if ("1".equals(userId)){
if ("oracle".equals(dbType) || "dm".equals(dbType) || "jc".equals(dbType) || "st".equals(dbType)){
String sql = "select row_number() over(order by id asc) rownum,id from hrmresource where "+conditions;
sql = "select top 1 a.id from ( "+sql+" ) a where a.rownum>"+startindex;
String queryDatatablesql = "select top "+pageSize+" id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions;
log.info("queryDatatablesql : {}",queryDatatablesql);
dataTable = DbTools.getSqlToList(queryDatatablesql);
}else if ("sqlserver".equals(dbType)){
String sql = "select row_number() over(order by id asc) rownum,id from hrmresource where "+conditions;
sql = "select top 1 a.id from ( "+sql+" ) a where a.rownum>"+startindex;
String queryDatatablesql = "select top "+pageSize+" id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions;
log.info("queryDatatablesql : {}",queryDatatablesql);
dataTable = DbTools.getSqlToList(queryDatatablesql);
}else {
String sql = "select id from hrmresource where "+conditions+" limit "+startindex+",1";
String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource where id >=("+sql+") and "+conditions+" limit "+pageSize;
log.info("queryDatatablesql : {}",querySql);
dataTable = DbTools.getSqlToList(querySql);
}
}else {
String querySql = "select id,subcompanyid1,departmentid,workcode,lastname from hrmresource ";
if (!conditions.equals("")){
querySql = querySql+" where "+conditions;
}
dataTable = DbTools.getSqlToList(querySql);
String sql = "select a.list_type,b.mainid,b.empid,b.filters,b.bdate,b.edate from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where a.userfor=5 and a.fzgly=?";
List<Map<String,Object>> personnelGrouping = DbTools.getSqlToList(sql,userId);
personnelGrouping = personnelGrouping.stream().filter(e -> DateUtil.getTime(endTime).compareTo(DateUtil.getTime(e.get("bdate").toString())) >=0 && (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(startTime).compareTo(DateUtil.getTime(e.get("edate").toString())) <=0)).collect(Collectors.toList());
Map<String,String> userIdMap =Maps.newHashMap();
userIdMap.put(userId,startTime+","+endTime);
for (Map<String,Object> data:personnelGrouping){
String empid = Util.null2String(data.get("empid"));
String filters = Util.null2String(data.get("filters"));
String list_type = Util.null2String(data.get("list_type"));
String bdate = Util.null2String(data.get("bdate"));
String edate = Util.null2String(data.get("edate"));
String date = "";
if (DateUtil.getTime(startTime).compareTo(DateUtil.getTime(bdate)) >= 0){
date = startTime;
}else {
date = bdate;
}
if (edate.equals("") || DateUtil.getTime(endTime).compareTo(DateUtil.getTime(edate)) <=0){
date = date +","+endTime;
}else if (DateUtil.getTime(endTime).compareTo(DateUtil.getTime(edate)) >0){
date = date +","+edate;
}
if (PersonGroupListTypeEnum.PERSON.getKey().equals(list_type) && !"".equals(empid)){
userIdMap.put(empid,date);
}else if (PersonGroupListTypeEnum.CONDITION.getKey().equals(list_type) && !"".equals(filters)){
filters = filters.replace("","and");
filters = filters.replace("","or");
sql = "select id,seclevel from hrmresource where "+conditions;
if (filters.contains("field")){
sql = "select a.id from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and scopeid=-1 and "+filters+" and "+conditions;
}else {
filters = filters.replace("","and");
filters = filters.replace("","or");
sql = sql+ " and "+filters;
}
log.info("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
userIdMap.put(hrmId,date);
}
}
}
for (int i=0;i<dataTable.size();i++){
Map<String,Object> map = dataTable.get(i);
String id = Util.null2String(map.get("id"));
if (userIdMap.get(id) == null){
dataTable.remove(i);
i--;
}else {
map.put("effectTime",userIdMap.get(id));
}
}
}
Map<String,Object> param = Maps.newHashMap();
param.put("tableName",params.get("tableName"));
param.put("startDate",startTime);
param.put("endDate",endTime);
param.put("pblx","0");
param.put("current","1");
param.put("pageSize","31");
param.put("recurrence","1");
List<Map<String, Object>> datas = Lists.newArrayList();
for (Map<String,Object> map:dataTable){
String id = map.get("id").toString();
String effectTime = Util.null2String(map.get("effectTime"));
String startEffectTime = "";
String endEffectTime = "";
if (!"".equals(effectTime)){
startEffectTime = effectTime.split(",")[0];
endEffectTime = effectTime.split(",")[1];
}
Map<String, Object> data = Maps.newHashMap();
data.put("workcode",map.get("workcode"));
data.put("resourceId",id);
data.put("lastname",map.get("lastname"));
data.put("subcompanyId",map.get("subcompanyid1"));
data.put("subcompany",subCompanyMap.get(map.get("subcompanyid1")));
data.put("departmentId",map.get("departmentid"));
data.put("department",departMentMap.get(map.get("departmentid")));
param.put("pbdx",id);
Map<String,Object> result = commandExecutor.execute(new GetDatatableRecurrenceCmd(param));
List<Map<String, Object>> dataTableList = (List<Map<String, Object>>)result.get("dataTableList");
dataTableList = Utils.getSchedulingList(dataTableList);
log.info("dataTableList : [{}]",dataTableList);
for (Map<String, Object> scheduleMap :dataTableList){
String bcrq = Util.null2String(scheduleMap.get("bcrq"));
String bcxx = Util.null2String(scheduleMap.get("bcxx"));
if (!"".equals(bcxx)){
if (!"".equals(effectTime)){
if (DateUtil.getTime(bcrq).compareTo(DateUtil.getTime(startEffectTime)) >=0 && DateUtil.getTime(bcrq).compareTo(DateUtil.getTime(endEffectTime)) <=0){
data.put(bcrq,new HashMap(){{
put("content",classesInformationMap.get(bcxx));
put("id",bcxx);
put("edit",true);
}});
}else {
data.put(bcrq,new HashMap(){{
put("content",classesInformationMap.get(bcxx));
put("id",bcxx);
put("edit",false);
}});
}
}else {
data.put(bcrq,new HashMap(){{
put("content",classesInformationMap.get(bcxx));
put("id",bcxx);
put("edit",true);
}});
}
}
}
datas.add(data);
}
resultMap.put("datas",datas);
resultMap.put("columns",getCloumns(monthDays,startTime));
resultMap.put("pagesize",pageSize);
resultMap.put("count",dataTable.size());
resultMap.put("pageindex",pageindex);
return resultMap;
}
public List<Map<String,Object>> getCloumns(int monthDays,String startTime){
List<Map<String,Object>> cloumns = Lists.newArrayList();
cloumns.add(new HashMap(){{
put("title","编号");
put("width",100);
put("dataIndex","workcode");
put("key","workcode");
put("fixed","left");
put("align","center");
}});
cloumns.add(new HashMap(){{
put("title","姓名");
put("width",100);
put("dataIndex","lastname");
put("key","lastname");
put("fixed","left");
put("align","center");
}});
cloumns.add(new HashMap(){{
put("title","分部");
put("width",150);
put("dataIndex","subcompany");
put("key","subcompany");
put("fixed","left");
put("align","center");
}});
cloumns.add(new HashMap(){{
put("title","部门");
put("width",150);
put("dataIndex","department");
put("key","department");
put("fixed","left");
put("align","center");
}});
for (int i=0;i<monthDays;i++){
Map<String,Object> map = Maps.newHashMap();
map.put("title",i+1);
map.put("dataIndex",DateUtil.AfterDay(startTime,i));
map.put("key",i+1);
map.put("width",90);
map.put("isCalendar",0);
cloumns.add(map);
}
return cloumns;
}
@Override
public Map<String, Object> saveCalendarWork(Map<String, Object> params) {
String bcxxId = Util.null2String(params.get("bcxx"));
String resourceIds = Util.null2String(params.get("resourceIds"));
String date = Util.null2String(params.get("date"));
Map<String,Object> resultMap = Maps.newHashMap();
List<String> resourceList = Arrays.asList(resourceIds.split(","));
//系统管理员
List<String> beContainIds = null;
if (user.getUID() == 1){
beContainIds=resourceList;
}else {
beContainIds = getHaveResourceIds(String.valueOf(user.getUID()),resourceList,date);
}
//排班结果模块
String formmodeid = Utils.getFormmodeIdMap().get("uf_pbjg");
List<Map<String,Object>> organizationList = Lists.newArrayList();
for (String str :beContainIds){
Map<String,Object> map = Maps.newHashMap();
map.put("dx",str);
map.put("dxlx", "0");
organizationList.add(map);
}
List<Map<String,Object>> insertDataList = Lists.newArrayList();
Map<String,Object> insertDataMap = Maps.newHashMap();
insertDataList.add(insertDataMap);
insertDataMap.put("pbtj",RegularScheduleTypeEnum.CALENDAR.getKey());
insertDataMap.put("bcrq",date);
insertDataMap.put("sfxx", CheckBoxEnum.UNCHECKED.getKey());
insertDataMap.put("sfdkpp",CheckBoxEnum.UNCHECKED.getKey());
insertDataMap.put("bcxx",bcxxId);
insertDataMap.put("pbrq",DateUtil.getCurrentDate());
insertDataMap.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]);
String sql = "select b.rqlx,b.rq from uf_jcl_kq_rlmc a left join uf_jcl_kq_rlxx b on a.id=b.rlmc where a.mrrl=? and b.rq=?";
Map<String,Object> dateMap = DbTools.getSqlToMap(sql,CheckBoxEnum.CHECKED.getKey(),date);
insertDataMap.put("rqlx",dateMap.get("rqlx"));
/**插入排班结果表*/
resultMap.put("result",PersongroupCommonUtil.insertShiftSchedulingResults(organizationList,insertDataList,formmodeid));
return resultMap;
}
/**
*
* @param userId
* @param resourceIds
* @param date
* @return
*/
public List<String> getHaveResourceIds(String userId,List<String> resourceIds,String date){
String sql = "select a.list_type,b.mainid,b.empid,b.filters,b.bdate,b.edate from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid where a.userfor=5 and a.fzgly=?";
List<Map<String,Object>> personnelGrouping = DbTools.getSqlToList(sql,userId);
personnelGrouping = personnelGrouping.stream().filter(e -> DateUtil.getTime(date).compareTo(DateUtil.getTime(e.get("bdate").toString())) >=0 && (Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(date).compareTo(DateUtil.getTime(e.get("edate").toString())) <=0)).collect(Collectors.toList());
Set<String> userIds = PersongroupCommonUtil.getUserIdsByPersonnelGrouping(personnelGrouping);
userIds.add(userId);
List<String> beContainIds = Lists.newArrayList();
for (String resourceId:resourceIds){
if (userIds.contains(resourceId)){
beContainIds.add(resourceId);
}
}
log.info("be contain userIds : [{}]",beContainIds);
return beContainIds;
}
}

@ -0,0 +1,61 @@
package com.engine.attendance.component.calendarscheduling.web;
import com.engine.attendance.component.calendarscheduling.service.WorkRulesService;
import com.engine.attendance.component.calendarscheduling.service.impl.WorkRulesServiceImpl;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ResponseResult;
import com.engine.common.util.ServiceUtil;
import oracle.jdbc.proxy.annotation.Post;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.Map;
/**
* @Author liang.cheng
* @Date 2023/12/26 6:52 PM
* @Description: TODO
* @Version 1.0
*/
public class WorkRulesController {
private WorkRulesService getReportCollectService(User user) {
return ServiceUtil.getService(WorkRulesServiceImpl.class,user);
}
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
public String getWorkRulesList(@Context HttpServletRequest request, @Context HttpServletResponse response,
@QueryParam("resourceIds") String resourceIds) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<String, Map<String, Object>>(user).run(getReportCollectService(user) :: getWorkRulesList,resourceIds);
}
@GET
@Path("/queryDepartSchedule")
@Produces(MediaType.APPLICATION_JSON)
public String getDepartSchedule(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String,Object> paramMap = ParamUtil.request2Map(request);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getReportCollectService(user) :: getDepartSchedule,paramMap);
}
@Post
@Path("/saveCalendarWork")
@Produces(MediaType.APPLICATION_JSON)
public String saveCalendarWork(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String,Object> paramMap = ParamUtil.request2Map(request);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getReportCollectService(user) :: saveCalendarWork,paramMap);
}
}

@ -35,7 +35,7 @@ public class GetDatatableCmd extends AbstractCommonCommand<Map<String,Object>> {
int pageSize = Integer.valueOf(Util.null2String(params.get("pageSize")));
RecordSet rs = new RecordSet();
Map<String, Object> resultMap = Maps.newHashMap();
String sql = "select id from "+tableName +" where pbtj=0 ";
String sql = "select id from "+tableName +" where 1=1 ";
List<Object> param = Lists.newArrayList();
String conditions = "";
@ -99,7 +99,7 @@ public class GetDatatableCmd extends AbstractCommonCommand<Map<String,Object>> {
resultMap.put("data",dataTable);
}else {
sql = sql + conditions +" limit "+startindex+",1";
String queryDatatablesql = "select a.id as `key`,b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where a.id>=("+sql+") "+conditions+" limit "+pageSize;
String queryDatatablesql = "select a.id as 'key',b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where a.id>=("+sql+") "+conditions+" limit "+pageSize;
log.info("queryDatatablesql : {}",queryDatatablesql);
param.addAll(param);
log.info("param : {}",param);

@ -29,7 +29,7 @@ public class GetDatatableCountCmd extends AbstractCommonCommand<Map<String,Objec
String pbdx = Util.null2String(params.get("pbdx"));
String sql = "select count(0) total from "+tableName +" where pbtj=0 ";
String sql = "select count(0) total from "+tableName +" where 1=1";
List<Object> params = Lists.newArrayList();
String conditions = "";

@ -40,7 +40,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
String pblx = Util.null2String(params.get("pblx"));
String pbdx = Util.null2String(params.get("pbdx"));
String sql = "select a.id as `key`,b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where pbtj=0 ";
String sql = "select a.id as 'key',b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where 1=1 ";
String conditions = "";
List<Object> Dateparam = Lists.newArrayList();
@ -57,7 +57,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
if (!"".equals(pbdx)){
if ("0".equals(pblx)){
//人员递归查人员、人员分组、部门、分部
String querySqlbyPbdx = sql +conditions + " and pbdxry = ?";
String querySqlbyPbdx = sql +conditions + " and pbdxry = ? order by bcrq";
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
param.add(pbdx);
@ -74,7 +74,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
if(personnelGroupIds.size() > 0){
param.clear();
param.addAll(Dateparam);
querySqlbyPbdx = querySqlbyPbdx + String.join(",",personnelGroupIds)+")";
querySqlbyPbdx = querySqlbyPbdx + String.join(",",personnelGroupIds)+") order by bcrq";
log.info("递归查询人员-人员分组节点sql:{}",querySqlbyPbdx);
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
}
@ -91,11 +91,11 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
param.clear();
param.addAll(Dateparam);
// param.add(pdeptids);
querySqlbyPbdx = querySqlbyPbdx + pdeptids+")";
querySqlbyPbdx = querySqlbyPbdx + pdeptids+") order by bcrq";
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
if (dataList.size() == 0){
//查询人员分部
querySqlbyPbdx = sql + conditions + " and pbdxfb = ?";
querySqlbyPbdx = sql + conditions + " and pbdxfb = ? order by bcrq";
log.info("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1"));
param.clear();
param.addAll(Dateparam);
@ -109,7 +109,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
//人员分组
conditions += " and pbdxryfz = ?";
conditions += " and pbdxryfz = ? order by bcrq";
sql +=conditions;
param.add(pbdx);
dataTableList = DbTools.getSqlToList(sql,param.toArray());
@ -119,13 +119,13 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
param.addAll(Dateparam);
//部门
//部门递归查、部门、分部
String querySqlbyPbdx = sql +conditions + " and pbdxbm = ?";
String querySqlbyPbdx = sql +conditions + " and pbdxbm = ? order by bcrq";
param.add(pbdx);
dataTableList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
if (dataTableList.size() == 0){
String querySubCompanySql = "select subcompanyid1 from hrmdepartment where id=?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(querySubCompanySql,pbdx);
querySqlbyPbdx = sql +conditions + " and pbdxfb = ?";
querySqlbyPbdx = sql +conditions + " and pbdxfb = ? order by bcrq";
log.info("递归查询部门-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,departMentMap.get("subcompanyid1"));
param.clear();
param.addAll(Dateparam);
@ -138,7 +138,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
//分部
conditions += " and pbdxfb = ?";
conditions += " and pbdxfb = ? order by bcrq";
sql +=conditions;
param.add(pbdx);
dataTableList = DbTools.getSqlToList(sql,param.toArray());

@ -1,5 +1,6 @@
package com.engine.attendance.component.persongroup.commonutil;
import com.engine.attendance.enums.PersonGroupListTypeEnum;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.google.common.collect.Lists;
@ -56,8 +57,8 @@ public class PersongroupCommonUtil {
String gxrcl = Util.null2String(data.get("gxrcl"));
//生效日期
String bdate = Util.null2String(data.get("bdate"));
//当前日期
String nowDate = DateUtil.getCurrentDate();
//执行日期
String nowDate = Util.null2String(data.get("executeDate"));
//排班方式
String pbfs = Util.null2String(data.get("pbfs"));
//改班班次
@ -143,7 +144,7 @@ public class PersongroupCommonUtil {
public static boolean insertShiftSchedulingResults(List<Map<String,Object>> organizationList,List<Map<String,Object>> insertDataList,String formmodeid){
RecordSet rs = new RecordSet();
List<List> addlist = Lists.newArrayList();
String sql = "delete from uf_pbjg where bcrq>= ? and bcrq<=? ";
String sql = "delete from uf_pbjg where bcrq>= ? and bcrq<=? and pbtj="+insertDataList.get(0).get("pbtj");
String startDate = Util.null2String(insertDataList.get(0).get("bcrq"));
String endDate = Util.null2String(insertDataList.get(insertDataList.size()-1).get("bcrq"));
Set<String> psersons = Sets.newHashSet();
@ -289,6 +290,45 @@ public class PersongroupCommonUtil {
return personnelGroupIds;
}
/**
* id
* @param personnelGroupingList
* @return userIDs
*/
public static Set<String> getUserIdsByPersonnelGrouping(List<Map<String,Object>> personnelGroupingList){
Set<String> userIds = Sets.newHashSet();
log.info("getUserIdsByPersonnelGrouping personnelGroupingList :[{}]",personnelGroupingList);
for (Map<String,Object> data:personnelGroupingList){
String empid = Util.null2String(data.get("empid"));
String filters = Util.null2String(data.get("filters"));
String list_type = Util.null2String(data.get("list_type"));
if (PersonGroupListTypeEnum.PERSON.getKey().equals(list_type) && !"".equals(empid)){
//人员清单
userIds.add(empid);
}else if (PersonGroupListTypeEnum.CONDITION.getKey().equals(list_type) && !"".equals(filters)){
filters = filters.replace("","and");
filters = filters.replace("","or");
//条件清单
String sql = "select id,seclevel from hrmresource where 1=1 ";
if (filters.contains("field")){
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and scopeid=-1 and "+filters;
}else {
filters = filters.replace("","and");
filters = filters.replace("","or");
sql = sql+ " and "+filters;
}
log.info("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
userIds.add(hrmId);
}
}
}
log.info("userIds size :[{}]",userIds.size());
return userIds;
}
/**
*
* @return

@ -15,6 +15,10 @@ import java.util.Map;
@Slf4j
public class SchedulingJob extends BaseCronJob {
/**
*
*/
String executeDate;
/**
*
*/
@ -26,9 +30,11 @@ public class SchedulingJob extends BaseCronJob {
}
@Override
public void execute() {
String currentDate = DateUtil.getCurrentDate();
if (executeDate == null || "".equals(executeDate)){
executeDate = DateUtil.getCurrentDate();
}
String sql = "select * from uf_jcl_kq_glpb where edate > ? and bdate<=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,currentDate,currentDate);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,executeDate,executeDate);
Map<String,String> formmodeIdMap = Utils.getFormmodeIdMap();
//规律排班模块id
String modeId = formmodeIdMap.get("uf_jcl_kq_glpb");
@ -40,6 +46,7 @@ public class SchedulingJob extends BaseCronJob {
e.put("modeId",modeId);
e.put("day",day);
e.put("formmodeid",formmodeid);
e.put("executeDate",executeDate);
String zzqlx = Util.null2String(e.get("zzqlx"));
for (RegularScheduling workOverTimeComputeRuler :rulers){
if (workOverTimeComputeRuler.support(Integer.valueOf(zzqlx))){

@ -52,7 +52,8 @@ public class DayRegularScheduling implements RegularScheduling{
String pbfs = Util.null2String(data.get("pbfs"));
//改班班次
String gbbc = Util.null2String(data.get("gbbc"));
//执行日期
String executeDate = Util.null2String(data.get("executeDate"));
//规律排班明细表数据
@ -81,7 +82,7 @@ public class DayRegularScheduling implements RegularScheduling{
if (circulateDays < leaveDay){
leaveDay = 1;
}
String bcrq = DateUtil.getCurrentDatePlusDay(count);
String bcrq = DateUtil.AfterDay(executeDate,count);
if (DateUtil.getBetWeenDays(bcrq,edate) <=0){
//超过规律有效期
break;

@ -54,8 +54,9 @@ public class MonthRegularScheduling implements RegularScheduling{
String pbfs = Util.null2String(data.get("pbfs"));
//改班班次
String gbbc = Util.null2String(data.get("gbbc"));
//执行日期
String executeDate = Util.null2String(data.get("executeDate"));
RecordSet rs = new RecordSet();
//规律排班明细表数据
String sql = "select ksr,jsr,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?";
@ -74,21 +75,22 @@ public class MonthRegularScheduling implements RegularScheduling{
int leaveDay = 0;
int count = 0;
while (insertDataList.size() <=day){
String bcrq = DateUtil.getCurrentDatePlusDay(count);
String bcrq = DateUtil.AfterDay(executeDate,count);
if (DateUtil.getBetWeenDays(bcrq,edate) <=0){
//超过规律有效期
break;
}
leaveDay = LocalDateTime.now().plusDays(count).getDayOfMonth();
// leaveDay = LocalDateTime.now().plusDays(count).getDayOfMonth();
leaveDay = DateUtil.getTime(executeDate).plusDays(count).getDayOfMonth();
for (Map<String,Object> map : detailDataList){
int ksr = Integer.valueOf(Util.null2String(map.get("ksr")));
int jsr = Integer.valueOf(Util.null2String(map.get("jsr")));
Map<String,Object> dataMap = Maps.newHashMap();
dataMap.put("pbtj","0");
dataMap.put("pbgl",id);
dataMap.put("bcrq",DateUtil.getCurrentDatePlusDay(count));
dataMap.put("bcrq",bcrq);
if (jsr >= leaveDay && ksr <=leaveDay){
String dateTime =DateUtil.getCurrentDatePlusDay(count);
String dateTime =bcrq;
log.info("dateTime :{},count: {},map : {}",dateTime,count,map);
List<Map<String,Object>> detailList = detailDataGroupingByYear.get(dateTime.split("-")[0]);
List<Map<String,Object>> nowDateList = detailList.stream().filter(e->dateTime.equals(Util.null2String(e.get("rq")))).collect(Collectors.toList());

@ -54,6 +54,8 @@ public class WeekRegularScheduling implements RegularScheduling{
String gbbc = Util.null2String(data.get("gbbc"));
//失效日期
String edate = Util.null2String(data.get("edate"));
//执行日期
String executeDate = Util.null2String(data.get("executeDate"));
//规律排班明细表数据
@ -76,13 +78,13 @@ public class WeekRegularScheduling implements RegularScheduling{
int count = 0;
List<Map<String,Object>> insertDataList = Lists.newArrayList();
while (insertDataList.size() <=day){
String bcrq = DateUtil.getCurrentDatePlusDay(count);
String bcrq = DateUtil.AfterDay(executeDate,count);
if (DateUtil.getBetWeenDays(bcrq,edate) <=0){
//超过规律有效期
break;
}
leaveDay = getDayOfWeek(LocalDateTime.now().plusDays(count).getDayOfWeek());
leaveDay = getDayOfWeek(DateUtil.getTime(executeDate).plusDays(count).getDayOfWeek());
for (Map<String,Object> map : detailDataList){
int ksxq = Integer.valueOf(Util.null2String(map.get("ksxq")));
@ -90,9 +92,9 @@ public class WeekRegularScheduling implements RegularScheduling{
Map<String,Object> dataMap = Maps.newHashMap();
dataMap.put("pbtj","0");
dataMap.put("pbgl",id);
dataMap.put("bcrq",DateUtil.getCurrentDatePlusDay(count));
dataMap.put("bcrq",bcrq);
if (jsxq >= leaveDay && ksxq <=leaveDay){
String dateTime =DateUtil.getCurrentDatePlusDay(count);
String dateTime =bcrq;
log.info("dateTime :{},count: {},map : {}",dateTime,count,map);
List<Map<String,Object>> detailList = detailDataGroupingByYear.get(dateTime.split("-")[0]);
List<Map<String,Object>> nowDateList = detailList.stream().filter(e->dateTime.equals(Util.null2String(e.get("rq")))).collect(Collectors.toList());

@ -54,8 +54,9 @@ public class YearRegularScheduling implements RegularScheduling{
String gbbc = Util.null2String(data.get("gbbc"));
//失效日期
String edate = Util.null2String(data.get("edate"));
//执行日期
String executeDate = Util.null2String(data.get("executeDate"));
RecordSet rs = new RecordSet();
//规律排班明细表数据
String sql = "select ksrq,jsrq,hxbz,bcmc from uf_jcl_kq_glpb_dt1 where mainid=?";
@ -77,19 +78,19 @@ public class YearRegularScheduling implements RegularScheduling{
int count = 0;
List<Map<String,Object>> insertDataList = Lists.newArrayList();
while (insertDataList.size() <=day){
String bcrq = DateUtil.getCurrentDatePlusDay(count);
String bcrq = DateUtil.AfterDay(executeDate,count);
if (DateUtil.getBetWeenDays(bcrq,edate) <=0){
//超过规律有效期
break;
}
leaveDay = DateUtil.getTime(DateUtil.getCurrentDatePlusDay(count));
leaveDay = DateUtil.getTime(bcrq);
for (Map<String,Object> map : detailDataList){
String ksrq = Util.null2String(map.get("ksrq"));
String jsrq = Util.null2String(map.get("jsrq"));
Map<String,Object> dataMap = Maps.newHashMap();
dataMap.put("pbtj","0");
dataMap.put("pbgl",id);
dataMap.put("bcrq",DateUtil.getCurrentDatePlusDay(count));
dataMap.put("bcrq",bcrq);
LocalDateTime beginDate = DateUtil.getTime(leaveDay.getYear()+"-"+ksrq);
LocalDateTime endDate = DateUtil.getTime(leaveDay.getYear()+"-"+jsrq);
if (DateUtil.getBetWeenDays(leaveDay.getYear()+"-"+ksrq,leaveDay.getYear()+"-"+jsrq) <0){
@ -97,7 +98,7 @@ public class YearRegularScheduling implements RegularScheduling{
endDate = DateUtil.getTime((leaveDay.getYear()+1)+"-"+jsrq);
}
if (endDate.compareTo(leaveDay) >=0 && beginDate.compareTo(leaveDay) <=0){
String dateTime =DateUtil.getCurrentDatePlusDay(count);
String dateTime =bcrq;
log.info("dateTime :{},count: {},map : {}",dateTime,count,map);
List<Map<String,Object>> detailList = detailDataGroupingByYear.get(dateTime.split("-")[0]);
List<Map<String,Object>> nowDateList = detailList.stream().filter(e->dateTime.equals(Util.null2String(e.get("rq")))).collect(Collectors.toList());

@ -0,0 +1,30 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
/**
*
*/
public enum PersonGroupListTypeEnum implements BaseEnum {
PERSON("0","人员清单"),
CONDITION("1","条件清单");
private String key;
private String value;
PersonGroupListTypeEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -0,0 +1,34 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
/**
*
*/
public enum RegularScheduleTypeEnum implements BaseEnum {
REGULAR("0","规律排班"),
IMPORT("1","导入排班"),
CALENDAR("2","日历排班"),
INTELLIGENCE("3","智能工时"),
NOW("4","现场排班"),
WORKFLOW("5","流程申请");
private String key;
private String value;
RegularScheduleTypeEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -0,0 +1,3 @@
# vacation
## 假期模块

@ -26,7 +26,13 @@ public class GetDateCmd extends AbstractCommonCommand<Map<String,Object>> {
String nd = Util.null2String(params.get("nd"));
String glpb = Util.null2String(params.get("glpb"));
String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? ";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,glpb,nd);
List<Map<String,Object>> dataList=null;
if ("".equals(glpb)){
sql = "select a.nd,a.rq,a.nlrq,a.rqlx,a.xq,a.rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where a.nd=? and b.mrrl=1";
dataList = DbTools.getSqlToList(sql,nd);
}else {
dataList = DbTools.getSqlToList(sql,glpb,nd);
}
Map<String, Object> resultMap = Maps.newHashMap();
resultMap.put("data",dataList);
return resultMap;

@ -0,0 +1,15 @@
package com.engine.common.exception;
public class AttendanceRunTimeException extends RuntimeException {
public AttendanceRunTimeException(String message) {
super(message);
}
public AttendanceRunTimeException(Throwable cause) {
super(cause);
}
public AttendanceRunTimeException(String message, Throwable cause) {
super(message, cause);
}
}

@ -1,15 +0,0 @@
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);
}
}

@ -0,0 +1,20 @@
package com.engine.common.util;
/**
* @Author liang.cheng
* @Date 2023/11/16 2:37 PM
* @Description: TODO
* @Version 1.0
*/
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 "";
}
}

@ -4,12 +4,13 @@ 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.exception.AttendanceRunTimeException;
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 com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import weaver.general.BaseBean;
import weaver.hrm.User;
@ -39,12 +40,14 @@ public class ResponseResult<T, R> {
private final BaseBean baseBean = new BaseBean();
private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log"));
private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmAttendance", "log"));
public ResponseResult(User user) {
this.user = user;
}
private static Gson gson = new Gson();
/**
*
@ -52,14 +55,14 @@ public class ResponseResult<T, R> {
public String run(Function<T, R> f, T t) {
try {
if (isLog) {
log.info("run salary api , param {}", t);
log.info("run attendance api , param {}", t);
}
return Ok(f.apply(t));
} catch (SalaryRunTimeException e) {
log.error("salary api run fail , param {}", t, e);
} catch (AttendanceRunTimeException e) {
log.error("attendance api run fail , param {}", t, e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("salary api run fail , param {}", t, e);
log.error("attendance api run fail , param {}", t, e);
Throwable cause = e.getCause();
String message = "";
while (cause != null) {
@ -71,7 +74,7 @@ public class ResponseResult<T, R> {
}
return Error(message);
} catch (Exception e) {
log.error("salary api run fail , param {}", t, e);
log.error("attendance api run fail , param {}", t, e);
return Error("系统异常!");
}
}
@ -82,18 +85,18 @@ public class ResponseResult<T, R> {
public String run(Consumer<T> f, T t) {
try {
if (isLog) {
log.info("run salary api , param {}", t);
log.info("run attendance api , param {}", t);
}
f.accept(t);
return Ok();
} catch (SalaryRunTimeException e) {
log.error("salary api run fail , param {}", t, e);
} catch (AttendanceRunTimeException e) {
log.error("attendance api run fail , param {}", t, e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("salary api run fail , param {}", t, e);
log.error("attendance api run fail , param {}", t, e);
return Error(ExceptionUtil.getRealMessage(e));
} catch (Exception e) {
log.error("salary api run fail , param {}", t, e);
log.error("attendance api run fail , param {}", t, e);
return Error("系统异常!", e);
}
}
@ -105,18 +108,18 @@ public class ResponseResult<T, R> {
public String run(Supplier<R> f) {
try {
if (isLog) {
log.info("run salary api");
log.info("run attendance api");
}
return Ok(f.get());
} catch (SalaryRunTimeException e) {
log.error("salary api run fail", e);
} catch (AttendanceRunTimeException e) {
log.error("attendance api run fail", e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("salary api run fail", e);
log.error("attendance api run fail", e);
Throwable cause = e.getCause();
return Error(cause.getMessage());
} catch (Exception e) {
log.error("salary api run fail", e);
log.error("attendance api run fail", e);
return Error("系统异常!", e);
}
}
@ -133,7 +136,7 @@ public class ResponseResult<T, R> {
private String Ok() {
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", true);
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
return gson.toJson(apidatas);
}
@ -146,7 +149,7 @@ public class ResponseResult<T, R> {
apidatas.put("data", r);
String success = getJsonString(apidatas);
if (isLog) {
log.info("run salary api success return {}", success);
log.info("run attendance api success return {}", success);
}
return success;
}
@ -174,4 +177,5 @@ public class ResponseResult<T, R> {
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
}
}

@ -1,6 +1,7 @@
package com.engine.common.util;
import com.engine.attendance.enums.*;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
@ -18,6 +19,7 @@ import java.math.MathContext;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.time.ZoneOffset;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@ -537,4 +539,26 @@ public class Utils<T> {
}
return 0;
}
/**
*
* @param dataList
* @return
*/
public static List<Map<String, Object>> getSchedulingList(List<Map<String, Object>> dataList){
Map<String,List<Map<String, Object>>> dataMaps = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcrq"))));
List<Map<String, Object>> resultList = Lists.newArrayList();
for (Map.Entry<String,List<Map<String, Object>>> entry:dataMaps.entrySet()){
String bcrq = entry.getKey();
List<Map<String, Object>> classList = entry.getValue();
if (classList.size() > 1){
classList = classList.stream().filter(e->!e.get("pbtj").equals(RegularScheduleTypeEnum.REGULAR.getKey())).collect(Collectors.toList());
classList = classList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("pbrq")+" "+e.get("pbsj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
resultList.add(classList.get(classList.size()-1));
}else {
resultList.addAll(classList);
}
}
return resultList;
}
}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save