sy 9 months ago
commit a8ff90dee3

@ -1 +1 @@
<EFBFBD><EFBFBD>Y<EFBFBD>Y<EFBFBD>Y<EFBFBD>r<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>I аyГ~цЭ|дй~Й~хд|И}фЛ~ш}Т~М|юй~с}С}юЯ}У}Ь~к~Х}Н~г}ЭЖ|б}О}ЪрqчhаjЖkЛjВhТjгiлjфkзiУhЭlЩkуoжpжxЯuЭtЧvВvтwЛvа{иxяyТxЙvЮxЦvБyиxрzпwЧvзxаЫЧшСжМЧСъмЖСЪзнНШзЭдДоЩЪДвкдЩРыщчАяПЬэяЮчцПГЗУЪлощбЭхдЪтзЖТНБУщПсЩлэррЦькмИпЙПРжпАлиШФмюмШдшжиИЖъВнлОЙНиwбsСsЪvцsЕwаtПsщyАlГtДoфsшqлlЬqЦpЗrКlыsЖsвuрsХmхoьqЛrщlйjНZК\т^Й\ФZоVфZХXШ\РVИhбwчxкzБyп{Шzб|ш{оxОxЙ|фzд|яwи{ЗvБyК|ЦVеZюUаYфSТYхXе\цXэaцcвeщ_ЮWхWц^бTмRюTЫTПZсWж[ъTЕ]ы[ЪWТRДWгVоZГZЧUЮYСQсXЮWБYЦ[кZшgО~В~ыzю~л{РzвyК{Бxи~ц|М{ъ~тж|Ф}к~н}ычaчdВ]вhп]вaь^ГaК`гaй^ж_Ш]С]И]в^Т^в^и]Т]Х`ЯkКgшgюgЩgюhШcТ]жWЬkшiцqжhЧoяLбLшLюMБMГMКMКMНMсNХMКMНMГMХMЙMНMФMХMЯKДKЕKЙKюKаJцJЪJЕKЦKБKоLшKФKГKГKЕKИKЕKЕKИJюJФJсKЕKИKФKЕKФKДKГKГKпLДKЕKшKжJаJХJДKЕKХKЦKоLЦKДKЦKИKГKФKЕKюKдJЧIсKБKЦKХKГKЕKДKГKЕKГKрLФKГKКJЪIсJтKЕKФKГKДKоLФKФKФKДKЙKДKвKшJюJФJЧKДKДKДKДK

@ -17,59 +17,62 @@
<change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/ade958e9-d72b-48ba-8be1-0441de7da9a5/entities/entities.dat_i" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" beforeDir="false" afterPath="$PROJECT_DIR$/WEB-INF/sqllog/ecologysql" afterDir="false" />
<change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/log/sdk.log" beforeDir="false" afterPath="$PROJECT_DIR$/log/sdk.log" afterDir="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$/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/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/EvectionService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/EvectionService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/AskForLeaveService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/AskForLeaveService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/WorkRulesService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/WorkRulesService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/web/WorkRulesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/calendarscheduling/web/WorkRulesController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/enums/PersonGroupListTypeEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/enums/PersonGroupListTypeEnum.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/CommonUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/CommonUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/engine/jucailinkq/common/util/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/ComputeAttendanceDurationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetAskForLeaveCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetClockInTimeListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetEvectionCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/GetScheduleResultListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/AdjustByWorkOverTimeCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/GetClockInPointCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/getclockInpoint/MergeApairClockPoint.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/ForGetClockItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/ForGetClockItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/GetOvertimeDurationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO$ClockPointDTOBuilder.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO$ClockPointDTOBuilder.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/workovertime/SaveWorkOverTimeCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/dto/clockpoint/ClockPointDTO.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/AskForLeaveService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/AskForLeaveService.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/UtilService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/UtilService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AttendanceSummaryServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ShiftServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/web/AttendanceanalysisAction.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/WorkOverTimeServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper$1.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/attendanceplan/cmd/GetWorkHoursItemByPersonCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/ImportAndExport/service/impl/ExcelExportImportServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/ImportAndExport/service/impl/ExcelExportImportServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/ImportAndExport/web/ExcelController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/ImportAndExport/web/ExcelController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/WorkRulesService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/WorkRulesService.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$1.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$2.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$3.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$3.class" afterDir="false" />
@ -78,26 +81,65 @@
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$6.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl$7.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/service/impl/WorkRulesServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/web/WorkRulesController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/calendarscheduling/web/WorkRulesController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GenerateScheduleCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GenerateScheduleCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/cmd/GetDatatableRecurrenceCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/commonutil/PersongroupCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/enums/PersonGroupListTypeEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/enums/PersonGroupListTypeEnum.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/SchedulingJob.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/SchedulingJob.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/MonthRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/WeekRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/component/persongroup/service/impl/PersonGroupServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/cmd/HandleOverdueVocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/cmd/HandleOverdueVocationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/cmd/VocationCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/job/holidaygeneration/tactics/OneTimePayMentWay.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/service/impl/VocationServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/vacation/util/VocationCommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EliminationsAskForLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EliminationsAskForLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EliminationsEvctionCheckAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EliminationsEvctionCheckAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/EvctionCheckAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/MakeUpClockInAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/OvertimePlanCheckAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/OvertimeResultCheckAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/OvertimeResultCheckAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/RevokeEliminationsAskForLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/RevokeEliminationsAskForLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/RevokeLeaveAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/RevokeLeaveAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowArchivingAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/AskForLeaveWorkFlowSubmitAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowArchivingAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/action/askforleave/BatchAskForLeaveWorkFlowSubmitAction.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetEliminationsEvctionListCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetEliminationsEvctionListCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetKqCycleTimeIntervalCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/cmd/GetRestDayIntervalCmd.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/attendance/workflow/service/impl/AskForLeaveServiceImpl.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/cmd/GetPersonDateBySuitOrganzation.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/CommonUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$1.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/DbTools.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/DbTools.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/engine/jucailinkq/common/util/Utils.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$10.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$10.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$11.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$11.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$12.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$12.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$13.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$13.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$14.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$14.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$15.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$15.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$16.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$16.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$2.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$3.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$3.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$4.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$5.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$6.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$7.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$8.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$8.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test$9.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test$9.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/test-classes/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Test.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/TestAttendanceAllowance/Test.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/TestObj.class" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/target/test-classes/Tset_sy.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/Tset_sy.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/test/TestRunnable.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/test/TestRunnable.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" afterDir="false" /> <change beforePath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/vocation/Test1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/target/test-classes/workflow/Test1.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/test-classes/workflow/Test1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/Test.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/test/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/Test.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/TestAttendanceAllowance/Test.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/TestObj.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/LogAnalyzerService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/test/TestRunnable.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/test/TestRunnable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/vocation/Test1.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/vocation/Test1.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/test/vocation/Test1.java" beforeDir="false" afterPath="$PROJECT_DIR$/test/vocation/Test1.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -163,11 +205,11 @@
<recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" /> <recent name="D:\项目备份\考勤\hrm-attendance\src\com\engine\jucailin\cmd\calendar" />
</key> </key>
<key name="CopyClassDialog.RECENTS_KEY"> <key name="CopyClassDialog.RECENTS_KEY">
<recent name="vocation" />
<recent name="web" /> <recent name="web" />
<recent name="workflow" /> <recent name="workflow" />
<recent name="" /> <recent name="" />
<recent name="com.engine.attendance.attendanceanalysis.cmd.getclockInpoint" /> <recent name="com.engine.attendance.attendanceanalysis.cmd.getclockInpoint" />
<recent name="vocation" />
</key> </key>
</component> </component>
<component name="RunAnythingCache"> <component name="RunAnythingCache">
@ -223,24 +265,24 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="Test1.test4" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" /> <module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" /> <shortenClasspath name="MANIFEST" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
<option name="PATTERN" value="TestAttendanceAllowance.*" /> <option name="PATTERN" value="vocation.*" />
<option name="ENABLED" value="true" /> <option name="ENABLED" value="true" />
</pattern> </pattern>
</extension> </extension>
<option name="PACKAGE_NAME" value="TestAttendanceAllowance" /> <option name="PACKAGE_NAME" value="vocation" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" /> <option name="MAIN_CLASS_NAME" value="vocation.Test1" />
<option name="METHOD_NAME" value="testAnalysis" /> <option name="METHOD_NAME" value="test4" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="Test.testRealse4" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="Test.testAnalysis" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="hrm-attendance" /> <module name="hrm-attendance" />
<shortenClasspath name="MANIFEST" /> <shortenClasspath name="MANIFEST" />
<extension name="coverage"> <extension name="coverage">
@ -251,7 +293,7 @@
</extension> </extension>
<option name="PACKAGE_NAME" value="TestAttendanceAllowance" /> <option name="PACKAGE_NAME" value="TestAttendanceAllowance" />
<option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" /> <option name="MAIN_CLASS_NAME" value="TestAttendanceAllowance.Test" />
<option name="METHOD_NAME" value="testRealse4" /> <option name="METHOD_NAME" value="testAnalysis" />
<option name="TEST_OBJECT" value="method" /> <option name="TEST_OBJECT" value="method" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
@ -267,10 +309,10 @@
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="JUnit.Test.testAnalysis" /> <item itemvalue="JUnit.Test.testAnalysis" />
<item itemvalue="Application.LogAnalyzerService" /> <item itemvalue="JUnit.Test1.test4" />
<item itemvalue="JUnit.Test.testRealse4" />
<item itemvalue="JUnit.Test1.test3" />
<item itemvalue="Application.Test" /> <item itemvalue="Application.Test" />
<item itemvalue="JUnit.Test1.test3" />
<item itemvalue="Application.LogAnalyzerService" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -817,7 +859,12 @@
<workItem from="1721368956264" duration="12110000" /> <workItem from="1721368956264" duration="12110000" />
<workItem from="1721544596442" duration="1180000" /> <workItem from="1721544596442" duration="1180000" />
<workItem from="1721610705217" duration="9332000" /> <workItem from="1721610705217" duration="9332000" />
<workItem from="1721625873942" duration="1817000" /> <workItem from="1721625873942" duration="16286000" />
<workItem from="1721697608001" duration="8678000" />
<workItem from="1721711913187" duration="18067000" />
<workItem from="1721783731164" duration="2998000" />
<workItem from="1721788003483" duration="4848000" />
<workItem from="1721798322794" duration="15589000" />
</task> </task>
<servers /> <servers />
</component> </component>
@ -871,25 +918,25 @@
<line>582</line> <line>582</line>
<option name="timeStamp" value="243" /> <option name="timeStamp" value="243" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java</url>
<line>116</line>
<option name="timeStamp" value="253" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java</url> <url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/cmd/RecordDataCmd.java</url>
<line>141</line> <line>141</line>
<option name="timeStamp" value="254" /> <option name="timeStamp" value="254" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java</url> <url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java</url>
<line>327</line> <line>302</line>
<option name="timeStamp" value="279" /> <option name="timeStamp" value="324" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/ComprehensiveWorkingHourServiceImpl.java</url>
<line>273</line>
<option name="timeStamp" value="328" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="java-line"> <line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java</url> <url>file://$PROJECT_DIR$/src/com/engine/jucailinkq/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java</url>
<line>27</line> <line>508</line>
<option name="timeStamp" value="283" /> <option name="timeStamp" value="337" />
</line-breakpoint> </line-breakpoint>
</breakpoints> </breakpoints>
</breakpoint-manager> </breakpoint-manager>
@ -910,7 +957,7 @@
<SUITE FILE_PATH="coverage/hrm_attendance$TestgetDepartSchedule_test2.ic" NAME="TestgetDepartSchedule.test2 Coverage Results" MODIFIED="1718071420719" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <SUITE FILE_PATH="coverage/hrm_attendance$TestgetDepartSchedule_test2.ic" NAME="TestgetDepartSchedule.test2 Coverage Results" MODIFIED="1718071420719" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>calendarscheduling.*</FILTER> <FILTER>calendarscheduling.*</FILTER>
</SUITE> </SUITE>
<SUITE FILE_PATH="coverage/hrm_attendance$Test_testAnalysis.ic" NAME="Test.testAnalysis Coverage Results" MODIFIED="1721375175460" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <SUITE FILE_PATH="coverage/hrm_attendance$Test_testAnalysis.ic" NAME="Test.testAnalysis Coverage Results" MODIFIED="1721724677825" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>TestAttendanceAllowance.*</FILTER> <FILTER>TestAttendanceAllowance.*</FILTER>
</SUITE> </SUITE>
<SUITE FILE_PATH="coverage/hrm_attendance$Test_testjob.ic" NAME="Test.testjob Coverage Results" MODIFIED="1720164636425" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <SUITE FILE_PATH="coverage/hrm_attendance$Test_testjob.ic" NAME="Test.testjob Coverage Results" MODIFIED="1720164636425" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -171,16 +171,19 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
//弹性请假,半天请假 //弹性请假,半天请假
if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){ if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
//半天请假 //半天请假
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate); if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
if (schedules.size() > 0){ Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum(); if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
}
}else { }else {
employTime +=edsc*30; employTime +=edsc*30;
} }
}else if (!"".equals(qjsc)){ }else if (!"".equals(qjsc)){
//时长请假 //时长请假
if (offsetAbnomaly.size() > 0){ if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
List<Map<String, Object>> list = offsetAbnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); List<Map<String, Object>> list = offsetAbnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(offsetAbnomaly.size()) *Double.valueOf(qjsc)*60); employTime += Math.round(list.size()/Double.valueOf(offsetAbnomaly.size()) *Double.valueOf(qjsc)*60);
}else { }else {
@ -220,6 +223,8 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
Map<Map<String, Object>,List<Map<String, Object>>> evectionToOffsetAbnomaly){ Map<Map<String, Object>,List<Map<String, Object>>> evectionToOffsetAbnomaly){
double employTime = 0; double employTime = 0;
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString()); double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
//半天规则
String btgz = Util.null2String(scheduleResult.get(0).get("btgz"));
Map<String,List<Map<String,Object>>> evectionGroupMap = evectionList.stream().filter(e->!"".equals(Util.null2String(e.get("kssj"))) && !"".equals(Util.null2String(e.get("jssj")))) Map<String,List<Map<String,Object>>> evectionGroupMap = evectionList.stream().filter(e->!"".equals(Util.null2String(e.get("kssj"))) && !"".equals(Util.null2String(e.get("jssj"))))
.collect(Collectors.groupingBy(e->Util.null2String(e.get("ksrq"))+Util.null2String(e.get("kssj"))+"&"+Util.null2String(e.get("jsrq"))+Util.null2String(e.get("jssj")))); .collect(Collectors.groupingBy(e->Util.null2String(e.get("ksrq"))+Util.null2String(e.get("kssj"))+"&"+Util.null2String(e.get("jsrq"))+Util.null2String(e.get("jssj"))));
@ -238,43 +243,52 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
//出差时长分钟数 //出差时长分钟数
int ccscMinute = "".equals(ccsc)?0:Double.valueOf(Math.ceil(Double.valueOf(ccsc)*60)).intValue(); int ccscMinute = "".equals(ccsc)?0:Double.valueOf(Math.ceil(Double.valueOf(ccsc)*60)).intValue();
//出差项目 //出差项目
Map<String,Object> askForLeaveItem = evectionItems.get(evectionList.get(i).get("cclx")); Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx"));
//半天出差 //半天出差
String btcc = Util.null2String(evectionList.get(i).get("btcc")); String btcc = Util.null2String(evectionList.get(i).get("btcc"));
//作用时段 //作用时段
String zysd = Util.null2String(askForLeaveItem.get("zysd")); String zysd = Util.null2String(evectionItem.get("zysd"));
//消除异常
List<Map<String, Object>> abnormalList = evectionToOffsetAbnomaly.get(evectionList.get(i)); List<Map<String, Object>> offsetAbnomaly = evectionToOffsetAbnomaly.get(evectionList.get(i));
if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){ if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){
continue; continue;
} }
if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){ if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){
//弹性请假,半天出差 //半天出差
if (CheckBoxEnum.CHECKED.getKey().equals(btcc)){ if (CheckBoxEnum.CHECKED.getKey().equals(btcc) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
//半天出差 //半天出差
employTime = employTime + edsc*30; if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
}
}else {
employTime +=edsc*30;
}
}else if (!"".equals(ccsc)){ }else if (!"".equals(ccsc)){
//时长请假 //时长出差
if (abnormalList.size() > 0){ if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
List<Map<String, Object>> list = abnormalList.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); List<Map<String, Object>> list = offsetAbnomaly.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
employTime += Math.round(list.size()/Double.valueOf(abnormalList.size()) *Double.valueOf(ccsc)*60); employTime += Math.round(list.size()/Double.valueOf(offsetAbnomaly.size()) *Double.valueOf(ccsc)*60);
}else { }else {
employTime += Double.valueOf(ccsc)*60; employTime +=Double.valueOf(ccsc)*60;
} }
} }
} }
} }
for (int i=0;i<filterEvectionList.size();i++){ for (int i=0;i<filterEvectionList.size();i++){
//出差项目 //出差项目
Map<String,Object> askForLeaveItem = evectionItems.get(filterEvectionList.get(i).get("cclx")); Map<String,Object> evectionItem = evectionItems.get(filterEvectionList.get(i).get("cclx"));
//作用时段 //作用时段
String zysd = Util.null2String(askForLeaveItem.get("zysd")); String zysd = Util.null2String(evectionItem.get("zysd"));
if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){ if (!zysd.contains(WorkForTimeEnum.WORK_TIME.getKey()) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){
continue; continue;
} }
//按照开始时间,结束时间请假 //按照开始时间,结束时间出差
for (Map<String, Object> scheduleMap:scheduleResult){ for (Map<String, Object> scheduleMap:scheduleResult){
String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate); String dtkssj = Utils.getkssjTime(scheduleMap,analysisDate);
String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate); String dtjssj = Utils.getjssjTime(scheduleMap,analysisDate);

@ -46,7 +46,15 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
Map<String, List<Map<String,Object>>> collect = (Map<String, List<Map<String,Object>>>)params.get("clockInTimeCollect"); Map<String, List<Map<String,Object>>> collect = (Map<String, List<Map<String,Object>>>)params.get("clockInTimeCollect");
//分析人员 //分析人员
String userId = Util.null2String(params.get("userId")); String userId = Util.null2String(params.get("userId"));
//
List<Map<String, Object>> workHourItems = (List<Map<String, Object>>)(params.get("workHourItems"));
String ifPriority = "";
if (workHourItems != null && workHourItems.size() > 0) {
ifPriority = Util.null2String(workHourItems.get(0).get("hlpbyxsyzhgs"));
}
//没有打卡记录 //没有打卡记录
if (clockInTimeList == null ||clockInTimeList.size() == 0){ if (clockInTimeList == null ||clockInTimeList.size() == 0){
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
@ -55,18 +63,9 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
return resultMap; return resultMap;
} }
if (needGetDateScheduling == null || needGetDateScheduling.size() == 0){ if (needGetDateScheduling == null || needGetDateScheduling.size() == 0 || ifPriority.equals(CheckBoxEnum.CHECKED.getKey())){
//没有排班,默认取当天和第二天的打卡数据
List<Map<String,Object>> effectiveclockInTimeList = Lists.newArrayList();
if (collect.get(needGetDate) != null){
effectiveclockInTimeList.addAll(collect.get(needGetDate));
}
if (collect.get(DateUtil.AfterDay(needGetDate,1)) != null){
effectiveclockInTimeList.addAll(collect.get(DateUtil.AfterDay(needGetDate,1)));
}
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("resultList",effectiveclockInTimeList); resultMap.put("resultList",getEarliestTime(clockInTimeMap,clockInTimeList));
return resultMap; return resultMap;
} }
@ -80,16 +79,9 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (scheduleList == null || scheduleList.size() == 0){ if (scheduleList == null || scheduleList.size() == 0){
//没有排班,默认取当天和第二天的打卡数据 //没有排班
List<Map<String,Object>> effectiveclockInTimeList = Lists.newArrayList();
if (collect.get(needGetDate) != null){
effectiveclockInTimeList.addAll(collect.get(needGetDate));
}
if (collect.get(DateUtil.AfterDay(needGetDate,1)) != null){
effectiveclockInTimeList.addAll(collect.get(DateUtil.AfterDay(needGetDate,1)));
}
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("resultList",effectiveclockInTimeList); resultMap.put("resultList",getEarliestTime(clockInTimeMap,clockInTimeList));
return resultMap; return resultMap;
} }
@ -132,17 +124,17 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
//当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据 //当最早打卡时间点在前一天时,获取前一天的出勤结果打卡数据
String earliestDate = earliestTime.split(" ")[0]; String earliestDate = earliestTime.split(" ")[0];
Map<String,Object> clockIntime = clockInTimeMap.get(earliestDate); Map<String,Object> clockIntime = clockInTimeMap.get(earliestDate);
if (clockIntime == null){ if (clockIntime == null || clockIntime.size()==0){
String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?"; String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?";
List<Map<String,Object>> attendanceResult = DbTools.getSqlToList(sql,userId,DateUtil.beforeDay(earliestDate,1),earliestDate); List<Map<String,Object>> attendanceResult = DbTools.getSqlToList(sql,userId,DateUtil.beforeDay(earliestDate,1),earliestDate);
Map<String, List<Map<String,Object>>> attendanceCollect = attendanceResult.stream().collect(Collectors.groupingBy(e->e.get("rq").toString())); Map<String, List<Map<String,Object>>> attendanceCollect = attendanceResult.stream().collect(Collectors.groupingBy(e->e.get("rq").toString()));
clockIntime = attendanceCollect.get(earliestDate) == null?null:attendanceCollect.get(earliestDate).get(0); clockIntime = attendanceCollect.get(earliestDate) == null?null:attendanceCollect.get(earliestDate).get(0);
if (clockIntime == null){ if (clockIntime == null || clockIntime.size()==0){
//取不到当天的就再往前取一天 //取不到当天的就再往前取一天
clockIntime = attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)) == null?null:attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)).get(0); clockIntime = attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)) == null?null:attendanceCollect.get(DateUtil.beforeDay(earliestDate,1)).get(0);
} }
} }
if (clockIntime !=null){ if (clockIntime !=null && clockIntime.size()>0){
for (int i=8;i>0;i--){ for (int i=8;i>0;i--){
String in = Util.null2String(clockIntime.get("j"+i)); String in = Util.null2String(clockIntime.get("j"+i));
String out = Util.null2String(clockIntime.get("c"+i)); String out = Util.null2String(clockIntime.get("c"+i));
@ -200,4 +192,49 @@ public class GetClockInTimeListCmd extends AbstractCommonCommand<Map<String,Obje
return resultMap; return resultMap;
} }
public List<Map<String,Object>> getEarliestTime(Map<String,Map<String,Object>> clockInTimeMap,List<Map<String,Object>> clockInTimeList){
String date = Util.null2String(params.get("date"));
String beforeOneDay = DateUtil.beforeDay(date ,1);
String userId = Util.null2String(params.get("userId"));
String earliestTime = date+" 00:00:00";
Map<String,Object> clockIntime = clockInTimeMap.get(date);
if (clockIntime == null || clockIntime.size() == 0){
String sql = "select rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where ygid=? and rq>=? and rq<=?";
List<Map<String,Object>> attendanceResult = DbTools.getSqlToList(sql,userId,DateUtil.beforeDay(beforeOneDay,1),beforeOneDay);
Map<String, List<Map<String,Object>>> attendanceCollect = attendanceResult.stream().collect(Collectors.groupingBy(e->e.get("rq").toString()));
clockIntime = attendanceCollect.get(beforeOneDay) == null?null:attendanceCollect.get(beforeOneDay).get(0);
if (clockIntime == null || clockIntime.size() == 0){
//取不到当天的就再往前取一天
clockIntime = attendanceCollect.get(DateUtil.beforeDay(beforeOneDay,1)) == null?null:attendanceCollect.get(DateUtil.beforeDay(beforeOneDay,1)).get(0);
}
}
if (clockIntime !=null && clockIntime.size()>0){
for (int i=8;i>0;i--){
String in = Util.null2String(clockIntime.get("j"+i));
String out = Util.null2String(clockIntime.get("c"+i));
if (!"".equals(out) && !"NULL".equals(out)){
if (DateUtil.getTime(out).compareTo(DateUtil.getTime(earliestTime)) > 0){
earliestTime = out;
}
break;
}else if (!"".equals(in) && !"NULL".equals(in)){
if (DateUtil.getTime(in).compareTo(DateUtil.getTime(earliestTime)) > 0){
earliestTime = in;
}
break;
}
}
}
String finalEarliestTime = earliestTime;
List<Map<String,Object>> resultList = clockInTimeList.stream().filter(e->{
String signDate = e.get("signdate")+" "+e.get("signtime");
if ((DateUtil.getTime(signDate).compareTo(DateUtil.getTime(finalEarliestTime)) >0)){
return true;
}else {
return false;
}
}).collect(Collectors.toList());
return resultList;
}
} }

@ -58,8 +58,10 @@ public class AdjustByWorkOverTimeCmd extends AbstractCommonCommand<Map<String, O
String jssj = Utils.getjssjTime(adjustScheduleMap,analysisDate); String jssj = Utils.getjssjTime(adjustScheduleMap,analysisDate);
//原先卡点不计异常 //原先卡点不计异常
clockPointDTO.setRecord(false); clockPointDTO.setRecord(false);
ClockPointDTO adjustClockPointDTO = ClockPointDTO.builder().classTime(jssj).pointType(ClockPointEnum.END).timeType(clockPointDTO.getTimeType()) ClockPointDTO adjustClockPointDTO = ClockPointDTO.builder().classTime(jssj).pointType(ClockPointEnum.END).timeType(clockPointDTO.getTimeType())
.classSegmentType(adjustScheduleMap.get("bdlx").toString()).clockTime(clockPointDTO.getClockTime()).record(true).build(); .classSegmentType(adjustScheduleMap.get("bdlx").toString()).clockTime(clockPointDTO.getClockTime()).record(true).build();
// clockPointDTO.setResourceClockPointDTO(adjustClockPointDTO);
adjustClcokInPointList.add(adjustClockPointDTO); adjustClcokInPointList.add(adjustClockPointDTO);
} }
}else if (clockPointDTO.getPointType() == ClockPointEnum.START){ }else if (clockPointDTO.getPointType() == ClockPointEnum.START){
@ -73,6 +75,7 @@ public class AdjustByWorkOverTimeCmd extends AbstractCommonCommand<Map<String, O
clockPointDTO.setRecord(false); clockPointDTO.setRecord(false);
ClockPointDTO adjustClockPointDTO = ClockPointDTO.builder().classTime(kssj).pointType(ClockPointEnum.START).timeType(clockPointDTO.getTimeType()) ClockPointDTO adjustClockPointDTO = ClockPointDTO.builder().classTime(kssj).pointType(ClockPointEnum.START).timeType(clockPointDTO.getTimeType())
.classSegmentType(adjustScheduleMap.get("bdlx").toString()).clockTime(clockPointDTO.getClockTime()).record(true).build(); .classSegmentType(adjustScheduleMap.get("bdlx").toString()).clockTime(clockPointDTO.getClockTime()).record(true).build();
// clockPointDTO.setResourceClockPointDTO(adjustClockPointDTO);
adjustClcokInPointList.add(adjustClockPointDTO); adjustClcokInPointList.add(adjustClockPointDTO);
} }

@ -61,7 +61,6 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction {
if (!Utils.ifRestClassSegment(clockPointDTO.getClassSegmentType())){ if (!Utils.ifRestClassSegment(clockPointDTO.getClassSegmentType())){
if (clockPointDTO.getPointType() == ClockPointEnum.START){ if (clockPointDTO.getPointType() == ClockPointEnum.START){
clockPointDTO.setTimeType(ClockPointEnum.EMPTY); clockPointDTO.setTimeType(ClockPointEnum.EMPTY);
clockPointDTO.setResourceClockPointDTO(startPointDTO);
adjustClcokInPointList.add(clockPointDTO); adjustClcokInPointList.add(clockPointDTO);
} }
} }
@ -80,7 +79,6 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction {
if (clockPointDTO.getPointType() == ClockPointEnum.START && DateUtil.getTime(startClockTime).compareTo(DateUtil.getTime(clockPointDTO.getClassTime())) > 0){ if (clockPointDTO.getPointType() == ClockPointEnum.START && DateUtil.getTime(startClockTime).compareTo(DateUtil.getTime(clockPointDTO.getClassTime())) > 0){
clockPointDTO.setTimeType(ClockPointEnum.AFTER); clockPointDTO.setTimeType(ClockPointEnum.AFTER);
clockPointDTO.setClockTime(startPointDTO.getClockTime()); clockPointDTO.setClockTime(startPointDTO.getClockTime());
clockPointDTO.setResourceClockPointDTO(startPointDTO);
adjustClcokInPointList.add(clockPointDTO); adjustClcokInPointList.add(clockPointDTO);
} }
} }
@ -95,7 +93,6 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction {
if (!Utils.ifRestClassSegment(clockPointDTO.getClassSegmentType())){ if (!Utils.ifRestClassSegment(clockPointDTO.getClassSegmentType())){
if (clockPointDTO.getPointType() == ClockPointEnum.END){ if (clockPointDTO.getPointType() == ClockPointEnum.END){
clockPointDTO.setTimeType(ClockPointEnum.EMPTY); clockPointDTO.setTimeType(ClockPointEnum.EMPTY);
clockPointDTO.setResourceClockPointDTO(endPointDTO);
adjustClcokInPointList.add(clockPointDTO); adjustClcokInPointList.add(clockPointDTO);
} }
} }
@ -112,7 +109,6 @@ public class MergeApairClockPoint extends AbstractAdjustClockPointAction {
if (clockPointDTO.getPointType() == ClockPointEnum.END && DateUtil.getTime(endClockTime).compareTo(DateUtil.getTime(clockPointDTO.getClassTime())) < 0){ if (clockPointDTO.getPointType() == ClockPointEnum.END && DateUtil.getTime(endClockTime).compareTo(DateUtil.getTime(clockPointDTO.getClassTime())) < 0){
clockPointDTO.setTimeType(ClockPointEnum.BEFORE); clockPointDTO.setTimeType(ClockPointEnum.BEFORE);
clockPointDTO.setClockTime(endPointDTO.getClockTime()); clockPointDTO.setClockTime(endPointDTO.getClockTime());
clockPointDTO.setResourceClockPointDTO(endPointDTO);
adjustClcokInPointList.add(clockPointDTO); adjustClcokInPointList.add(clockPointDTO);
} }
} }

@ -307,7 +307,10 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
if (!zysd.contains(Utils.getWorkFor(bdlx)) && !zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())){ if (!zysd.contains(Utils.getWorkFor(bdlx)) && !zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())){
continue; continue;
} }
List<Map<String, Object>> list = Utils.getAbnormalListBySchedule(scheduleMap,abnormalList,Util.null2String(params.get("analysisDate"))); List<Map<String, Object>> list = Lists.newArrayList();
if (abnormalList != null && abnormalList.size() > 0){
list = Utils.getAbnormalListBySchedule(scheduleMap,abnormalList,Util.null2String(params.get("analysisDate")));
}
if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){ if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){
if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){ if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
@ -319,8 +322,10 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
} }
} else if (!"".equals(qjsc)){ } else if (!"".equals(qjsc)){
//时长请假 //时长请假
if (abnormalList.size() > 0){ if (abnormalList != null && abnormalList.size() > 0){
employTime += Math.round(list.size()/Double.valueOf(abnormalList.size()) *Double.valueOf(qjsc)*60); employTime += Math.round(list.size()/Double.valueOf(abnormalList.size()) *Double.valueOf(qjsc)*60);
}else if (zysd.equals(Utils.getWorkFor(bdlx))){
employTime = Double.valueOf(Double.valueOf(qjsc)*60).intValue();
} }
} }
}else { }else {
@ -335,38 +340,57 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
* *
* @param kssj * @param kssj
* @param jssj * @param jssj
* @param evectionList * @param evectionList
* @return * @return
*/ */
public int removeEvection(Map<String, Object> scheduleMap,String kssj,String jssj,String bdlx,List<Map<String, Object>> evectionList,Map<String, public int removeEvection(Map<String, Object> scheduleMap,String kssj,String jssj,String bdlx,List<Map<String, Object>> evectionList,Map<String,
Map<String,Object>> evectionItems,Map<Map<String, Object>,List<Map<String, Object>>> evectionToOffsetAbnomaly){ Map<String,Object>> evectionItems,Map<Map<String, Object>,List<Map<String, Object>>> evectionToOffsetAbnomaly){
int askForLeaveTime=0; int employTime=0;
//半天规则
String btgz = Util.null2String(scheduleMap.get("btgz"));
for (int i=0;i<evectionList.size();i++){ for (int i=0;i<evectionList.size();i++){
//出差时长 //出差时长
String qjsc = Util.null2String(evectionList.get(i).get("ccsc")); String ccsc = Util.null2String(evectionList.get(i).get("ccsc"));
//出差项目 //出差项目
Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx")); Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx"));
//作用时段 //作用时段
String zysd = Util.null2String(evectionItem.get("zysd")); String zysd = Util.null2String(evectionItem.get("zysd"));
//异常 //消除异常
List<Map<String, Object>> abnormalList = evectionToOffsetAbnomaly.get(evectionList.get(i)); List<Map<String, Object>> abnormalList = evectionToOffsetAbnomaly.get(evectionList.get(i));
//半天出差
String btcc = Util.null2String(evectionItem.get("btcc"));
if (!zysd.contains(Utils.getWorkFor(bdlx)) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){ if (!zysd.contains(Utils.getWorkFor(bdlx)) && !WorkForTimeEnum.ALL_TIME.getKey().equals(zysd)){
continue; continue;
} }
List<Map<String, Object>> list = Lists.newArrayList();
if (abnormalList != null && abnormalList.size() > 0){
list = Utils.getAbnormalListBySchedule(scheduleMap,abnormalList,Util.null2String(params.get("analysisDate")));
}
if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){ if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){
if (!"".equals(qjsc)){ if (CheckBoxEnum.CHECKED.getKey().equals(btcc) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
if (abnormalList.size() > 0){ //半天出差
List<Map<String, Object>> list = abnormalList.stream().filter(e->bdlx.equals(e.get("bdlx"))).collect(Collectors.toList()); if (list.size() > 0){
askForLeaveTime += Math.round(list.size()/Double.valueOf(abnormalList.size()) *Double.valueOf(qjsc)*60); employTime+=Double.valueOf(scheduleMap.get("edfzs").toString());
}else if (zysd.equals(Utils.getWorkFor(bdlx))){
employTime+=Double.valueOf(scheduleMap.get("edfzs").toString());
}
} else if (!"".equals(ccsc)){
//时长请假
if (abnormalList != null && abnormalList.size() > 0){
employTime += Math.round(list.size()/Double.valueOf(abnormalList.size()) *Double.valueOf(ccsc)*60);
}else if (zysd.equals(Utils.getWorkFor(bdlx))){
employTime = Double.valueOf(Double.valueOf(ccsc)*60).intValue();
} }
} }
}else { }else {
//按照开始时间,结束时间请假 //按照开始时间,结束时间请假
askForLeaveTime +=Utils.getStartAndEndTime(kssj,jssj,evectionList.get(i)); employTime +=Utils.getStartAndEndTime(kssj,jssj,evectionList.get(i));
} }
} }
return askForLeaveTime; return employTime;
} }

@ -21,7 +21,7 @@ public interface EvectionService {
* @param param * @param param
* @return * @return
*/ */
List<Map<String,Object>> evectionByHalfDay(Map<String,Object> param); Map<String,Object> evectionByHalfDay(Map<String,Object> param);
/** /**
* *
* @param param * @param param

@ -39,11 +39,10 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
List<Map<String,Object>> offsetAskForLeaveAnomaly = Lists.newArrayList(); List<Map<String,Object>> offsetAskForLeaveAnomaly = Lists.newArrayList();
for (int i=0;i<abnormalClockInList.size();i++){ for (int i=0;i<abnormalClockInList.size();i++){
String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx")); String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx"));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInList.get(i).get("itemType");
String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime")); String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime"));
String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime")); String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime"));
if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) && if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) &&
!AttendanceItemTypeEnum.MISSE_CARD.equals(itemType)){ !"".equals(classStartTime) && !"".equals(classEndTime)){
Map<String,Object> leaveMap = Maps.newHashMap(); Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj); leaveMap.put("kssj",kssj);
leaveMap.put("jssj",jssj); leaveMap.put("jssj",jssj);
@ -323,15 +322,26 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
return resultMap; return resultMap;
} }
/**
* recordtruerecordfalse
* @param abnormalClockInList
* @param offsetAskForLeaveAnomaly
* @return
*/
public List<Map<String,Object>> getAbnormalClockInList(List<Map<String,Object>> abnormalClockInList,List<Map<String,Object>> offsetAskForLeaveAnomaly){ public List<Map<String,Object>> getAbnormalClockInList(List<Map<String,Object>> abnormalClockInList,List<Map<String,Object>> offsetAskForLeaveAnomaly){
abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("pointTime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("pointTime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
for (Map<String,Object> offsetAbnormal:offsetAskForLeaveAnomaly){ for (Map<String,Object> offsetAbnormal:offsetAskForLeaveAnomaly){
if ((boolean)offsetAbnormal.get("record")){ if ((boolean)offsetAbnormal.get("record")){
String pointTime = offsetAbnormal.get("pointTime").toString(); AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)offsetAbnormal.get("itemType");
String classStartTime = Util.null2String(offsetAbnormal.get("classStartTime"));
String classEndTime = Util.null2String(offsetAbnormal.get("classEndTime"));
if (abnormalClockInList.size() > 0){ if (abnormalClockInList.size() > 0){
for (int i = abnormalClockInList.size()-1;i>=0;i--){ for (int i = abnormalClockInList.size()-1;i>=0;i--){
if (!(boolean)abnormalClockInList.get(i).get("record") && pointTime.equals(abnormalClockInList.get(i).get("resourceClassTime"))){ if (!(boolean)abnormalClockInList.get(i).get("record") && abnormalClockInList.get(i).get("itemType") == itemType &&
DateUtil.getTime(classStartTime).compareTo(DateUtil.getTime(abnormalClockInList.get(i).get("pointTime").toString())) <= 0 &&
DateUtil.getTime(classEndTime).compareTo(DateUtil.getTime(abnormalClockInList.get(i).get("pointTime").toString())) >=0){
abnormalClockInList.get(i).put("record",true); abnormalClockInList.get(i).put("record",true);
break;
} }
} }
} }

@ -61,6 +61,7 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
//核算工时的日期类型 //核算工时的日期类型
String hsgsdrqlx = Util.null2String(workHourItem.get("hsgsdrqlx")); String hsgsdrqlx = Util.null2String(workHourItem.get("hsgsdrqlx"));
String cqzt = "0"; String cqzt = "0";
String rqlx = Utils.getDateType(analysisDate,Util.null2String(workHourItem.get("qyrl"))); String rqlx = Utils.getDateType(analysisDate,Util.null2String(workHourItem.get("qyrl")));
@ -214,7 +215,7 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
//综合工时 //综合工时
Map<String,Object> workHourItem = (Map<String,Object>)param.get("workHourItem"); Map<String,Object> workHourItem = (Map<String,Object>)param.get("workHourItem");
//最早打卡上班的开始时间 //最早打卡上班的开始时间
String zzdksbdkssj = Util.null2String(workHourItem.get("zzdksbdkssj")); String zzdksbdkssj = Util.null2String(workHourItem.get("zzdksbdkssj"))+":00";
//最晚打卡下班的开始时间 //最晚打卡下班的开始时间
String zwdkxbdkssj = Util.null2String(workHourItem.get("zwdkxbdkssj")); String zwdkxbdkssj = Util.null2String(workHourItem.get("zwdkxbdkssj"));
//日工作时长计算规则 0:最早最晚打卡间隔时长,1:依次累加成对打卡间隔时长 //日工作时长计算规则 0:最早最晚打卡间隔时长,1:依次累加成对打卡间隔时长
@ -222,19 +223,20 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
//调整上班开始到 //调整上班开始到
String dzsbksd = Util.null2String(workHourItem.get("dzsbksd")); String dzsbksd = Util.null2String(workHourItem.get("dzsbksd"));
//误打卡忽略分钟数 //误打卡忽略分钟数
int wdkhlfzs = Util.null2String(workHourItem.get("wdkhlfzs")).equals("")?1:Integer.valueOf(Util.null2String(workHourItem.get("wdkhlfzs"))); int wdkhlfzs = Util.null2String(workHourItem.get("yxdkzxjgfzs")).equals("")?1:Integer.valueOf(Util.null2String(workHourItem.get("yxdkzxjgfzs")));
//当天漏卡延长取第二天打卡
String dtlkycqdetdk = Util.null2String(workHourItem.get("dtlkycqdetdk"));
String startTime = analysisDate+" "+zzdksbdkssj; String startTime = analysisDate+" "+zzdksbdkssj;
String endTime = analysisDate+" "+zwdkxbdkssj; String endTime = analysisDate+" "+zwdkxbdkssj+":00";
if ("".equals(zwdkxbdkssj)){ if ("".equals(zwdkxbdkssj)){
endTime = DateUtil.AfterDay(analysisDate,1)+" "+zzdksbdkssj; endTime = DateUtil.AfterDay(analysisDate,1)+" "+zzdksbdkssj;
endTime = DateUtil.beforeMinutes(endTime,1); endTime = DateUtil.beforeMinutes(endTime,1);
} }
if (DateUtil.getTime(startTime).compareTo(DateUtil.getTime(endTime)) >=0){ if (DateUtil.getTime(startTime).compareTo(DateUtil.getTime(endTime)) >=0){
endTime = DateUtil.AfterDay(analysisDate,1) +" "+zwdkxbdkssj; endTime = DateUtil.AfterDay(analysisDate,1) +" "+zwdkxbdkssj+":00";
} }
String finalEndTime = endTime; String finalEndTime = endTime;
@ -249,6 +251,22 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
clockInTimeList = clockInTimeList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); clockInTimeList = clockInTimeList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
if (clockInTimeList.size()==1 && dtlkycqdetdk.equals(CheckBoxEnum.CHECKED.getKey())){
//当天打卡是奇次的,第二天第一笔卡拿过来当当天的下班卡,且第二天的上班从第二笔卡开始
String nextEndTime = DateUtil.AfterDay(endTime.split(" ")[0],1)+" "+endTime.split(" ")[1];
String finalEndTime1 = endTime;
List<Map<String,Object>> nextClockList = ((List<Map<String,Object>>) param.get("clockInTimeCollect")).stream().filter(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).
compareTo(DateUtil.getTime(nextEndTime)) <=0 && DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).compareTo(DateUtil.getTime(finalEndTime1)) > 0)
.sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
String lastSignTime = clockInTimeList.get(0).get("signdate")+" "+clockInTimeList.get(0).get("signtime");
for (Map<String,Object> nextClock:nextClockList){
String nextSign = nextClock.get("signdate")+" "+nextClock.get("signtime");
if (DateUtil.getBetWeenMinutes(lastSignTime,nextSign) >=wdkhlfzs){
clockInTimeList.add(nextClock);
break;
}
}
}
if (clockInTimeList.size() == 0 || clockInTimeList.size() ==1){ if (clockInTimeList.size() == 0 || clockInTimeList.size() ==1){
return clockInTimeList; return clockInTimeList;
} }
@ -263,27 +281,44 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
//依次累加成对打卡间隔时长 //依次累加成对打卡间隔时长
if (clockInTimeList.size() > 1){ if (clockInTimeList.size() > 1){
//数据清洗 //数据清洗
Set<Map<String,Object>> needRemoveData = Sets.newHashSet();
for (int i=0;i<clockInTimeList.size()-1;i++){ for (int i=0;i<clockInTimeList.size()-1;i++){
String time1 = clockInTimeList.get(i).get("signdate")+" "+clockInTimeList.get(i).get("signtime"); String time1 = clockInTimeList.get(i).get("signdate")+" "+clockInTimeList.get(i).get("signtime");
for (int j=i+1;j<clockInTimeList.size();j++){ for (int j=i+1;j<clockInTimeList.size();j++){
String time2 = clockInTimeList.get(j).get("signdate")+" "+clockInTimeList.get(j).get("signtime"); String time2 = clockInTimeList.get(j).get("signdate")+" "+clockInTimeList.get(j).get("signtime");
if (DateUtil.getBetWeenMinutes(time1,time2) <wdkhlfzs){ if (DateUtil.getBetWeenMinutes(time1,time2) <wdkhlfzs){
needRemoveData.add(clockInTimeList.get(j)); clockInTimeList.remove(clockInTimeList.get(j));
j--;
} }
} }
} }
for (Map<String,Object> map:needRemoveData){ // for (Map<String,Object> map:needRemoveData){
clockInTimeList.remove(map); // clockInTimeList.remove(map);
} // }
} }
if (clockInTimeList.size() %2 == 1){ newClockInTimeList = clockInTimeList;
clockInTimeList.remove(clockInTimeList.size()-1);
newClockInTimeList = clockInTimeList; }
}else { if (newClockInTimeList.size()%2==1 && dtlkycqdetdk.equals(CheckBoxEnum.CHECKED.getKey())){
newClockInTimeList = clockInTimeList; //当天打卡是奇次的,第二天第一笔卡拿过来当当天的下班卡,且第二天的上班从第二笔卡开始
String nextEndTime = DateUtil.AfterDay(endTime.split(" ")[0],1)+" "+endTime.split(" ")[1];
String finalEndTime1 = endTime;
List<Map<String,Object>> nextClockList = ((List<Map<String,Object>>) param.get("clockInTimeCollect")).stream().filter(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).
compareTo(DateUtil.getTime(nextEndTime)) <=0 && DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).compareTo(DateUtil.getTime(finalEndTime1)) > 0)
.sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
String lastSignTime = newClockInTimeList.get(newClockInTimeList.size()-1).get("signdate")+" "+newClockInTimeList.get(newClockInTimeList.size()-1).get("signtime");
for (Map<String,Object> nextClock:nextClockList){
String nextSign = nextClock.get("signdate")+" "+nextClock.get("signtime");
if (DateUtil.getBetWeenMinutes(lastSignTime,nextSign) >=wdkhlfzs){
newClockInTimeList.add(nextClock);
break;
}
}
if (newClockInTimeList.size()%2==1){
newClockInTimeList.remove(newClockInTimeList.size()-1);
} }
} }
if (newClockInTimeList.size() > 0){ if (newClockInTimeList.size() > 0){
@ -334,6 +369,8 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
} }
} }
log.debug("newClockInTimeList : [{}]",newClockInTimeList); log.debug("newClockInTimeList : [{}]",newClockInTimeList);
return newClockInTimeList; return newClockInTimeList;
} }
@ -368,10 +405,10 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
public Map<String,Object> getRecordDataTime(List<Map<String,Object>> clockInTimeList){ public Map<String,Object> getRecordDataTime(List<Map<String,Object>> clockInTimeList){
Map<String,Object> resultMap = Maps.newHashMap(); Map<String,Object> resultMap = Maps.newHashMap();
if (clockInTimeList.size() == 0 ){ if (clockInTimeList.size() == 0 ){
return resultMap;
}else if (clockInTimeList.size() == 1){ }else if (clockInTimeList.size() == 1){
resultMap.put("j1",clockInTimeList.get(0).get("signdate")+" "+clockInTimeList.get(0).get("signtime")); resultMap.put("j1",clockInTimeList.get(0).get("signdate")+" "+clockInTimeList.get(0).get("signtime"));
return resultMap;
} }
int logarithm = clockInTimeList.size()/2; int logarithm = clockInTimeList.size()/2;
@ -379,7 +416,17 @@ public class ComprehensiveWorkingHourServiceImpl extends Service implements Comp
int index1 = i*2; int index1 = i*2;
int index2 = index1+1; int index2 = index1+1;
resultMap.put("j"+(i+1),clockInTimeList.get(index1).get("signdate")+" "+clockInTimeList.get(index1).get("signtime")); resultMap.put("j"+(i+1),clockInTimeList.get(index1).get("signdate")+" "+clockInTimeList.get(index1).get("signtime"));
resultMap.put("c"+(i+1),clockInTimeList.get(index1).get("signdate")+" "+clockInTimeList.get(index2).get("signtime")); resultMap.put("c"+(i+1),clockInTimeList.get(index2).get("signdate")+" "+clockInTimeList.get(index2).get("signtime"));
}
for (int i=1;i<=8;i++){
String jkey = "j"+i;
String ckey = "c"+i;
if (resultMap.get(jkey) == null){
resultMap.put(jkey,"NULL");
}
if (resultMap.get(ckey) == null){
resultMap.put(ckey,"NULL");
}
} }
log.debug("betweenMinute : [{}]",resultMap); log.debug("betweenMinute : [{}]",resultMap);
return resultMap; return resultMap;

@ -2,16 +2,15 @@ package com.engine.jucailinkq.attendance.attendanceanalysis.service.impl;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.GetEvectionCmd; import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.GetEvectionCmd;
import com.engine.jucailinkq.attendance.attendanceanalysis.service.EvectionService; import com.engine.jucailinkq.attendance.attendanceanalysis.service.EvectionService;
import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum; import com.engine.jucailinkq.attendance.enums.*;
import com.engine.jucailinkq.attendance.enums.AttendanceItemTypeEnum; import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
import com.engine.jucailinkq.attendance.enums.WorkForTimeEnum;
import com.engine.jucailinkq.common.util.Utils; import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import weaver.general.Util; import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -36,11 +35,10 @@ public class EvectionServiceImpl extends Service implements EvectionService {
List<Map<String,Object>> offsetEvectionAnomaly = Lists.newArrayList(); List<Map<String,Object>> offsetEvectionAnomaly = Lists.newArrayList();
for (int i=0;i<abnormalClockInList.size();i++){ for (int i=0;i<abnormalClockInList.size();i++){
String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx")); String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx"));
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormalClockInList.get(i).get("itemType");
String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime")); String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime"));
String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime")); String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime"));
if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) && if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) &&
!AttendanceItemTypeEnum.MISSE_CARD.equals(itemType)) { !"".equals(classStartTime) && !"".equals(classEndTime)) {
Map<String,Object> leaveMap = Maps.newHashMap(); Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj); leaveMap.put("kssj",kssj);
@ -54,6 +52,7 @@ public class EvectionServiceImpl extends Service implements EvectionService {
double hsl = Double.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl"))); double hsl = Double.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl")));
double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())); double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString()));
abnormalClockInList.get(i).put("itemduration",itemduration); abnormalClockInList.get(i).put("itemduration",itemduration);
abnormalClockInList.get(i).put("betweenMinutes",betweenTime-intersectionTime);
} }
} }
} }
@ -109,12 +108,237 @@ public class EvectionServiceImpl extends Service implements EvectionService {
} }
@Override @Override
public List<Map<String,Object>> evectionByHalfDay(Map<String, Object> param) { public Map<String,Object> evectionByHalfDay(Map<String, Object> param) {
return null; Map<String,Object> resultMap = Maps.newHashMap();
//人员迟到、早退、漏卡等记录
List<Map<String,Object>> abnormalClockInList = (List<Map<String,Object>>)param.get("abnormalClockInList");
//班次
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)param.get("scheduleResult");
//作用时段
String zysd = Util.null2String(param.get("zysd"));
//作用时段
String analysisDate = Util.null2String(param.get("analysisDate"));
//半天规则
String btgz = Util.null2String(scheduleResult.get(0).get("btgz"));
//额定时长
double edsc = Double.valueOf(scheduleResult.get(0).get("edsc").toString());
Map<String,Object> evectionItem = (Map<String,Object>)param.get("evectionItem");
//核算量
double hsl = Double.valueOf(Util.null2String(evectionItem.get("hsl")));
//核算单位
String hsdw = Util.null2String(evectionItem.get("hsdw"));
List<Map<String,Object>> offsetEvectionAnomaly = Lists.newArrayList();
List<String> classSegmens = Lists.newArrayList();
for (String str:zysd.split(",")){
classSegmens.add(Utils.getClassSegmenByWorkFor(str));
}
List<Map<String,Object>> abnormalList = Lists.newArrayList();
for (Map<String,Object> abnormalClock:abnormalClockInList){
if (classSegmens.contains(abnormalClock.get("bdlx"))){
abnormalList.add(abnormalClock);
}
}
double itemduration = 0;
if (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey())){
//按班次设置
Map<String,Object> haveAbnormalScheduleMap = getHaveAbnormalScheduleMap(scheduleResult,abnormalList,analysisDate);
List<Map<String,Object>> haveAbnormalScheduleList = (List<Map<String,Object>>)haveAbnormalScheduleMap.get("haveAbnormalScheduleList");
Map<Map<String, Object>,List<Map<String,Object>>> haveAbnormalscheduleMapGroup = (Map<Map<String, Object>,List<Map<String,Object>>>)haveAbnormalScheduleMap.get("haveAbnormalscheduleMapGroup");
double restTime = 0.5;
if (haveAbnormalScheduleList == null || haveAbnormalScheduleList.size() == 0){
//当没有消除异常时默认额度时长一半、天数固定1天
if (hsdw.equals(AccountingUnitEnum.HOUR.getKey())){
itemduration = edsc*0.5;
}else if (hsdw.equals(AccountingUnitEnum.DAY.getKey())){
itemduration = 0.5;
}else if (hsdw.equals(AccountingUnitEnum.MINUTES.getKey())){
itemduration = edsc*30;
}else if (hsdw.equals(AccountingUnitEnum.ONCE.getKey())){
itemduration = 1;
}
}else {
for (int i=haveAbnormalScheduleList.size()-1;i>=0;i--){
double edts = Double.valueOf(haveAbnormalScheduleList.get(i).get("edts").toString());
restTime = Utils.subtract(restTime,edts);
if (restTime >=0){
offsetEvectionAnomaly.addAll(haveAbnormalscheduleMapGroup.get(haveAbnormalScheduleList.get(i)));
if (hsdw.equals(AccountingUnitEnum.HOUR.getKey())){
itemduration += Double.valueOf(haveAbnormalScheduleList.get(i).get("edxss").toString());
}else if (hsdw.equals(AccountingUnitEnum.DAY.getKey())){
itemduration = 0.5;
}else if (hsdw.equals(AccountingUnitEnum.MINUTES.getKey())){
itemduration += Double.valueOf(haveAbnormalScheduleList.get(i).get("edfzs").toString());
}else if (hsdw.equals(AccountingUnitEnum.ONCE.getKey())){
itemduration = 1;
}
}
}
}
}else if (btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey())){
//取固定时间
//分隔时间点
String fgsjd = Util.null2String(scheduleResult.get(0).get("fgsjd"));
fgsjd = analysisDate +" "+fgsjd;
String finalFgsjd = fgsjd;
List<Map<String,Object>> beforeAbnormalList = abnormalList.stream().filter(e-> DateUtil.getTime(e.get("pointTime").toString()).compareTo(DateUtil.getTime(finalFgsjd)) <=0).collect(Collectors.toList());
List<Map<String,Object>> afterAbnormalList = abnormalList.stream().filter(e->DateUtil.getTime(e.get("pointTime").toString()).compareTo(DateUtil.getTime(finalFgsjd)) >0).collect(Collectors.toList());
boolean ifBefore = false;
if (beforeAbnormalList.size() > afterAbnormalList.size()){
offsetEvectionAnomaly.addAll(beforeAbnormalList);
ifBefore=true;
}else if (beforeAbnormalList.size() < afterAbnormalList.size()){
offsetEvectionAnomaly.addAll(afterAbnormalList);
}else {
Map<String,Object> beforeHaveAbnormalScheduleMap = getHaveAbnormalScheduleMap(scheduleResult,beforeAbnormalList,analysisDate);
List<Map<String,Object>> beforehaveAbnormalScheduleList = (List<Map<String,Object>>)beforeHaveAbnormalScheduleMap.get("haveAbnormalScheduleList");
double beforeTotalAbnormalMinute = beforehaveAbnormalScheduleList.stream().mapToDouble(e->Double.valueOf(e.get("totalAbnormalMinute").toString())).sum();
Map<String,Object> afterHaveAbnormalScheduleMap = getHaveAbnormalScheduleMap(scheduleResult,afterAbnormalList,analysisDate);
List<Map<String,Object>> afterhaveAbnormalScheduleList = (List<Map<String,Object>>)afterHaveAbnormalScheduleMap.get("haveAbnormalScheduleList");
double afterTotalAbnormalMinute = afterhaveAbnormalScheduleList.stream().mapToDouble(e->Double.valueOf(e.get("totalAbnormalMinute").toString())).sum();
if (beforeTotalAbnormalMinute > afterTotalAbnormalMinute || beforeTotalAbnormalMinute == afterTotalAbnormalMinute){
offsetEvectionAnomaly.addAll(beforeAbnormalList);
ifBefore=true;
}else if (beforeTotalAbnormalMinute < afterTotalAbnormalMinute){
offsetEvectionAnomaly.addAll(afterAbnormalList);
}
}
if (hsdw.equals(AccountingUnitEnum.DAY.getKey())){
itemduration=0.5;
}else if (hsdw.equals(AccountingUnitEnum.ONCE.getKey())){
itemduration=1;
}else {
String keyName="";
if (hsdw.equals(AccountingUnitEnum.MINUTES.getKey())){
keyName="edfzs";
}else{
keyName="edxss";
}
if (ifBefore){
List<Map<String,Object>> beforeScheduleList = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
for (int i=0;i<beforeScheduleList.size();i++){
if (i == beforeScheduleList.size()-1){
if (keyName.equals("edfzs")){
itemduration+=DateUtil.getBetWeenMinutes(Utils.getkssjTime(beforeScheduleList.get(i),analysisDate),fgsjd);
}else if (keyName.equals("edxss")){
itemduration+=Utils.divide(DateUtil.getBetWeenMinutes(Utils.getkssjTime(beforeScheduleList.get(i),analysisDate),fgsjd),60);
}
}else {
itemduration+=Double.valueOf(beforeScheduleList.get(i).get(keyName).toString());
}
}
}else {
List<Map<String,Object>> afterScheduleList = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
for (int i=0;i<afterScheduleList.size();i++){
if (i == 0){
if (keyName.equals("edfzs")){
itemduration+=DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(afterScheduleList.get(i),analysisDate));
}else if (keyName.equals("edxss")){
itemduration+=Utils.divide(DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(afterScheduleList.get(i),analysisDate)),60);
}
}else {
itemduration+=Double.valueOf(afterScheduleList.get(i).get(keyName).toString());
}
}
}
}
}
AccountingUnitEnum itemdurationType = null;
if (hsdw.equals(AccountingUnitEnum.HOUR.getKey())){
itemdurationType = AccountingUnitEnum.HOUR;
}else if (hsdw.equals(AccountingUnitEnum.DAY.getKey())){
itemdurationType = AccountingUnitEnum.DAY;
}else if (hsdw.equals(AccountingUnitEnum.MINUTES.getKey())){
itemdurationType = AccountingUnitEnum.MINUTES;
}else if (hsdw.equals(AccountingUnitEnum.ONCE.getKey())){
itemdurationType = AccountingUnitEnum.ONCE;
}
itemduration = Utils.getItemduration(hsl,hsdw,itemduration,itemdurationType,Double.valueOf(scheduleResult.get(0).get("edsc").toString()));
abnormalClockInList.removeAll(offsetEvectionAnomaly);
abnormalClockInList = getAbnormalClockInList(abnormalClockInList,offsetEvectionAnomaly);
resultMap.put("offsetEvectionAnomaly",offsetEvectionAnomaly);
resultMap.put("abnormalClockInList",abnormalClockInList);
resultMap.put("itemduration",itemduration);
return resultMap;
} }
@Override @Override
public Map<String, Object> getEvection(Map<String, Object> param) { public Map<String, Object> getEvection(Map<String, Object> param) {
return commandExecutor.execute(new GetEvectionCmd(param)); return commandExecutor.execute(new GetEvectionCmd(param));
} }
/**
*
* @param scheduleResult
* @param abnormalClockInList
* @param analysisDate
* @return
*/
public Map<String,Object> getHaveAbnormalScheduleMap(List<Map<String,Object>> scheduleResult,List<Map<String,Object>> abnormalClockInList,String analysisDate){
Map<Map<String, Object>,List<Map<String,Object>>> scheduleMapGroup = Maps.newHashMap();
List<Map<String,Object>> haveAbnormalScheduleList = Lists.newArrayList();
for (Map<String, Object> scheduleMap :scheduleResult){
if (scheduleMap.get("edts") == null || Double.valueOf(scheduleMap.get("edts").toString()) == 0){
continue;
}
List<Map<String,Object>> list = Utils.getAbnormalListBySchedule(scheduleMap,abnormalClockInList,analysisDate);
if (list.size() > 0){
double totalTime=0;
for (Map<String,Object> abnormal:list){
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)abnormal.get("itemType");
if (itemType == AttendanceItemTypeEnum.MISSE_CARD){
totalTime = Double.valueOf(scheduleMap.get("edxss").toString())*60;
break;
}
int betweenMinutes = Integer.valueOf(Util.null2String(abnormal.get("betweenMinutes")==null?"0":abnormal.get("betweenMinutes")));
totalTime+=betweenMinutes;
}
scheduleMap.put("totalAbnormalMinute",totalTime);
haveAbnormalScheduleList.add(scheduleMap);
scheduleMapGroup.put(scheduleMap,list);
}
}
haveAbnormalScheduleList = haveAbnormalScheduleList.stream().sorted(Comparator.comparing(e->Double.valueOf(e.get("totalAbnormalMinute").toString()))).collect(Collectors.toList());
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("haveAbnormalScheduleList",haveAbnormalScheduleList);
resultMap.put("haveAbnormalscheduleMapGroup",scheduleMapGroup);
return resultMap;
}
/**
* recordtruerecordfalse
* @param abnormalClockInList
* @param offsetEvectionAnomaly
* @return
*/
public List<Map<String,Object>> getAbnormalClockInList(List<Map<String,Object>> abnormalClockInList,List<Map<String,Object>> offsetEvectionAnomaly){
abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("pointTime").toString()).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
for (Map<String,Object> offsetAbnormal:offsetEvectionAnomaly){
if ((boolean)offsetAbnormal.get("record")){
AttendanceItemTypeEnum itemType = (AttendanceItemTypeEnum)offsetAbnormal.get("itemType");
String classStartTime = Util.null2String(offsetAbnormal.get("classStartTime"));
String classEndTime = Util.null2String(offsetAbnormal.get("classEndTime"));
if (abnormalClockInList.size() > 0){
for (int i = abnormalClockInList.size()-1;i>=0;i--){
if (!(boolean)abnormalClockInList.get(i).get("record") && abnormalClockInList.get(i).get("itemType") == itemType &&
DateUtil.getTime(classStartTime).compareTo(DateUtil.getTime(abnormalClockInList.get(i).get("pointTime").toString())) <= 0 &&
DateUtil.getTime(classEndTime).compareTo(DateUtil.getTime(abnormalClockInList.get(i).get("pointTime").toString())) >=0){
abnormalClockInList.get(i).put("record",true);
break;
}
}
}
}
}
return abnormalClockInList;
}
} }

@ -115,7 +115,7 @@ public class ForgetClockInServiceImpl extends Service implements ForgetClockInSe
forgotMap.put("bdlx",missCard.get("bdlx")); forgotMap.put("bdlx",missCard.get("bdlx"));
} }
} }
forgotMap.put("bdlx",bdlx);
forgotMap.put("hsdw",hsdw); forgotMap.put("hsdw",hsdw);
forgotMap.put("kczgsc",items.get(0).get("kczgsc")); forgotMap.put("kczgsc",items.get(0).get("kczgsc"));
forgotMap.put("betweenMinutes",edfzs); forgotMap.put("betweenMinutes",edfzs);

@ -184,7 +184,7 @@ public class UtilServiceImpl extends Service implements UtilService {
List<Map<String, Object>> newscheduleResult = (List<Map<String, Object>>)resultMap.get("scheduleResult"); List<Map<String, Object>> newscheduleResult = (List<Map<String, Object>>)resultMap.get("scheduleResult");
List<Map<String, Object>> askForLeaveAndEvctionScheduleList = (List<Map<String, Object>>)resultMap.get("askForLeaveAndEvctionScheduleList"); List<Map<String, Object>> askForLeaveAndEvctionScheduleList = (List<Map<String, Object>>)resultMap.get("askForLeaveAndEvctionScheduleList");
params.putAll(resultMap); params.putAll(resultMap);
resultMap = commandExecutor.execute(new AdjustByWorkOverTimeCmd(params)); // resultMap = commandExecutor.execute(new AdjustByWorkOverTimeCmd(params));
List<ClockPointDTO> clcokInPointList = (List<ClockPointDTO>)resultMap.get("clcokInPointList"); List<ClockPointDTO> clcokInPointList = (List<ClockPointDTO>)resultMap.get("clcokInPointList");
if (!scheduleResult.equals(newscheduleResult)){ if (!scheduleResult.equals(newscheduleResult)){
scheduleResult.removeAll(scheduleResult); scheduleResult.removeAll(scheduleResult);

@ -133,6 +133,7 @@ public class AttendanceAnalysisWrapper extends Service {
getClockTimeParam.put("clockInTimeMap", clockInTimeMap); getClockTimeParam.put("clockInTimeMap", clockInTimeMap);
getClockTimeParam.put("clockInTimeCollect", collect); getClockTimeParam.put("clockInTimeCollect", collect);
getClockTimeParam.put("userId", userId); getClockTimeParam.put("userId", userId);
getClockTimeParam.put("workHourItems",workHourItems);
//打卡数据 //打卡数据
List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam); List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam);
Map<String, Object> recordDataTime = analysis(userId, analysisDate, clockInTimeList, schedulingResultsMap.get(analysisDate), attendanceItems, workHourItems,(Map<String,Object>)schedulMap.get("clockInTimeDataMap")); Map<String, Object> recordDataTime = analysis(userId, analysisDate, clockInTimeList, schedulingResultsMap.get(analysisDate), attendanceItems, workHourItems,(Map<String,Object>)schedulMap.get("clockInTimeDataMap"));
@ -180,8 +181,8 @@ public class AttendanceAnalysisWrapper extends Service {
String rqlx = Utils.getDateType(analysisDate, Util.null2String(workHourItems.get(0).get("qyrl"))); String rqlx = Utils.getDateType(analysisDate, Util.null2String(workHourItems.get(0).get("qyrl")));
if (CheckBoxEnum.CHECKED.getKey().equals(ifPriority) && CommonUtil.ifContainStr(hsgsdrqlx, rqlx, ",")) { if (CheckBoxEnum.CHECKED.getKey().equals(ifPriority) && CommonUtil.ifContainStr(hsgsdrqlx, rqlx, ",")) {
comprehensiveWorkingHourService.excuteByWorkHour(workingHourparam); //综合工时
return null; return (Map<String,Object>)comprehensiveWorkingHourService.excuteByWorkHour(workingHourparam).get("recordDataTime");
} }
} }
@ -195,8 +196,8 @@ public class AttendanceAnalysisWrapper extends Service {
params.put("workHourItems", workHourItems); params.put("workHourItems", workHourItems);
params.put("attendanceItems", attendanceItems); params.put("attendanceItems", attendanceItems);
params.put("allowanceMap", allowanceMap); params.put("allowanceMap", allowanceMap);
updateAttendanceResultWrapper.recordNoClass(params);
return null; return (Map<String,Object>)updateAttendanceResultWrapper.recordNoClass(params).get("recordDataTime");
} }
recordParam.put("rqlx", scheduleResult.get(0).get("rqlx")); recordParam.put("rqlx", scheduleResult.get(0).get("rqlx"));
//休息班次,休息班打卡自动加班不算自动加班,扣除原有的工作时段 //休息班次,休息班打卡自动加班不算自动加班,扣除原有的工作时段

@ -108,9 +108,6 @@ public class UpdateAttendanceResultWrapper extends Service {
iforgetClockIn.get(0).put("pointType",clcokInTimedto.getPointType()); iforgetClockIn.get(0).put("pointType",clcokInTimedto.getPointType());
iforgetClockIn.get(0).put("bdlx",classInfo.get("bdlx")); iforgetClockIn.get(0).put("bdlx",classInfo.get("bdlx"));
iforgetClockIn.get(0).put("record",clcokInTimedto.isRecord()); iforgetClockIn.get(0).put("record",clcokInTimedto.isRecord());
if (!clcokInTimedto.isRecord()){
iforgetClockIn.get(0).put("resourceClassTime",clcokInTimedto.getResourceClockPointDTO().getClassTime());
}
iforgetClockIn.get(0).put("clcokInTimeData",clcokInTimeData); iforgetClockIn.get(0).put("clcokInTimeData",clcokInTimeData);
resultList.add(iforgetClockIn.get(0)); resultList.add(iforgetClockIn.get(0));
} }
@ -136,9 +133,6 @@ public class UpdateAttendanceResultWrapper extends Service {
ifBeLate.get(0).put("pointType",clcokInTimedto.getPointType()); ifBeLate.get(0).put("pointType",clcokInTimedto.getPointType());
ifBeLate.get(0).put("bdlx",classInfo.get("bdlx")); ifBeLate.get(0).put("bdlx",classInfo.get("bdlx"));
ifBeLate.get(0).put("record",clcokInTimedto.isRecord()); ifBeLate.get(0).put("record",clcokInTimedto.isRecord());
if (!clcokInTimedto.isRecord()){
ifBeLate.get(0).put("resourceClassTime",clcokInTimedto.getResourceClockPointDTO().getClassTime());
}
ifBeLate.get(0).put("clcokInTimeData",clcokInTimeData); ifBeLate.get(0).put("clcokInTimeData",clcokInTimeData);
resultList.add(ifBeLate.get(0)); resultList.add(ifBeLate.get(0));
} }
@ -163,9 +157,6 @@ public class UpdateAttendanceResultWrapper extends Service {
ifLeaveEarly.get(0).put("pointType",clcokInTimedto.getPointType()); ifLeaveEarly.get(0).put("pointType",clcokInTimedto.getPointType());
ifLeaveEarly.get(0).put("bdlx",classInfo.get("bdlx")); ifLeaveEarly.get(0).put("bdlx",classInfo.get("bdlx"));
ifLeaveEarly.get(0).put("record",clcokInTimedto.isRecord()); ifLeaveEarly.get(0).put("record",clcokInTimedto.isRecord());
if (!clcokInTimedto.isRecord()){
ifLeaveEarly.get(0).put("resourceClassTime",clcokInTimedto.getResourceClockPointDTO().getClassTime());
}
ifLeaveEarly.get(0).put("clcokInTimeData",clcokInTimeData); ifLeaveEarly.get(0).put("clcokInTimeData",clcokInTimeData);
resultList.add(ifLeaveEarly.get(0)); resultList.add(ifLeaveEarly.get(0));
} }
@ -268,7 +259,8 @@ public class UpdateAttendanceResultWrapper extends Service {
offsetAskForLeaveAnomaly.addAll((List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly")); offsetAskForLeaveAnomaly.addAll((List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly"));
resultMap.put("itemduration",itemduration); resultMap.put("itemduration",itemduration);
askForLeaveToOffsetAbnomaly.put(askForLeaveList.get(i),(List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly")); askForLeaveToOffsetAbnomaly.put(askForLeaveList.get(i),(List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly"));
resultMap.put("item",askForLeaveList.get(i).get("cclx"));
resultList.add(resultMap);
}else if (!"".equals(qjsc) || (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey()) || btgz.equals(HalfDayRuleREnum.HALF_RATED_DURATION.getKey())))){ }else if (!"".equals(qjsc) || (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey()) || btgz.equals(HalfDayRuleREnum.HALF_RATED_DURATION.getKey())))){
if (CheckBoxEnum.CHECKED.getKey().equals(btj)){ if (CheckBoxEnum.CHECKED.getKey().equals(btj)){
if (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey())){ if (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey())){
@ -337,11 +329,7 @@ public class UpdateAttendanceResultWrapper extends Service {
} }
}else { }else {
//按照开始时间,结束时间请假 //按照开始时间,结束时间请假
int timeMinutes = getTimeByWorkFor(zysd,zdycbcndfgzsd,scheduleResult,kssj,jssj,analysisDate);
int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){
timeMinutes = Utils.removeRestTime(kssj,jssj,scheduleResult,analysisDate);
}
if (timeMinutes > qjscMinute){ if (timeMinutes > qjscMinute){
timeMinutes = qjscMinute; timeMinutes = qjscMinute;
} }
@ -420,6 +408,8 @@ public class UpdateAttendanceResultWrapper extends Service {
Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx")); Map<String,Object> evectionItem = evectionItems.get(evectionList.get(i).get("cclx"));
//自动移除时间区间内的非工作时长 //自动移除时间区间内的非工作时长
String zdycbcndfgzsd = Util.null2String(evectionItem.get("zdycbcndfgzsd")); String zdycbcndfgzsd = Util.null2String(evectionItem.get("zdycbcndfgzsd"));
//半天规则
String btgz = Util.null2String(scheduleResult.get(0).get("btgz"));
//同一天可抵消多个异常 //同一天可抵消多个异常
String tybcndbjlhbjs = Util.null2String(evectionItem.get("tybcndbjlhbjs")); String tybcndbjlhbjs = Util.null2String(evectionItem.get("tybcndbjlhbjs"));
//核算量 //核算量
@ -441,13 +431,21 @@ public class UpdateAttendanceResultWrapper extends Service {
param.put("zysd",zysd); param.put("zysd",zysd);
param.put("scheduleResult",scheduleResult); param.put("scheduleResult",scheduleResult);
param.put("analysisDate",analysisDate); param.put("analysisDate",analysisDate);
param.put("evectionItem",evectionItem);
double itemduration = 0; double itemduration = 0;
if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){ if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){
//弹性请假,半天出差 //弹性请假,半天出差
if (CheckBoxEnum.CHECKED.getKey().equals(btj)){ if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
//半天出差 //半天出差
evectionService.evectionByHalfDay(param); Map<String,Object> handleMap = evectionService.evectionByHalfDay(param);
}else if (!"".equals(ccsc)){ itemduration = Double.valueOf(handleMap.get("itemduration").toString());
abnormalClockInList = (List<Map<String,Object>>)handleMap.get("abnormalClockInList");
offsetEvectionAnomaly.addAll((List<Map<String,Object>>)handleMap.get("offsetEvectionAnomaly"));
resultMap.put("itemduration",itemduration);
evectionToOffsetAbnomaly.put(evectionList.get(i),(List<Map<String,Object>>)handleMap.get("offsetEvectionAnomaly"));
resultMap.put("item",evectionList.get(i).get("cclx"));
resultList.add(resultMap);
}else if (!"".equals(ccsc) || (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey()) || btgz.equals(HalfDayRuleREnum.HALF_RATED_DURATION.getKey())))){
//时长出差 //时长出差
itemduration = Utils.getItemduration(hsl,hsdw,ccscMinute,AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())); itemduration = Utils.getItemduration(hsl,hsdw,ccscMinute,AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString()));
if (!sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){ if (!sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){
@ -508,10 +506,7 @@ public class UpdateAttendanceResultWrapper extends Service {
//按照开始时间,结束时间出差 //按照开始时间,结束时间出差
int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); int timeMinutes = getTimeByWorkFor(zysd,zdycbcndfgzsd,scheduleResult,kssj,jssj,analysisDate);
if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){
timeMinutes = Utils.removeRestTime(kssj,jssj,scheduleResult,analysisDate);
}
if (timeMinutes > ccscMinute){ if (timeMinutes > ccscMinute){
timeMinutes = ccscMinute; timeMinutes = ccscMinute;
} }
@ -552,51 +547,12 @@ public class UpdateAttendanceResultWrapper extends Service {
return map; return map;
} }
/**
* ,
* @param params
* @return
*/
public List<Map<String,Object>> recordNormal(Map<String,Object> params){
//排班
List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
//分析日期
String analysisDate = Util.null2String(params.get("analysisDate"));
//人员
String userId = Util.null2String(params.get("userId"));
//日期类型
String rqlx = Util.null2String(scheduleResult.get(0).get("rqlx"));
List<Map<String, Object>> resultList = Lists.newArrayList();
Map<String,Object> normalParams = Maps.newHashMap();
// normalParams.put("userId",userId);
// normalParams.put("date",analysisDate);
// normalParams.put("classInfo",scheduleResult);
// normalParams.put("modeId",params.get("modeId"));
if (DateTypeEnum.WORK_DAY.getKey().equals(rqlx) || DateTypeEnum.CHANGECLASS.getKey().equals(rqlx)){
//工作日
normalParams.put("item",SystemItemEnum.WORK_DAY.getKey());
}else if (DateTypeEnum.HOLIDAY.getKey().equals(rqlx)){
//节假日
normalParams.put("item",SystemItemEnum.HOLIDAY.getKey());
}else if (DateTypeEnum.PUBLIC_RESTDAY.getKey().equals(rqlx) ||
DateTypeEnum.EXCHANGE_LEAVEDAY.getKey().equals(rqlx)){
//休息日
normalParams.put("item",SystemItemEnum.REST_DAY.getKey());
}
resultList.add(normalParams);
//commandExecutor.execute(new UpdateAttendanceResultsCmd(normalParams));
return resultList;
}
/** /**
* *
* @param params * @param params
* @return * @return
*/ */
public boolean recordNoClass(Map<String,Object> params){ public Map<String,Object> recordNoClass(Map<String,Object> params){
//分析日期 //分析日期
String analysisDate = Util.null2String(params.get("analysisDate")); String analysisDate = Util.null2String(params.get("analysisDate"));
//人员 //人员
@ -624,7 +580,7 @@ public class UpdateAttendanceResultWrapper extends Service {
//次日免班 //次日免班
recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey());
utilService.recordItem(recordParam); utilService.recordItem(recordParam);
return false; return recordParam;
} }
if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){ if (rqlx.equals(DateTypeEnum.WORK_DAY.getKey()) || rqlx.equals(DateTypeEnum.CHANGECLASS.getKey())){
recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey());
@ -647,7 +603,7 @@ public class UpdateAttendanceResultWrapper extends Service {
params.put("workHourItem",workHourItems.get(0)); params.put("workHourItem",workHourItems.get(0));
if (CommonUtil.ifContainStr(hsgsdrqlx,rqlx,",")){ if (CommonUtil.ifContainStr(hsgsdrqlx,rqlx,",")){
//走综合工时 //走综合工时
comprehensiveWorkingHourService.excuteByWorkHour(params); return comprehensiveWorkingHourService.excuteByWorkHour(params);
}else { }else {
//没有排班 //没有排班
recordParam.put("recordData",recordDataList); recordParam.put("recordData",recordDataList);
@ -656,11 +612,11 @@ public class UpdateAttendanceResultWrapper extends Service {
}else { }else {
//没有排班 //没有排班
recordParam.put("recordData",recordDataList); recordParam.put("recordData",recordDataList);
utilService.recordItem(recordParam); utilService.recordItem(recordParam);
} }
return false; return recordParam;
} }
@ -712,5 +668,12 @@ public class UpdateAttendanceResultWrapper extends Service {
utilService.recordItem(recordParam); utilService.recordItem(recordParam);
} }
public int getTimeByWorkFor(String zysd,String zdycbcndfgzsd,List<Map<String, Object>> scheduleResult,String kssj,String jssj,String analysisDate){
List<Map<String, Object>> reusltList = scheduleResult.stream().filter(e->(zysd.contains(Utils.getWorkFor(e.get("bdlx").toString())) && !Utils.ifRestClassSegment(e.get("bdlx").toString())) ||
(!CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd) && Utils.ifRestClassSegment(e.get("bdlx").toString()))).collect(Collectors.toList());
return Utils.removeTime(kssj,jssj,reusltList,analysisDate);
}
} }

@ -1,5 +1,6 @@
package com.engine.jucailinkq.attendance.component.calendarscheduling.service; package com.engine.jucailinkq.attendance.component.calendarscheduling.service;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -30,4 +31,8 @@ public interface WorkRulesService {
* *
*/ */
Map<String, Object> saveCalendarWork(Map<String, Object> params); Map<String, Object> saveCalendarWork(Map<String, Object> params);
/**
*
*/
Map<String, Object> queryDefaultCalendar(Map<String, Object> params);
} }

@ -11,6 +11,7 @@ import com.engine.jucailinkq.attendance.component.persongroup.commonutil.Persong
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum; import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
import com.engine.jucailinkq.attendance.enums.PersonGroupListTypeEnum; import com.engine.jucailinkq.attendance.enums.PersonGroupListTypeEnum;
import com.engine.jucailinkq.attendance.enums.RegularScheduleTypeEnum; import com.engine.jucailinkq.attendance.enums.RegularScheduleTypeEnum;
import com.engine.jucailinkq.common.exception.AttendanceRunTimeException;
import com.engine.jucailinkq.common.util.CommonUtil; import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil; import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools; import com.engine.jucailinkq.common.util.DbTools;
@ -22,6 +23,7 @@ import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import weaver.general.BaseBean; import weaver.general.BaseBean;
import weaver.general.PageIdConst; import weaver.general.PageIdConst;
import weaver.general.TimeUtil;
import weaver.general.Util; import weaver.general.Util;
import java.util.*; import java.util.*;
@ -375,7 +377,26 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
for (int i=0;i<monthDays;i++){ for (int i=0;i<monthDays;i++){
Map<String,Object> map = Maps.newHashMap(); Map<String,Object> map = Maps.newHashMap();
map.put("title",i+1); int dayWeek = TimeUtil.getDayOfWeek(DateUtil.AfterDay(startTime,i));
String titleContext = String.valueOf(i+1);
if (dayWeek == 0){
//周日
titleContext = "<div class=\"dh\" style=\"color: red;\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">日</div></div>";
}else if (dayWeek == 1){
titleContext = "<div class=\"dh\" style=\"color: rgb(0, 0, 0);\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">一</div></div>";
}else if (dayWeek == 2){
titleContext = "<div class=\"dh\" style=\"color: rgb(0, 0, 0);\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">二</div></div>";
}else if (dayWeek == 3){
titleContext = "<div class=\"dh\" style=\"color: rgb(0, 0, 0);\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">三</div></div>";
}else if (dayWeek == 4){
titleContext = "<div class=\"dh\" style=\"color: rgb(0, 0, 0);\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">四</div></div>";
}else if (dayWeek == 5){
titleContext = "<div class=\"dh\" style=\"color: rgb(0, 0, 0);\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">五</div></div>";
}else if (dayWeek == 6){
//周六
titleContext ="<div class=\"dh\" style=\"color: red;\"><div class=\"d\">"+(i+1)+"</div><div class=\"w\">六</div></div>";
}
map.put("title",titleContext);
map.put("dataIndex",DateUtil.AfterDay(startTime,i)); map.put("dataIndex",DateUtil.AfterDay(startTime,i));
map.put("key",i+1); map.put("key",i+1);
map.put("width",classWidth); map.put("width",classWidth);
@ -399,7 +420,10 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
String formmodeid = Utils.getFormmodeIdMap().get("uf_pbjg"); String formmodeid = Utils.getFormmodeIdMap().get("uf_pbjg");
List<Map<String,Object>> organizationList = Lists.newArrayList(); List<Map<String,Object>> organizationList = Lists.newArrayList();
String sql = "select id,sfxx,bcsdxx from uf_jcl_kq_bcxx where id = ?"; String sql = "select id,sfxx,bcsdxx from uf_jcl_kq_bcxx where id = ?";
List<Map<String,Object>> list = DbTools.getSqlToList(sql,bcxxId); List<Map<String,Object>> list = Lists.newArrayList();
if (!"".equals(bcxxId)){
list = DbTools.getSqlToList(sql,bcxxId);
}
for (String date : dateList){ for (String date : dateList){
//系统管理员 //系统管理员
List<String> beContainIds = null; List<String> beContainIds = null;
@ -416,13 +440,21 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
map.put("rqlx",CommonUtil.getRqlx(str,date)); map.put("rqlx",CommonUtil.getRqlx(str,date));
map.put("pbtj",RegularScheduleTypeEnum.CALENDAR.getKey()); map.put("pbtj",RegularScheduleTypeEnum.CALENDAR.getKey());
map.put("bcrq",date); map.put("bcrq",date);
map.put("sfxx", Util.null2String(list.get(0).get("sfxx")).equals("") ?CheckBoxEnum.UNCHECKED.getValue() : Util.null2String(list.get(0).get("sfxx"))); if ("".equals(bcxxId)){
map.put("bcsdxx",list.get(0).get("bcsdxx")); map.put("sfxx",null);
map.put("bcsdxx",null);
map.put("bcxx",null);
}else {
map.put("sfxx", Util.null2String(list.get(0).get("sfxx")).equals("") ?CheckBoxEnum.UNCHECKED.getValue() : Util.null2String(list.get(0).get("sfxx")));
map.put("bcsdxx",list.get(0).get("bcsdxx"));
map.put("bcxx",bcxxId);
}
map.put("sfdkpp",CheckBoxEnum.UNCHECKED.getKey()); map.put("sfdkpp",CheckBoxEnum.UNCHECKED.getKey());
map.put("bcxx",bcxxId);
map.put("pbrq",DateUtil.getCurrentDate()); map.put("pbrq",DateUtil.getCurrentDate());
map.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]); map.put("pbsj",DateUtil.getCurrentTime("yyyy-MM-dd HH:mm").split(" ")[1]);
organizationList.add(map); if (!"".equals(map.get("rqlx"))){
organizationList.add(map);
}
} }
@ -430,6 +462,9 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
/**插入排班结果表*/ /**插入排班结果表*/
resultMap.put("result",PersongroupCommonUtil.insertSchedulingResults(organizationList,formmodeid)); resultMap.put("result",PersongroupCommonUtil.insertSchedulingResults(organizationList,formmodeid));
if (!(boolean)resultMap.get("result")){
throw new AttendanceRunTimeException("插入数据失败,请检查修改班次人员是否有对应的企业日历");
}
return resultMap; return resultMap;
} }
@ -456,4 +491,21 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
log.debug("be contain userIds : [{}]",beContainIds); log.debug("be contain userIds : [{}]",beContainIds);
return beContainIds; return beContainIds;
} }
@Override
public Map<String,Object> queryDefaultCalendar(Map<String, Object> params) {
Map<String,Object> resultMap = Maps.newHashMap();
String nd = Util.null2String(params.get("nd"));
String sql = "select a.rq,a.nlrq,a.mc,b.id from uf_jcl_kq_rlxx a left join uf_jcl_kq_rlmc b on a.rlmc=b.id where nd=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,nd);
String id = "";
for (Map<String,Object> map:dataList){
if (!Util.null2String(map.get("id")).equals("")){
id = Util.null2String(map.get("id"));
}
}
Map<String,List<Map<String,Object>>> dataGroupBy = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("id"))));
resultMap.put("data",dataGroupBy.get(id));
return resultMap;
}
} }

@ -19,6 +19,7 @@ import javax.ws.rs.core.MediaType;
import java.util.Map; import java.util.Map;
/** /**
*
* @Author liang.cheng * @Author liang.cheng
* @Date 2023/12/26 6:52 PM * @Date 2023/12/26 6:52 PM
* @Description: TODO * @Description: TODO
@ -57,4 +58,13 @@ public class WorkRulesController {
Map<String,Object> paramMap = ParamUtil.request2Map(request); Map<String,Object> paramMap = ParamUtil.request2Map(request);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getReportCollectService(user) :: saveCalendarWork,paramMap); return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getReportCollectService(user) :: saveCalendarWork,paramMap);
} }
@POST
@Path("/queryDefaultCalendar")
@Produces(MediaType.APPLICATION_JSON)
public String queryDefaultCalendar(@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) :: queryDefaultCalendar,paramMap);
}
} }

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

Loading…
Cancel
Save