zm_dev
liuliang 1 year ago
parent fae56112e3
commit 6e8670b810

@ -776,3 +776,43 @@
2023-11-28 20:02:25,545 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-12-05 21:53:39,011 [Timer-0] [A2] [INFO] - rootPath == null
2023-12-05 21:53:39,021 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-12-06 21:11:34,881 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[]]
2023-12-06 21:11:34,884 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[]]
2023-12-06 21:13:56,396 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=1, rqlx=11}]]
2023-12-06 21:13:56,418 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=1, rqlx=11}]]
2023-12-06 21:15:09,101 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:15:09,128 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:15:32,742 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:15:32,761 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:16:02,964 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:16:02,994 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:16:03,269 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:16:03,287 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=10:00, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:17:07,642 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=1, rqlx=11}]]
2023-12-06 21:17:07,674 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:17:44,635 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:17:44,655 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=16:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:20:15,010 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-06 21:20:15,030 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:20:25,933 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:20:25,965 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:21:00,062 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:21:00,082 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:22:24,380 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:22:24,400 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:27:24,496 [Timer-0] [A2] [INFO] - rootPath == null
2023-12-07 10:27:24,496 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-12-07 10:48:34,530 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:48:34,547 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:49:56,290 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:49:56,311 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:50:59,235 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:50:59,255 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:51:37,466 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:51:37,487 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=60, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=60, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=60, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:53:10,609 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 未重新计算卡点时 老的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=120, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=120, ksdk=1, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=120, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=120, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:53:10,629 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd] [INFO] - 经过重新计算卡点时 新的scheduleResult : [[{edsc=9.50, bdlx=0, jsdk=0, tqdkfzs=120, sfkt=1, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=09:00, thdkfzs=120, ksdk=0, rqlx=11}, {edsc=9.50, bdlx=0, jsdk=1, tqdkfzs=120, sfkt=1, dtjssj=18:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=13:00, thdkfzs=120, ksdk=0, rqlx=11}]],askForLeaveAndEvctionScheduleList:[[{edsc=9.50, bdlx=7, jsdk=0, tqdkfzs=60, sfkt=1, dtjssj=17:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=1, dtkssj=08:30, thdkfzs=60, ksdk=0, rqlx=11}]]
2023-12-07 10:58:10,710 [Timer-0] [A2] [INFO] - rootPath == null
2023-12-07 10:58:10,711 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties
2023-12-07 17:05:11,529 [main] [com.engine.common.util.Utils] [INFO] - removeRestTime scheduleResult : [{edsc=9.50, bdlx=1, jsdk=1, tqdkfzs=120, sfkt=0, dtjssj=13:00, zddxfz=30, bcxx=25, dxhs=5, bcsdxx=09:00-13:00|13:00-18:30, sfdx=0, dtkssj=12:00, thdkfzs=120, ksdk=0, rqlx=11}]
2023-12-07 17:05:11,538 [main] [com.engine.common.util.Utils] [INFO] - 休息时间在请假时间 右边

@ -148,7 +148,22 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
scheduleResult.addAll(askForLeaveAndEvctionScheduleList);
scheduleResult = scheduleResult.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
}
List<Map<String, Map<String, Object>>> clcokInTimeData = getClockInPoint(analysisDate, scheduleResult, clockInTimeList);
List<String> needClockDateList = Lists.newArrayList();
for (int i=0;i<scheduleResult.size();i++){
String dtkssj = analysisDate + " " + scheduleResult.get(i).get("dtkssj");
String dtjssj = analysisDate + " " + scheduleResult.get(i).get("dtjssj");
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0) {
dtjssj = DateUtil.AfterDay(analysisDate, 1) + " " + scheduleResult.get(i).get("dtjssj");
}
if (CheckBoxEnum.CHECKED.getKey().equals(scheduleResult.get(i).get("ksdk"))) {
needClockDateList.add(dtkssj);
}
if (CheckBoxEnum.CHECKED.getKey().equals(scheduleResult.get(i).get("jsdk"))){
needClockDateList.add(dtjssj);
}
}
List<Map<String, Map<String, Object>>> clcokInTimeData = getClockInPoint(analysisDate, scheduleResult, clockInTimeList,needClockDateList);
resultMap.put("clcokInTimeData", clcokInTimeData);
return resultMap;
}
@ -159,10 +174,11 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
* @param analysisDate
* @param scheduleResult
* @param clockInTimeList
* @param needClockDateList
* @return {2023-11-12 09:00|0|3|2023-11-12 09:15={signtime=09:11:00, id=48, userid=53, signdate=2023-11-12}}
* ||| = map
*/
public static List<Map<String, Map<String, Object>>> getClockInPoint(String analysisDate, List<Map<String, Object>> scheduleResult, List<Map<String, Object>> clockInTimeList) {
public List<Map<String, Map<String, Object>>> getClockInPoint(String analysisDate, List<Map<String, Object>> scheduleResult, List<Map<String, Object>> clockInTimeList, List<String> needClockDateList) {
/**
*
@ -191,7 +207,8 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null) {
String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") + " " + ksdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtjssj)) < 0) {
if (getNextClockTime(needClockDateList,dtkssj).equals("") || DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(getNextClockTime(needClockDateList,dtkssj))) < 0) {
//打卡时间小于结束时间
timeType = ClockPointEnum.AFTER.getKey();
}
@ -221,7 +238,7 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
}
if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null) {
String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") + " " + jsdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtkssj)) > 0) {
if (getBeforeClockTime(needClockDateList,dtjssj).equals("") || DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(getBeforeClockTime(needClockDateList,dtjssj))) > 0) {
timeType = ClockPointEnum.BEFORE.getKey();
}
}
@ -457,4 +474,33 @@ public class GetClockInPointCmd extends AbstractCommonCommand<Map<String, Object
return clcokInTimeData;
}
public String getNextClockTime(List<String> needClockDateList,String time){
int index = 0;
for (int i=0;i<needClockDateList.size();i++){
if (needClockDateList.get(i).equals(time)){
index = i+1;
break;
}
}
if (index < needClockDateList.size()){
return needClockDateList.get(index);
}else {
return "";
}
}
public String getBeforeClockTime(List<String> needClockDateList,String time){
int index = 0;
for (int i=0;i<needClockDateList.size();i++){
if (needClockDateList.get(i).equals(time)){
index = i-1;
break;
}
}
if (index > 0){
return needClockDateList.get(index);
}else {
return "";
}
}
}

@ -6,6 +6,7 @@ import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import weaver.conn.RecordSet;
@ -88,15 +89,24 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand<Map<String
String userId = Util.null2String(params.get("userId"));
String date = Util.null2String(params.get("date"));
String formmodeid = Util.null2String(params.get("modeId"));
List<Map<String, Object>> scheduleList = params.get("scheduleList") == null? Lists.newArrayList():(List<Map<String, Object>>)params.get("scheduleList");
String sql = "select subcompanyid1,departmentid,jobtitle from hrmresource where id=?";
String rqlx = "";
String sfxx = "";
String cqzt = "1";
if (scheduleList.size()>0){
rqlx = Util.null2String(scheduleList.get(0).get("rqlx"));
sfxx = Util.null2String(scheduleList.get(0).get("sfxx"));
cqzt = "0";
}
List<Map<String,Object>> userList = DbTools.getSqlToList(sql,userId);
if (dataList.size() >0){
sql = "update uf_jcl_kq_cqjg set xm1=?,cqzt=1,cqsc=0,sjzt=1 where ygid=? and rq=?";
sql = "update uf_jcl_kq_cqjg set xm1=?,cqzt="+cqzt+",cqsc=0,sjzt=1,rqlx="+rqlx+",sfxx="+sfxx+" where ygid=? and rq=?";
DbTools.update(rs,sql,SystemItemEnum.NO_SCHEDULING.getKey(),userId,date);
}else {
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,xm1,cqzt,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx,sfxx) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
DbTools.update(rs,sql,userList.get(0).get("subcompanyid1"),userId,userList.get(0).get("subcompanyid1"),
userList.get(0).get("departmentid"),userList.get(0).get("jobtitle"),date, SystemItemEnum.NO_SCHEDULING.getKey(),1,1, DateUtil.getCurrentDate(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1]);
userList.get(0).get("departmentid"),userList.get(0).get("jobtitle"),date, SystemItemEnum.NO_SCHEDULING.getKey(),cqzt,1, DateUtil.getCurrentDate(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1],rqlx,sfxx);
}

@ -52,33 +52,33 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
String dayTYpe ="";
if (DateTypeEnum.WORK_DAY.getKey().equals(rqlx) || DateTypeEnum.CHANGECLASS.getKey().equals(rqlx)){
//工作日
dayTYpe = SystemItemEnum.WORK_DAY.getKey();
}else if (DateTypeEnum.HOLIDAY.getKey().equals(rqlx)){
//节假日
dayTYpe = SystemItemEnum.HOLIDAY.getKey();
}else if (DateTypeEnum.PUBLIC_RESTDAY.getKey().equals(rqlx) ||
DateTypeEnum.EXCHANGE_LEAVEDAY.getKey().equals(rqlx)){
//休息日
dayTYpe = SystemItemEnum.REST_DAY.getKey();
}
// String dayTYpe ="";
// if (DateTypeEnum.WORK_DAY.getKey().equals(rqlx) || DateTypeEnum.CHANGECLASS.getKey().equals(rqlx)){
// //工作日
// dayTYpe = SystemItemEnum.WORK_DAY.getKey();
// }else if (DateTypeEnum.HOLIDAY.getKey().equals(rqlx)){
// //节假日
// dayTYpe = SystemItemEnum.HOLIDAY.getKey();
// }else if (DateTypeEnum.PUBLIC_RESTDAY.getKey().equals(rqlx) ||
// DateTypeEnum.EXCHANGE_LEAVEDAY.getKey().equals(rqlx)){
// //休息日
// dayTYpe = SystemItemEnum.REST_DAY.getKey();
// }
String sql = "select ygid,rq from uf_jcl_kq_cqjg where ygid=? and rq=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,userId,analysisDate);
if (dataList.size() >0){
sql = "update uf_jcl_kq_cqjg set cqsc="+attendanceDuration+",cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentDate()+"',xm1="+dayTYpe+",";
sql = "update uf_jcl_kq_cqjg set cqsc="+attendanceDuration+",cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentTime()+"',rqlx="+rqlx+",";
for (int i =0;i<recordDataList.size();i++){
String item = Util.null2String(recordDataList.get(i).get("item"));
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));
int index = i+2;
int index = i+1;
sql = sql + "xm"+index+"="+item+",";
if (!"".equals(itemduration)){
sql = sql + "sc"+index+"="+itemduration+",";
}
}
for (int i=recordDataList.size()+2;i<9;i++){
for (int i=recordDataList.size()+1;i<9;i++){
sql = sql +"xm"+i+"=NULL,sc"+i+"=NULL,";
}
if (recordDataTime != null && recordDataTime.size() >0){
@ -93,8 +93,8 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
}else {
sql = "select subcompanyid1,departmentid,jobtitle from hrmresource where id=?";
List<Map<String,Object>> userList = DbTools.getSqlToList(sql,userId);
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,bc,bcbdxx,cqzt,cqsc,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,";
String cloumns = "xm1,";
sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,bc,bcbdxx,cqzt,cqsc,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,rqlx";
String cloumns = "";
String value = "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,";
List<Object> insertDatas = Lists.newArrayList();
insertDatas.add(userList.get(0).get("subcompanyid1"));
@ -108,16 +108,16 @@ public class recordDataCmd extends AbstractCommonCommand<Map<String,Object>> {
insertDatas.add(cqzt);
insertDatas.add(attendanceDuration);
insertDatas.add(1);
insertDatas.add(DateUtil.getCurrentDate());
insertDatas.add(DateUtil.getCurrentTime());
insertDatas.add(formmodeid);
insertDatas.add(UUID.randomUUID().toString());
insertDatas.add(1);
insertDatas.add(0);
insertDatas.add(DateUtil.getCurrentDate());
insertDatas.add(DateUtil.getCurrentTime().split(" ")[1]);
insertDatas.add(dayTYpe);
insertDatas.add(rqlx);
for (int i =0;i<recordDataList.size();i++){
int index = i+2;
int index = i+1;
String item = Util.null2String(recordDataList.get(i).get("item"));
String itemduration = Util.null2String(recordDataList.get(i).get("itemduration"));

@ -12,7 +12,7 @@ public interface UtilService {
* @param params
* @return
*/
Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String,Object> params);
Map<String, Object> getSchedulingInFormation(Map<String,Object> params);
/**
*

@ -3,7 +3,6 @@ package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.item.*;
import com.engine.attendance.attendanceanalysis.service.AbnormalAttendanceService;
import com.engine.attendance.enums.*;
import com.engine.common.util.DateUtil;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
@ -36,6 +35,8 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
String point = Util.null2String(params.get("point"));
//分析日期
String analysisDate = Util.null2String(params.get("analysisDate"));
//班次
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
//人员
String userId = Util.null2String(params.get("userId"));
List<Map<String,Object>> resultList = Lists.newArrayList();
@ -49,7 +50,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
}else {
classStartTime=point.split("\\|")[0];
}
int between = DateUtil.getBetWeenMinutes(classStartTime,clockInTime);
int between = Utils.removeRestTime(classStartTime,clockInTime,scheduleResult,analysisDate);
Map<String,Object> lateParams = Maps.newHashMap();
lateParams.put("attendanceItems",attendanceItems);
@ -202,6 +203,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
Map<String,Object> clcokInTimeData = (Map<String, Object>)params.get("clcokInTimeData");
//考勤项目
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
//班段类型
String bdlx = Util.null2String(classInfo.get("bdlx"));
//分析日期
@ -220,7 +222,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt
}else {
classEndTime=point.split("\\|")[0];
}
int between = DateUtil.getBetWeenMinutes(clockInTime,classEndTime);
int between = Utils.removeRestTime(clockInTime,classEndTime,scheduleResult,analysisDate);
Map<String,Object> earlyParams = Maps.newHashMap();
earlyParams.put("attendanceItems",attendanceItems);

@ -29,6 +29,10 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
String jssj = Util.null2String(param.get("jssj"));
//作用时段
String zysd = Util.null2String(param.get("zysd"));
//分析日期
String analysisDate = Util.null2String(param.get("analysisDate"));
//排班
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)param.get("scheduleResult");
List<Map<String,Object>> offsetAskForLeaveAnomaly = Lists.newArrayList();
@ -42,17 +46,16 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj);
leaveMap.put("jssj",jssj);
int betweenTime = DateUtil.getBetWeenMinutes(classStartTime,classEndTime);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap);
int betweenTime = Utils.removeRestTime(classStartTime,classEndTime,scheduleResult,analysisDate);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap,scheduleResult,analysisDate);
if (betweenTime == intersectionTime){
offsetAskForLeaveAnomaly.add(abnormalClockInList.get(i));
}else {
String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw"));
int hsl = Integer.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl")));
double hsl = Double.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl")));
double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES);
abnormalClockInList.get(i).put("itemduration",itemduration);
}
}
}
abnormalClockInList.removeAll(offsetAskForLeaveAnomaly);

@ -28,6 +28,10 @@ public class EvectionServiceImpl extends Service implements EvectionService {
String jssj = Util.null2String(param.get("jssj"));
//作用时段
String zysd = Util.null2String(param.get("zysd"));
//分析日期
String analysisDate = Util.null2String(param.get("analysisDate"));
//排班
List<Map<String,Object>> scheduleResult = (List<Map<String,Object>>)param.get("scheduleResult");
List<Map<String,Object>> offsetEvectionAnomaly = Lists.newArrayList();
for (int i=0;i<abnormalClockInList.size();i++){
@ -41,13 +45,13 @@ public class EvectionServiceImpl extends Service implements EvectionService {
Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj);
leaveMap.put("jssj",jssj);
int betweenTime = DateUtil.getBetWeenMinutes(classStartTime,classEndTime);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap);
int betweenTime = Utils.removeRestTime(classStartTime,classEndTime,scheduleResult,analysisDate);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap,scheduleResult,analysisDate);
if (betweenTime == intersectionTime){
offsetEvectionAnomaly.add(abnormalClockInList.get(i));
}else {
String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw"));
int hsl = Integer.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl")));
double hsl = Double.valueOf(Util.null2String(abnormalClockInList.get(i).get("hsl")));
double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES);
abnormalClockInList.get(i).put("itemduration",itemduration);
}

@ -26,48 +26,56 @@ public class UtilServiceImpl extends Service implements UtilService {
private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class);
@Override
public Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String, Object> params) {
public Map<String, Object> getSchedulingInFormation(Map<String, Object> params) {
/** 班次信息*/
Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTable(params);
List<Map<String,Object>> schedulingResultsList = (List<Map<String,Object>>)schedulingResultsMap.get("data");
Map<String,Object> schedulMap = Maps.newHashMap();
String glpb = "";
if (schedulingResultsList.size() >0){
glpb = Util.null2String(schedulingResultsList.get(0).get("pbgl"));
}
schedulingResultsList = schedulingResultsList.stream().filter(e -> !"1".equals(e.get("sfxx"))).collect(Collectors.toList());
//schedulingResultsList = schedulingResultsList.stream().filter(e -> !"1".equals(e.get("sfxx"))).collect(Collectors.toList());
// Map<String,String> schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")).split("-")[0], e->Util.null2String(e.get("bcrq"))+"&"+Util.null2String(e.get("rqlx"))));
Map<String,List<Map<String,Object>>> schedulingMap = schedulingResultsList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcxx")).split("-")[0]));
Map<String,List<Map<String,Object>>> schedulingMapBydate = schedulingResultsList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcrq"))));
schedulMap.put("schedulingMapBydate",schedulingMapBydate);
Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap();
String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,a.zddxfz,a.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs,b.edxss from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in (";
String bcxxIds = "";
for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){
bcxxIds +=entry.getKey() +",";
}
if ("".equals(bcxxIds)){
return resultMap;
if (!entry.getKey().equals("")){
bcxxIds +=entry.getKey() +",";
}
}
bcxxIds = bcxxIds.substring(0,bcxxIds.length()-1);
sql = sql +bcxxIds+") order by b.kssj";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcxx"))));
dataMap.entrySet().forEach(e -> {
List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey());
List<Map<String,Object>> bcxxs = e.getValue();
for (Map<String,Object> scheduling :schedulingList){
String bcrq = Util.null2String(scheduling.get("bcrq"));
String rqlx = Util.null2String(scheduling.get("rqlx"));
List<Map<String,Object>> classs = Lists.newArrayList();
for (Map<String,Object> map:bcxxs){
Map<String,Object> newMap = Maps.newHashMap();
newMap.putAll(map);
newMap.put("rqlx",rqlx);
classs.add(newMap);
List<Map<String,Object>> dataList = Lists.newArrayList();
if (!"".equals(bcxxIds)){
bcxxIds = bcxxIds.substring(0,bcxxIds.length()-1);
sql = sql +bcxxIds+") order by b.kssj";
dataList = DbTools.getSqlToList(sql);
Map<String,List<Map<String,Object>>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcxx"))));
dataMap.entrySet().forEach(e -> {
List<Map<String,Object>> schedulingList = schedulingMap.get(e.getKey());
List<Map<String,Object>> bcxxs = e.getValue();
for (Map<String,Object> scheduling :schedulingList){
String bcrq = Util.null2String(scheduling.get("bcrq"));
String rqlx = Util.null2String(scheduling.get("rqlx"));
String sfxx = Util.null2String(scheduling.get("sfxx"));
List<Map<String,Object>> classs = Lists.newArrayList();
for (Map<String,Object> map:bcxxs){
Map<String,Object> newMap = Maps.newHashMap();
newMap.putAll(map);
newMap.put("rqlx",rqlx);
newMap.put("sfxx",sfxx);
classs.add(newMap);
}
resultMap.put(bcrq,classs);
}
resultMap.put(bcrq,classs);
}
});
});
}
/** 加班计划*/
sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc from uf_jcl_kq_jbjh_dt1 where jbry=? and ksrq>=? and ksrq<=? and (jbcx=0 or jbcx is null)";
@ -90,6 +98,7 @@ public class UtilServiceImpl extends Service implements UtilService {
resultMap.put(e.getKey(),Lists.newArrayList());
}
List<Map<String,Object>> resultList = resultMap.get(e.getKey());
List<Map<String,Object>> schedulingdateMap = schedulingMapBydate.get(e.getKey());
Map<String,Object> overtimePlan = e.getValue().get(0);
@ -118,10 +127,13 @@ public class UtilServiceImpl extends Service implements UtilService {
}).collect(Collectors.toList());
map.put("bcxx",resultList.get(0) == null ? "0" :resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList.get(0) == null ? "":resultList.get(0).get("bcsdxx"));
map.put("bcxx",schedulingdateMap.get(0) == null ? "0" :schedulingdateMap.get(0).get("bcxx"));
map.put("bcsdxx",schedulingdateMap.get(0) == null ? "":schedulingdateMap.get(0).get("bcsdxx"));
if (dataList.size()>0){
map.put("edsc",Util.null2String(dataList.get(0).get("edsc")));
map.put("sfdx",Util.null2String(dataList.get(0).get("sfdx")));
map.put("zddxfz",Util.null2String(dataList.get(0).get("zddxfz")));
map.put("dxhs",Util.null2String(dataList.get(0).get("dxhs")));
}else {
map.put("edsc","0");
}
@ -130,11 +142,11 @@ public class UtilServiceImpl extends Service implements UtilService {
map.put("dtjssj",overtimePlan.get("jssj"));
map.put("ksdk","0");
map.put("jsdk","0");
if (schedulingdateMap.size()>0){
map.put("sfxx",Util.null2String(schedulingdateMap.get(0).get("sfxx")));
}
map.put("tqdkfzs","60");
map.put("thdkfzs","60");
map.put("sfdx",Util.null2String(dataList.get(0).get("sfdx")));
map.put("zddxfz",Util.null2String(dataList.get(0).get("zddxfz")));
map.put("dxhs",Util.null2String(dataList.get(0).get("dxhs")));
map.put("rqlx",dateMap.get(e.getKey()));
map.put("edxss",overtimePlan.get("jbsc"));
if (attendanceItems.size() >0){
@ -170,8 +182,9 @@ public class UtilServiceImpl extends Service implements UtilService {
}
schedulMap.put("schedulingResultsMap",resultMap);
log.info("SchedulingResults : [{}]",resultMap);
return resultMap;
return schedulMap;
}
@ -214,7 +227,7 @@ public class UtilServiceImpl extends Service implements UtilService {
//开始时间打卡
String key = "j"+inIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTime != null){
String value = "'"+clcokInTime.get("signdate")+" "+clcokInTime.get("signtime")+"'";
String value = "'"+clcokInTime.get("signtime")+"'";
resultMap.put(key,value);
}
inIndex++;
@ -222,7 +235,7 @@ public class UtilServiceImpl extends Service implements UtilService {
//结束时间打卡
String key = "c"+outIndex;
if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTime != null){
String value = "'"+clcokInTime.get("signdate")+" "+clcokInTime.get("signtime")+"'";
String value = "'"+clcokInTime.get("signtime")+"'";
resultMap.put(key,value);
}
outIndex++;

@ -68,11 +68,11 @@ public class AttendanceanalysisAction {
classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
for (int i=0; i<=betweenDays;i++){
String date = DateUtil.AfterDay(startDate,i);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulingResultsMap);
attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulMap);
}
}
return null;

@ -62,8 +62,9 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("pageSize",10);
classesParamMap.put("recurrence",1);
classesParamMap.put("attendanceItems",attendanceItems);
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String,Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String,List<Map<String,Object>>> schedulingResultsMap = (Map<String,List<Map<String,Object>>>)schedulMap.get("schedulingResultsMap");
Map<String,List<Map<String,Object>>> schedulingMapBydate = (Map<String,List<Map<String,Object>>>)schedulMap.get("schedulingMapBydate");
/**计算获取前一天和第二天打卡数据*/
Map<String,Object> getClockTimeParam = Maps.newHashMap();
@ -75,14 +76,14 @@ public class AttendanceAnalysisWrapper extends Service {
List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeOneDayClockInTimeList : [{}]",beforeOneDayClockInTimeList);
//分析前一天考勤
analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems);
analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems,schedulingMapBydate.get(beforeOneDayDate));
getClockTimeParam.put("date",beforeTwoDayDate);
//前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
log.info("beforeTwoDayClockInTimeList : [{}]",beforeTwoDayClockInTimeList);
//分析前第二天考勤
analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems);
analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems,schedulingMapBydate.get(beforeTwoDayDate));
}
@ -94,13 +95,15 @@ public class AttendanceAnalysisWrapper extends Service {
* @param dataList 23
* @param attendanceItems
*/
public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,List<Map<String,Object>>> schedulingResultsMap){
public void attendanceAnalysisForApi(String userId,String analysisDate, List<Map<String,Object>> dataList,List<Map<String,Object>> attendanceItems,Map<String,Object> schedulMap){
log.info("***********analysis userId:{} start***********",userId);
log.info("clockInTimeDate : [{}]",dataList);
Map<String, List<Map<String,Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() >0){
collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
}
Map<String,List<Map<String,Object>>> schedulingResultsMap = (Map<String,List<Map<String,Object>>>)schedulMap.get("schedulingResultsMap");
Map<String,List<Map<String,Object>>> schedulingMapBydate = (Map<String,List<Map<String,Object>>>)schedulMap.get("schedulingMapBydate");
/**计算获取前一天和第二天打卡数据*/
Map<String,Object> getClockTimeParam = Maps.newHashMap();
getClockTimeParam.put("date",analysisDate);
@ -110,7 +113,7 @@ public class AttendanceAnalysisWrapper extends Service {
log.info("getClockTimeParam : [{}]",getClockTimeParam);
List<Map<String, Object>> clockInTimeList = utilService.getClockInTime(getClockTimeParam);
analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems);
analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems,schedulingMapBydate.get(analysisDate));
}
/**
@ -121,7 +124,7 @@ public class AttendanceAnalysisWrapper extends Service {
* @param scheduleResult
* @param attendanceItems
*/
public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems){
public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems,List<Map<String, Object>> scheduleList){
Map<String,Object> recordParam = Maps.newHashMap();
Map<String,String> formModeIdMap = Utils.getFormmodeIdMap();
recordParam.put("userId",userId);
@ -139,6 +142,7 @@ public class AttendanceAnalysisWrapper extends Service {
params.put("userId",userId);
params.put("analysisDate",analysisDate);
params.put("modeId",formModeIdMap.get("uf_jcl_kq_cqjg"));
params.put("scheduleList",scheduleList);
updateAttendanceResultWrapper.recordNoClass(params);
return;
}

@ -79,6 +79,7 @@ public class UpdateAttendanceResultWrapper extends Service {
missCardParams.put("analysisDate",analysisDate);
missCardParams.put("userId",userId);
missCardParams.put("point",point);
missCardParams.put("scheduleResult",scheduleResult);
log.info("missCardParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
List<Map<String,Object>> iforgetClockIn = forgetClockInService.forgetClockIn(missCardParams);
if (iforgetClockIn.size() >0){
@ -96,6 +97,7 @@ public class UpdateAttendanceResultWrapper extends Service {
beLateParams.put("analysisDate",analysisDate);
beLateParams.put("userId",userId);
beLateParams.put("point",point);
beLateParams.put("scheduleResult",scheduleResult);
log.info("beLateParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
List<Map<String,Object>> ifBeLate = beLateService.beLate(beLateParams);
if (ifBeLate.size() > 0){
@ -112,6 +114,7 @@ public class UpdateAttendanceResultWrapper extends Service {
leaveEarlyParams.put("analysisDate",analysisDate);
leaveEarlyParams.put("userId",userId);
leaveEarlyParams.put("point",point);
leaveEarlyParams.put("scheduleResult",scheduleResult);
log.info("leaveEarlyParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData);
List<Map<String,Object>> ifLeaveEarly = beLateService.leaveEarly(leaveEarlyParams);
if (ifLeaveEarly.size() > 0){
@ -187,6 +190,8 @@ public class UpdateAttendanceResultWrapper extends Service {
Map<String,Object> param = Maps.newHashMap();
param.put("abnormalClockInList",abnormalClockInList);
param.put("zysd",zysd);
param.put("scheduleResult",scheduleResult);
param.put("analysisDate",analysisDate);
double itemduration = 0;
if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){
//弹性请假,半天请假
@ -377,6 +382,7 @@ public class UpdateAttendanceResultWrapper extends Service {
normalParams.put("userId",userId);
normalParams.put("date",analysisDate);
normalParams.put("modeId",params.get("modeId"));
normalParams.put("scheduleList",params.get("scheduleList"));
log.info("userId : {} ,analysisDate: {} have no class",userId,analysisDate);
commandExecutor.execute(new UpdateAttendanceResultsCmd(normalParams));

@ -438,25 +438,25 @@ public class Utils<T> {
* mapkssjjssj
* @return
*/
public static int getIntersectionTime(String kssj,String jssj,Map<String, Object> map){
public static int getIntersectionTime(String kssj,String jssj,Map<String, Object> map,List<Map<String, Object>> scheduleResult,String analysisDate){
String leavekssj = map.get("kssj").toString();
String leavejssj = map.get("jssj").toString();
int betweenMinutes=0;
if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) >=0){
//时间在中间
betweenMinutes = DateUtil.getBetWeenMinutes(leavekssj,leavejssj);
betweenMinutes = removeRestTime(leavekssj,leavejssj,scheduleResult,analysisDate);
log.info("时间在中间,被包含");
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavekssj)) >=0){
//时间 右边
betweenMinutes = DateUtil.getBetWeenMinutes(leavekssj,jssj);
betweenMinutes = removeRestTime(leavekssj,jssj,scheduleResult,analysisDate);
log.info("时间 右边");
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) >=0 && DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavejssj)) <=0){
//时间 左边
betweenMinutes = DateUtil.getBetWeenMinutes(kssj,leavejssj);
betweenMinutes = removeRestTime(kssj,leavejssj,scheduleResult,analysisDate);
log.info("时间 左边");
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(leavekssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(leavejssj)) <=0){
//请假外出时间中间
betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
betweenMinutes = removeRestTime(kssj,jssj,scheduleResult,analysisDate);
log.info("时间在中间,包含");
}
return betweenMinutes;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,72 @@
import com.google.common.collect.Lists;
import weaver.general.Util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test2 {
public static void main(String[] args) {
List<Map<String,Object>> schedulingList = Lists.newArrayList();
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","13:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","09:00");
put("thdkfzs","120");
put("ksdk","1");
put("bcxx","11-办公室白班");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","13:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","09:00");
put("thdkfzs","120");
put("ksdk","1");
put("bcxx","");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","13:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","09:00");
put("thdkfzs","120");
put("ksdk","1");
put("bcxx","");
}});
Map<String,List<Map<String,Object>>> schedulingMap = schedulingList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcxx")).split("-")[0]));
String bcxxIds = "";
for (Map.Entry<String,List<Map<String,Object>>> entry :schedulingMap.entrySet()){
if (!entry.getKey().equals("")){
bcxxIds +=entry.getKey() +",";
}
}
System.out.println(bcxxIds);
}
}

@ -1,3 +1,4 @@
import com.engine.attendance.attendanceanalysis.cmd.GetClockInPointCmd;
import com.engine.attendance.attendanceanalysis.service.UtilService;
import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl;
import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper;
@ -12,6 +13,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -25,7 +28,7 @@ public class TestGetClockInPoint {
put("edsc","9.50");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","60");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","13:00");
put("zddxfz","30");
@ -34,7 +37,7 @@ public class TestGetClockInPoint {
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","09:00");
put("thdkfzs","60");
put("thdkfzs","120");
put("ksdk","1");
put("rqlx","11");
}});
@ -42,7 +45,7 @@ public class TestGetClockInPoint {
put("edsc","9.50");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","60");
put("tqdkfzs","120");
put("sfkt","1");
put("dtjssj","18:00");
put("zddxfz","30");
@ -51,11 +54,12 @@ public class TestGetClockInPoint {
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","13:00");
put("thdkfzs","60");
put("thdkfzs","120");
put("ksdk","0");
put("rqlx","11");
}});
List<Map<String,Object>> dataList = Lists.newArrayList();
dataList.add(new HashMap(){{
put("signtime","09:11:00");
@ -87,13 +91,43 @@ public class TestGetClockInPoint {
put("userid","53");
put("signdate","2023-11-12");
}});
dataList.add(new HashMap(){{
put("signtime","16:30:00");
put("id","48");
put("userid","53");
put("signdate","2023-11-12");
}});
dataList.add(new HashMap(){{
put("signtime","18:35:00");
put("id","48");
put("userid","53");
put("signdate","2023-11-12");
}});
List<Map<String, Map<String,Object>>> collect = getClockInPoint("2023-11-12",schedulingList,dataList);
Map<String,Object> param = Maps.newHashMap();
List<Map<String,Object>> askForLeaveAndEvctionSchedule = Lists.newArrayList();
askForLeaveAndEvctionSchedule.add(new HashMap(){{
put("edsc","9.50");
put("bdlx",ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("jsdk","0");
put("tqdkfzs","60");
put("sfkt","1");
put("dtjssj","17:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","1");
put("dtkssj","08:30");
put("thdkfzs","60");
put("ksdk","0");
put("rqlx","11");
}});
param.put("analysisDate","2023-11-12");
param.put("scheduleResult",schedulingList);
param.put("clockInTimeList",dataList);
param.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule);
// List<Map<String, Map<String,Object>>> collect = getClockInPoint("2023-11-12",schedulingList,dataList);
List<Map<String, Map<String,Object>>> collect = (List<Map<String, Map<String, Object>>>)new GetClockInPointCmd(param).execute(null).get("clcokInTimeData");
System.out.println(collect);
// Map<String,Object> clock = getNeedRecordClockInTime(collect);
// System.out.println(clock);
@ -162,6 +196,15 @@ public class TestGetClockInPoint {
clcokInTimeData.add(clcokInTimeMap);
}
}
clcokInTimeData = clcokInTimeData.stream().sorted(Comparator.comparing(e->{
//卡点
String point = "";
//当天打卡数据
for (Map.Entry<String,Map<String,Object>> entry :e.entrySet()){
point = entry.getKey();
}
return DateUtil.getTime(point.split("\\|")[0]).toInstant(ZoneOffset.of("+8")).toEpochMilli();
})).collect(Collectors.toList());
//当弹性上下班时
if (needClockInSchedule.size() > 0){
//是否弹性

@ -0,0 +1,67 @@
import com.engine.common.util.Utils;
import com.google.common.collect.Lists;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestRemoveRestTime {
public static void main(String[] args) {
List<Map<String,Object>> schedulingList = Lists.newArrayList();
schedulingList.add(new HashMap(){{
put("edsc","8");
put("bdlx","0");
put("jsdk","0");
put("tqdkfzs","60");
put("sfkt","0");
put("dtjssj","12:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-12:00|13:00-18:00");
put("sfdx","0");
put("dtkssj","09:00");
put("thdkfzs","");
put("ksdk","1");
put("rqlx","11");
}});
schedulingList.add(new HashMap(){{
put("edsc","9.50");
put("bdlx","1");
put("jsdk","1");
put("tqdkfzs","120");
put("sfkt","0");
put("dtjssj","13:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","0");
put("dtkssj","12:00");
put("thdkfzs","120");
put("ksdk","0");
put("rqlx","11");
}});
schedulingList.add(new HashMap(){{
put("edsc","8");
put("bdlx","0");
put("jsdk","1");
put("tqdkfzs","300");
put("sfkt","1");
put("dtjssj","18:00");
put("zddxfz","30");
put("bcxx","25");
put("dxhs","5");
put("bcsdxx","09:00-13:00|13:00-18:30");
put("sfdx","0");
put("dtkssj","13:00");
put("thdkfzs","");
put("ksdk","0");
put("rqlx","11");
}});
int between = Utils.removeRestTime("2023-12-06 09:00","2023-12-06 12:52:00",schedulingList,"2023-12-06");
System.out.println(between);
}
}
Loading…
Cancel
Save