From 9c728cd1b4913287b3c514c418d87f7373a7adc9 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Thu, 16 Nov 2023 15:33:20 +0800 Subject: [PATCH] liuliang --- log/sdk.log | 456 ++++++++++++++++++ .../hrm_attendance/hrm-attendance.jar | Bin 97441 -> 159433 bytes .../cmd/GetClockInTimeItemCmd.java | 5 +- .../cmd/UpdateAttendanceResultsCmd.java | 37 +- .../job/AttendanceAnalysisJob.java | 7 +- .../service/AbnormalAttendanceService.java | 5 +- .../service/AskForLeaveService.java | 25 + .../service/EvectionService.java | 25 + .../service/ForgetClockInService.java | 5 +- .../service/UtilService.java | 7 + .../impl/AbnormalAttendanceServiceImpl.java | 108 +++-- .../service/impl/AskForLeaveServiceImpl.java | 77 +++ .../service/impl/EvectionServiceImpl.java | 74 +++ .../impl/ForgetClockInServiceImpl.java | 39 +- .../service/impl/UtilServiceImpl.java | 136 +++++- .../wrapper/AttendanceAnalysisWrapper.java | 190 +++++--- .../UpdateAttendanceResultWrapper.java | 313 ++++++++++-- .../GetAttendanceItemsByPersonDataCmd.java | 2 +- .../commonutil/PersongroupCommonUtil.java | 34 ++ .../engine/attendance/enums/DateTypeEnum.java | 30 ++ src/com/engine/common/cmd/GetDateCmd.java | 5 +- src/com/engine/common/util/Utils.java | 11 +- .../GetAttendanceItemsByPersonDataCmd.class | Bin 8378 -> 8384 bytes .../cmd/GetClockInTimeItemCmd.class | Bin 14696 -> 14696 bytes .../cmd/UpdateAttendanceResultsCmd.class | Bin 4752 -> 5829 bytes .../cmd/{ => item}/AbsenteeismItemCmd.class | Bin 4192 -> 4202 bytes .../cmd/item/BeAwayItemCmd.class | Bin 0 -> 3821 bytes .../cmd/{ => item}/BeLateItemCmd.class | Bin 4112 -> 4122 bytes .../cmd/{ => item}/LeaveEarlyItemCmd.class | Bin 4131 -> 4141 bytes .../cmd/item/VacationItemCmd.class | Bin 0 -> 3826 bytes .../cmd/{ => item}/WorkOvertimeItemCmd.class | Bin 3970 -> 3980 bytes .../job/AttendanceAnalysisJob.class | Bin 3787 -> 3836 bytes .../service/AbnormalAttendanceService.class | Bin 0 -> 594 bytes .../service/AskForLeaveService.class | Bin 0 -> 542 bytes .../service/BeLateService.class | Bin 485 -> 0 bytes .../service/EvectionService.class | Bin 0 -> 447 bytes .../service/ForgetClockInService.class | Bin 399 -> 515 bytes .../service/UtilService.class | Bin 604 -> 713 bytes .../impl/AbnormalAttendanceServiceImpl.class | Bin 0 -> 9515 bytes .../service/impl/AskForLeaveServiceImpl.class | Bin 0 -> 4794 bytes .../service/impl/BeLateServiceImpl.class | Bin 5421 -> 0 bytes .../service/impl/EvectionServiceImpl.class | Bin 0 -> 4706 bytes .../impl/ForgetClockInServiceImpl.class | Bin 1701 -> 2192 bytes .../service/impl/UtilServiceImpl.class | Bin 11966 -> 15724 bytes .../wrapper/AttendanceAnalysisWrapper$1.class | Bin 1966 -> 1984 bytes .../wrapper/AttendanceAnalysisWrapper$2.class | Bin 1965 -> 1983 bytes .../wrapper/AttendanceAnalysisWrapper.class | Bin 16321 -> 18007 bytes .../UpdateAttendanceResultWrapper.class | Bin 5192 -> 15923 bytes .../commonutil/PersongroupCommonUtil.class | Bin 13037 -> 14415 bytes .../job/scheduling/SchedulingJob.class | Bin 3720 -> 3720 bytes .../tactics/DayRegularScheduling.class | Bin 7505 -> 7505 bytes .../tactics/MonthRegularScheduling.class | Bin 7560 -> 7560 bytes .../tactics/WeekRegularScheduling.class | Bin 7945 -> 7945 bytes .../tactics/YearRegularScheduling.class | Bin 7984 -> 7984 bytes .../service/impl/PersonGroupServiceImpl.class | Bin 8172 -> 8172 bytes .../attendance/enums/DateTypeEnum.class | Bin 0 -> 1810 bytes .../com/engine/common/cmd/GetDateCmd.class | Bin 2096 -> 2207 bytes .../com/engine/common/util/CommonUtil.class | Bin 8861 -> 8861 bytes .../com/engine/common/util/DbTools.class | Bin 4229 -> 4229 bytes .../com/engine/common/util/Utils$1.class | Bin 535 -> 535 bytes .../com/engine/common/util/Utils$2.class | Bin 517 -> 517 bytes .../com/engine/common/util/Utils$3.class | Bin 908 -> 908 bytes .../com/engine/common/util/Utils.class | Bin 10563 -> 10704 bytes target/test-classes/Test$1.class | Bin 0 -> 569 bytes target/test-classes/Test$10.class | Bin 0 -> 898 bytes target/test-classes/Test$11.class | Bin 0 -> 898 bytes target/test-classes/Test$12.class | Bin 0 -> 898 bytes target/test-classes/Test$13.class | Bin 0 -> 898 bytes target/test-classes/Test$2.class | Bin 0 -> 569 bytes target/test-classes/Test$3.class | Bin 0 -> 569 bytes target/test-classes/Test$4.class | Bin 0 -> 569 bytes target/test-classes/Test$5.class | Bin 0 -> 569 bytes target/test-classes/Test$6.class | Bin 0 -> 569 bytes target/test-classes/Test$7.class | Bin 0 -> 569 bytes target/test-classes/Test$8.class | Bin 0 -> 569 bytes target/test-classes/Test$9.class | Bin 0 -> 897 bytes target/test-classes/Test.class | Bin 1285 -> 4316 bytes .../test-classes/TestGetClockInPoint$1.class | Bin 0 -> 960 bytes .../test-classes/TestGetClockInPoint$2.class | Bin 0 -> 960 bytes .../test-classes/TestGetClockInPoint$3.class | Bin 0 -> 633 bytes .../test-classes/TestGetClockInPoint$4.class | Bin 0 -> 633 bytes .../test-classes/TestGetClockInPoint$5.class | Bin 0 -> 633 bytes .../test-classes/TestGetClockInPoint$6.class | Bin 0 -> 633 bytes .../test-classes/TestGetClockInPoint$7.class | Bin 0 -> 633 bytes target/test-classes/TestGetClockInPoint.class | Bin 0 -> 7207 bytes test/Test.java | 218 ++++++++- test/TestGetClockInPoint.java | 197 ++++++++ 87 files changed, 1803 insertions(+), 203 deletions(-) create mode 100644 src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java create mode 100644 src/com/engine/attendance/attendanceanalysis/service/EvectionService.java create mode 100644 src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java create mode 100644 src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java create mode 100644 src/com/engine/attendance/enums/DateTypeEnum.java rename target/classes/com/engine/attendance/attendanceanalysis/cmd/{ => item}/AbsenteeismItemCmd.class (65%) create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class rename target/classes/com/engine/attendance/attendanceanalysis/cmd/{ => item}/BeLateItemCmd.class (62%) rename target/classes/com/engine/attendance/attendanceanalysis/cmd/{ => item}/LeaveEarlyItemCmd.class (51%) create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class rename target/classes/com/engine/attendance/attendanceanalysis/cmd/{ => item}/WorkOvertimeItemCmd.class (65%) create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/AbnormalAttendanceService.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.class delete mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/BeLateService.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/EvectionService.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class delete mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/impl/BeLateServiceImpl.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class create mode 100644 target/classes/com/engine/attendance/enums/DateTypeEnum.class create mode 100644 target/test-classes/Test$1.class create mode 100644 target/test-classes/Test$10.class create mode 100644 target/test-classes/Test$11.class create mode 100644 target/test-classes/Test$12.class create mode 100644 target/test-classes/Test$13.class create mode 100644 target/test-classes/Test$2.class create mode 100644 target/test-classes/Test$3.class create mode 100644 target/test-classes/Test$4.class create mode 100644 target/test-classes/Test$5.class create mode 100644 target/test-classes/Test$6.class create mode 100644 target/test-classes/Test$7.class create mode 100644 target/test-classes/Test$8.class create mode 100644 target/test-classes/Test$9.class create mode 100644 target/test-classes/TestGetClockInPoint$1.class create mode 100644 target/test-classes/TestGetClockInPoint$2.class create mode 100644 target/test-classes/TestGetClockInPoint$3.class create mode 100644 target/test-classes/TestGetClockInPoint$4.class create mode 100644 target/test-classes/TestGetClockInPoint$5.class create mode 100644 target/test-classes/TestGetClockInPoint$6.class create mode 100644 target/test-classes/TestGetClockInPoint$7.class create mode 100644 target/test-classes/TestGetClockInPoint.class create mode 100644 test/TestGetClockInPoint.java diff --git a/log/sdk.log b/log/sdk.log index 948c08f..943377c 100644 --- a/log/sdk.log +++ b/log/sdk.log @@ -8,3 +8,459 @@ 2023-10-27 16:45:00,661 [main] [com.engine.attendance.attendanceanalysis.cmd.item.AbsenteeismItemCmd] [INFO] - absenteeismCmd attendanceItems : [[{zdhsl=60, xmlx=2, zysd=1, zxhsl=0}]] 2023-11-12 21:59:10,226 [Timer-0] [A2] [INFO] - rootPath == null 2023-11-12 21:59:10,226 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties +2023-11-14 14:24:04,107 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(SERVICE-METHOD) dynamic proxy... +2023-11-14 14:24:04,116 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workflow.service.impl.WorkflowTypeServiceImpl.doSaveOperation(java.util.Map,weaver.hrm.User) +>> proxy:->com.engine.plugin.workflow.service.CustomWorkflowTypeService->com.engine.plugin.workflow.service.CustomWorkflowTypeService2->com.engine.plugin.workflow.service.CustomWorkflowTypeService3->com.engine.plugin.workflow.service.CustomWorkflowTypeService4 +2023-11-14 14:24:04,116 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(COMMAND) dynamic proxy... +2023-11-14 14:24:04,120 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workplan.cmd.workplanBase.BeforeWorkplanDelCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyDeleteWorkPlanCmd +>> target:com.engine.workflow.cmd.signInput.GetNodeSignSetCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocSignInputSetCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeRightInfo +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeRightInfo +>> target:com.engine.workflow.cmd.requestForm.RequestSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestSubmitCmd->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRequestCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSubmitProxyCmd +>> target:com.engine.workflow.cmd.workflowPath.list.GetWorkflowListConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.list.GetAddOdocWFFormCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoSaveNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuDoSaveNodeCmd->com.engine.plugin.odoc.command.workflowPath.node.DeleteOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetAddInOperateConditionCmd +>> target:com.engine.crm.cmd.chance.FormUpdateCmd +>> proxy:->com.customization.esb.crm.chance.ProxyEditChanceCmd +>> target:com.engine.crm.cmd.customer.CustomerSaveCmd +>> proxy:->com.customization.esb.crm.customer.ProxyNewCustomerCmd +>> target:com.engine.workplan.cmd.workplanBase.AfterWorkplanNormalCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAfterWorkplanNormalCmd +>> target:com.engine.workflow.cmd.requestForm.BatchSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeBatchCmd +>> target:com.api.prj.cmd.prjBoard.DoDelBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoDelBoardStageCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.SaveNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.nodeLink.DeleteOdocNodelinkExtCmd +>> target:com.engine.cube.cmd.app.WaterMarkImg +>> proxy:->com.customization.cube.list.CustomChangeListHrefLinkCmd +>> target:com.engine.crm.cmd.customer.CustomerEditCmd +>> proxy:->com.customization.esb.crm.customer.ProxyEditCustomerCmd +>> target:com.engine.meeting.cmd.meetingbase.NewMeetingCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyNewMeetingCmd +>> target:com.engine.workflow.cmd.signInput.GetSignInputInfoCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestSignInput.OdocSignInputCmd +>> target:com.engine.cube.cmd.app.GetAppListCmd +>> proxy:->com.engine.plugin.mode.license.Proxy_GetAppListCmd +>> target:com.api.prj.cmd.project.DoProjectOperationCmd +>> proxy:->com.customization.esb.proj.project.ProxyDoProjectOperationCmd +>> target:com.engine.workflowDesign.cmd.WorkflowXmlParserCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicCmd +>> target:com.api.prj.cmd.project.DoPrjTempletStageSaveCmd +>> proxy:->com.customization.esb.proj.project.ProxySavePrjTempletStageCmd +>> target:com.engine.workflow.cmd.requestForm.DoTakEndCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSIgnReceiveTimeDoTakEndCmd +>> target:com.engine.crm.cmd.contacter.CreateCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyNewContacterCmd +>> target:com.engine.workflow.cmd.requestForm.GetRightMenuCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocRightMenuCmd->com.engine.plugin.odoc.command.odoRightMenuSetForm.OdocRightMenuBtnCmd->com.engine.plugin.workflow.command.qiyuesuo.QYSRightMenuCmd +>> target:com.engine.workflowDesign.cmd.GetOperateDataCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicOperatorCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocSaveMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocSaveMenuSettingsCmd +>> target:com.engine.odoc.cmd.odocMenuOperate.doEndPersonTreatCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeEndTreatCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.GetBaseInfoConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.GetBaseInfoSettingCmd +>> target:com.engine.workflow.cmd.workflowPath.node.signSet.DoSignSetSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSignSetSaveCmd +>> target:com.engine.crm.cmd.chance.DeleteCmd +>> proxy:->com.customization.esb.crm.chance.ProxyDeleteChanceCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetMenuSettingsCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetActionSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetActionSettingsCmd +>> target:com.engine.odoc.cmd.odocrequest.FlowNextCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeFlowCmd +>> target:com.engine.workflow.cmd.workflowType.DoSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSave2Cmd->com.engine.plugin.workflow.command.CustomDoSave3Cmd->com.engine.plugin.workflow.command.CustomDoSaveCmd +>> target:com.engine.workflowDesign.cmd.GetWfInfoCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetWfInfoCmd->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetWfInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeSessionkeyCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuCmd +>> target:com.engine.crm.cmd.contacter.DeleteCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyDeleteContacterCmd +>> target:com.engine.odoc.cmd.odocrequest.ForceArchiveCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForceArchiveCmd +>> target:com.engine.meeting.cmd.meetingField.GetViewMeetingFieldCmd +>> proxy:->com.customization.meeting.qc854537.CustomGetViewMeetingFieldCmd +>> target:com.api.common.cmd.login.DoUserSessionCmd +>> proxy:->com.engine.plugin.hrm.command.MyDoUserSessionCmd +>> target:com.engine.hrm.cmd.test.GetSearchConditionCmd +>> proxy:->com.engine.plugin.hrm.command.GetMySearchConditionCmd +>> target:com.engine.crm.cmd.chance.FormSaveCmd +>> proxy:->com.customization.esb.crm.chance.ProxyNewChanceCmd +>> target:com.engine.crm.cmd.customer.CrmDeleteCmd +>> proxy:->com.customization.esb.crm.customer.ProxyDeleteCustomerCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetPreAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetPreAddInOperateConditionCmd +>> target:com.api.prj.cmd.prjBoard.DoEditBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoEditBoardStageCmd +>> target:com.engine.odoc.cmd.updateSign.setting.SelectFreeFlowDatasCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowIsFree4OdocProxyCmd +>> target:com.engine.odoc.cmd.updateOperator.PlusSignatureCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAddDelCmd +>> target:com.api.prj.cmd.prjBoard.DoAddBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoAddBoardStageCmd +>> target:com.engine.workflow.cmd.requestForm.RequestManager_FlowNextNodeCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestNextNodeCmd +>> target:com.engine.odoc.cmd.odocWorkflow.OdocAddWorkflowCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignAddWorkflowCmd +>> target:com.engine.workflow.cmd.requestForm.RemarkSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRemarkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoAddWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveAddWFCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.GetNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeLinkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoSaveNewVersionCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSaveNewVersionTabCmd->com.engine.plugin.odoc.command.workflowPath.SaveNewVersionCmd +>> target:com.engine.workplan.cmd.workplanBase.AddAndEditWorkPlanCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAddAndEditWorkPlanCmd +>> target:com.engine.workflow.cmd.requestForm.WFManager_SaveNewNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowWFManager_SaveNewNodeCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoEditWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveEditWFCmd +>> target:com.engine.workflow.cmd.requestLog.LoadRequestLogBaseInfoCmd +>> proxy:->com.engine.plugin.workflow.command.CustomLoadRequestLogBaseInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoRestoreDeleteNodeCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.node.RestoreOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.monitor.DoDeleteCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowDeleteProxyCmd +>> target:com.engine.meeting.cmd.meetingbase.MeetingCancelCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyCancelMeetingCmd +>> target:com.engine.odoc.cmd.updateSign.append.AppendSaveLogCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAppendSignCmd +>> target:com.api.prj.cmd.task.DoTaskOperationCmd +>> proxy:->com.customization.esb.proj.task.ProxyDoTaskOperationCmd +>> target:com.engine.workflow.cmd.requestForm.LoadParamCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.LoadOdocFormParam->com.engine.plugin.workflow.command.HaoQianPromptInfoCmd +>> target:com.engine.crm.cmd.contacter.EditCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyEditContacterCmd +>> target:com.engine.workflow.cmd.requestForm.ForwardSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForwardCmd +>> target:com.engine.workflow.cmd.requestForm.GetFormTabCmd +>> proxy:->com.engine.plugin.fna.command.FnaElectronicDepositFormTopTabCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowTabManagerCmd->com.engine.plugin.workflow.command.ContractLockFormTopTabCmd +>> target:com.engine.workflowDesign.cmd.DoSaveLayout +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocDoSaveLayoutCmd +2023-11-14 14:24:04,122 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - The business class dynamic proxy is loaded. +2023-11-14 14:26:44,457 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(SERVICE-METHOD) dynamic proxy... +2023-11-14 14:26:44,460 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workflow.service.impl.WorkflowTypeServiceImpl.doSaveOperation(java.util.Map,weaver.hrm.User) +>> proxy:->com.engine.plugin.workflow.service.CustomWorkflowTypeService->com.engine.plugin.workflow.service.CustomWorkflowTypeService2->com.engine.plugin.workflow.service.CustomWorkflowTypeService3->com.engine.plugin.workflow.service.CustomWorkflowTypeService4 +2023-11-14 14:26:44,461 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(COMMAND) dynamic proxy... +2023-11-14 14:26:44,466 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workplan.cmd.workplanBase.BeforeWorkplanDelCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyDeleteWorkPlanCmd +>> target:com.engine.workflow.cmd.signInput.GetNodeSignSetCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocSignInputSetCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeRightInfo +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeRightInfo +>> target:com.engine.workflow.cmd.requestForm.RequestSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestSubmitCmd->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRequestCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSubmitProxyCmd +>> target:com.engine.workflow.cmd.workflowPath.list.GetWorkflowListConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.list.GetAddOdocWFFormCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoSaveNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuDoSaveNodeCmd->com.engine.plugin.odoc.command.workflowPath.node.DeleteOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetAddInOperateConditionCmd +>> target:com.engine.crm.cmd.chance.FormUpdateCmd +>> proxy:->com.customization.esb.crm.chance.ProxyEditChanceCmd +>> target:com.engine.crm.cmd.customer.CustomerSaveCmd +>> proxy:->com.customization.esb.crm.customer.ProxyNewCustomerCmd +>> target:com.engine.workplan.cmd.workplanBase.AfterWorkplanNormalCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAfterWorkplanNormalCmd +>> target:com.engine.workflow.cmd.requestForm.BatchSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeBatchCmd +>> target:com.api.prj.cmd.prjBoard.DoDelBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoDelBoardStageCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.SaveNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.nodeLink.DeleteOdocNodelinkExtCmd +>> target:com.engine.cube.cmd.app.WaterMarkImg +>> proxy:->com.customization.cube.list.CustomChangeListHrefLinkCmd +>> target:com.engine.crm.cmd.customer.CustomerEditCmd +>> proxy:->com.customization.esb.crm.customer.ProxyEditCustomerCmd +>> target:com.engine.meeting.cmd.meetingbase.NewMeetingCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyNewMeetingCmd +>> target:com.engine.workflow.cmd.signInput.GetSignInputInfoCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestSignInput.OdocSignInputCmd +>> target:com.engine.cube.cmd.app.GetAppListCmd +>> proxy:->com.engine.plugin.mode.license.Proxy_GetAppListCmd +>> target:com.api.prj.cmd.project.DoProjectOperationCmd +>> proxy:->com.customization.esb.proj.project.ProxyDoProjectOperationCmd +>> target:com.engine.workflowDesign.cmd.WorkflowXmlParserCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicCmd +>> target:com.api.prj.cmd.project.DoPrjTempletStageSaveCmd +>> proxy:->com.customization.esb.proj.project.ProxySavePrjTempletStageCmd +>> target:com.engine.workflow.cmd.requestForm.DoTakEndCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSIgnReceiveTimeDoTakEndCmd +>> target:com.engine.crm.cmd.contacter.CreateCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyNewContacterCmd +>> target:com.engine.workflow.cmd.requestForm.GetRightMenuCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocRightMenuCmd->com.engine.plugin.odoc.command.odoRightMenuSetForm.OdocRightMenuBtnCmd->com.engine.plugin.workflow.command.qiyuesuo.QYSRightMenuCmd +>> target:com.engine.workflowDesign.cmd.GetOperateDataCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicOperatorCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocSaveMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocSaveMenuSettingsCmd +>> target:com.engine.odoc.cmd.odocMenuOperate.doEndPersonTreatCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeEndTreatCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.GetBaseInfoConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.GetBaseInfoSettingCmd +>> target:com.engine.workflow.cmd.workflowPath.node.signSet.DoSignSetSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSignSetSaveCmd +>> target:com.engine.crm.cmd.chance.DeleteCmd +>> proxy:->com.customization.esb.crm.chance.ProxyDeleteChanceCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetMenuSettingsCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetActionSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetActionSettingsCmd +>> target:com.engine.odoc.cmd.odocrequest.FlowNextCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeFlowCmd +>> target:com.engine.workflow.cmd.workflowType.DoSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSave2Cmd->com.engine.plugin.workflow.command.CustomDoSave3Cmd->com.engine.plugin.workflow.command.CustomDoSaveCmd +>> target:com.engine.workflowDesign.cmd.GetWfInfoCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetWfInfoCmd->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetWfInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeSessionkeyCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuCmd +>> target:com.engine.crm.cmd.contacter.DeleteCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyDeleteContacterCmd +>> target:com.engine.odoc.cmd.odocrequest.ForceArchiveCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForceArchiveCmd +>> target:com.engine.meeting.cmd.meetingField.GetViewMeetingFieldCmd +>> proxy:->com.customization.meeting.qc854537.CustomGetViewMeetingFieldCmd +>> target:com.api.common.cmd.login.DoUserSessionCmd +>> proxy:->com.engine.plugin.hrm.command.MyDoUserSessionCmd +>> target:com.engine.hrm.cmd.test.GetSearchConditionCmd +>> proxy:->com.engine.plugin.hrm.command.GetMySearchConditionCmd +>> target:com.engine.crm.cmd.chance.FormSaveCmd +>> proxy:->com.customization.esb.crm.chance.ProxyNewChanceCmd +>> target:com.engine.crm.cmd.customer.CrmDeleteCmd +>> proxy:->com.customization.esb.crm.customer.ProxyDeleteCustomerCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetPreAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetPreAddInOperateConditionCmd +>> target:com.api.prj.cmd.prjBoard.DoEditBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoEditBoardStageCmd +>> target:com.engine.odoc.cmd.updateSign.setting.SelectFreeFlowDatasCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowIsFree4OdocProxyCmd +>> target:com.engine.odoc.cmd.updateOperator.PlusSignatureCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAddDelCmd +>> target:com.api.prj.cmd.prjBoard.DoAddBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoAddBoardStageCmd +>> target:com.engine.workflow.cmd.requestForm.RequestManager_FlowNextNodeCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestNextNodeCmd +>> target:com.engine.odoc.cmd.odocWorkflow.OdocAddWorkflowCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignAddWorkflowCmd +>> target:com.engine.workflow.cmd.requestForm.RemarkSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRemarkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoAddWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveAddWFCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.GetNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeLinkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoSaveNewVersionCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSaveNewVersionTabCmd->com.engine.plugin.odoc.command.workflowPath.SaveNewVersionCmd +>> target:com.engine.workplan.cmd.workplanBase.AddAndEditWorkPlanCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAddAndEditWorkPlanCmd +>> target:com.engine.workflow.cmd.requestForm.WFManager_SaveNewNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowWFManager_SaveNewNodeCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoEditWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveEditWFCmd +>> target:com.engine.workflow.cmd.requestLog.LoadRequestLogBaseInfoCmd +>> proxy:->com.engine.plugin.workflow.command.CustomLoadRequestLogBaseInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoRestoreDeleteNodeCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.node.RestoreOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.monitor.DoDeleteCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowDeleteProxyCmd +>> target:com.engine.meeting.cmd.meetingbase.MeetingCancelCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyCancelMeetingCmd +>> target:com.engine.odoc.cmd.updateSign.append.AppendSaveLogCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAppendSignCmd +>> target:com.api.prj.cmd.task.DoTaskOperationCmd +>> proxy:->com.customization.esb.proj.task.ProxyDoTaskOperationCmd +>> target:com.engine.workflow.cmd.requestForm.LoadParamCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.LoadOdocFormParam->com.engine.plugin.workflow.command.HaoQianPromptInfoCmd +>> target:com.engine.crm.cmd.contacter.EditCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyEditContacterCmd +>> target:com.engine.workflow.cmd.requestForm.ForwardSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForwardCmd +>> target:com.engine.workflow.cmd.requestForm.GetFormTabCmd +>> proxy:->com.engine.plugin.fna.command.FnaElectronicDepositFormTopTabCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowTabManagerCmd->com.engine.plugin.workflow.command.ContractLockFormTopTabCmd +>> target:com.engine.workflowDesign.cmd.DoSaveLayout +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocDoSaveLayoutCmd +2023-11-14 14:26:44,466 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - The business class dynamic proxy is loaded. +2023-11-14 14:27:56,979 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:46:05,762 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:48:48,000 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:49:43,965 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:50:12,299 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:53:06,688 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:53:41,433 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 14:55:13,333 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}]] +2023-11-14 15:01:16,977 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:01:54,174 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:04:48,162 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:05:07,455 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=00:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:05:35,975 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:06:51,375 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=00:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:07:04,514 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:07:15,534 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:10:09,112 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:10:55,427 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:12:35,329 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:14:48,449 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:22:21,982 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:22:52,639 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:24:03,543 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:25:56,754 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 15:26:54,653 [main] [com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd] [INFO] - needGetDate : [2023-11-12],resultList : [[{signtime=01:20:00, id=48, userid=53, signdate=2023-11-12}, {signtime=09:15:00, id=48, userid=53, signdate=2023-11-12}, {signtime=12:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=18:17:00, id=49, userid=53, signdate=2023-11-12}, {signtime=01:17:00, id=49, userid=53, signdate=2023-11-13}]] +2023-11-14 18:08:42,728 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(SERVICE-METHOD) dynamic proxy... +2023-11-14 18:08:42,730 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workflow.service.impl.WorkflowTypeServiceImpl.doSaveOperation(java.util.Map,weaver.hrm.User) +>> proxy:->com.engine.plugin.workflow.service.CustomWorkflowTypeService->com.engine.plugin.workflow.service.CustomWorkflowTypeService2->com.engine.plugin.workflow.service.CustomWorkflowTypeService3->com.engine.plugin.workflow.service.CustomWorkflowTypeService4 +2023-11-14 18:08:42,730 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(COMMAND) dynamic proxy... +2023-11-14 18:08:42,730 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - +>> target:com.engine.workplan.cmd.workplanBase.BeforeWorkplanDelCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyDeleteWorkPlanCmd +>> target:com.engine.workflow.cmd.signInput.GetNodeSignSetCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocSignInputSetCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeRightInfo +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeRightInfo +>> target:com.engine.workflow.cmd.requestForm.RequestSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestSubmitCmd->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRequestCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSubmitProxyCmd +>> target:com.engine.workflow.cmd.workflowPath.list.GetWorkflowListConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.list.GetAddOdocWFFormCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoSaveNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuDoSaveNodeCmd->com.engine.plugin.odoc.command.workflowPath.node.DeleteOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetAddInOperateConditionCmd +>> target:com.engine.crm.cmd.chance.FormUpdateCmd +>> proxy:->com.customization.esb.crm.chance.ProxyEditChanceCmd +>> target:com.engine.crm.cmd.customer.CustomerSaveCmd +>> proxy:->com.customization.esb.crm.customer.ProxyNewCustomerCmd +>> target:com.engine.workplan.cmd.workplanBase.AfterWorkplanNormalCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAfterWorkplanNormalCmd +>> target:com.engine.workflow.cmd.requestForm.BatchSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeBatchCmd +>> target:com.api.prj.cmd.prjBoard.DoDelBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoDelBoardStageCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.SaveNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.nodeLink.DeleteOdocNodelinkExtCmd +>> target:com.engine.cube.cmd.app.WaterMarkImg +>> proxy:->com.customization.cube.list.CustomChangeListHrefLinkCmd +>> target:com.engine.crm.cmd.customer.CustomerEditCmd +>> proxy:->com.customization.esb.crm.customer.ProxyEditCustomerCmd +>> target:com.engine.meeting.cmd.meetingbase.NewMeetingCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyNewMeetingCmd +>> target:com.engine.workflow.cmd.signInput.GetSignInputInfoCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestSignInput.OdocSignInputCmd +>> target:com.engine.cube.cmd.app.GetAppListCmd +>> proxy:->com.engine.plugin.mode.license.Proxy_GetAppListCmd +>> target:com.api.prj.cmd.project.DoProjectOperationCmd +>> proxy:->com.customization.esb.proj.project.ProxyDoProjectOperationCmd +>> target:com.engine.workflowDesign.cmd.WorkflowXmlParserCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicCmd +>> target:com.api.prj.cmd.project.DoPrjTempletStageSaveCmd +>> proxy:->com.customization.esb.proj.project.ProxySavePrjTempletStageCmd +>> target:com.engine.workflow.cmd.requestForm.DoTakEndCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSIgnReceiveTimeDoTakEndCmd +>> target:com.engine.crm.cmd.contacter.CreateCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyNewContacterCmd +>> target:com.engine.workflow.cmd.requestForm.GetRightMenuCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.GetOdocRightMenuCmd->com.engine.plugin.odoc.command.odoRightMenuSetForm.OdocRightMenuBtnCmd->com.engine.plugin.workflow.command.qiyuesuo.QYSRightMenuCmd +>> target:com.engine.workflowDesign.cmd.GetOperateDataCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestPic.OdocRequestPicOperatorCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocSaveMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocSaveMenuSettingsCmd +>> target:com.engine.odoc.cmd.odocMenuOperate.doEndPersonTreatCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeEndTreatCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.GetBaseInfoConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.GetBaseInfoSettingCmd +>> target:com.engine.workflow.cmd.workflowPath.node.signSet.DoSignSetSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSignSetSaveCmd +>> target:com.engine.crm.cmd.chance.DeleteCmd +>> proxy:->com.customization.esb.crm.chance.ProxyDeleteChanceCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetMenuSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetMenuSettingsCmd +>> target:com.engine.odoc.cmd.officialSettings.createDocByWf.OdocGetActionSettingsCmd +>> proxy:->com.engine.plugin.odoc.command.odocSetting.Proxy_OdocGetActionSettingsCmd +>> target:com.engine.odoc.cmd.odocrequest.FlowNextCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeFlowCmd +>> target:com.engine.workflow.cmd.workflowType.DoSaveCmd +>> proxy:->com.engine.plugin.workflow.command.CustomDoSave2Cmd->com.engine.plugin.workflow.command.CustomDoSave3Cmd->com.engine.plugin.workflow.command.CustomDoSaveCmd +>> target:com.engine.workflowDesign.cmd.GetWfInfoCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetWfInfoCmd->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetWfInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.GetNodeSessionkeyCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowRightMenuCmd +>> target:com.engine.crm.cmd.contacter.DeleteCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyDeleteContacterCmd +>> target:com.engine.odoc.cmd.odocrequest.ForceArchiveCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForceArchiveCmd +>> target:com.engine.meeting.cmd.meetingField.GetViewMeetingFieldCmd +>> proxy:->com.customization.meeting.qc854537.CustomGetViewMeetingFieldCmd +>> target:com.api.common.cmd.login.DoUserSessionCmd +>> proxy:->com.engine.plugin.hrm.command.MyDoUserSessionCmd +>> target:com.engine.hrm.cmd.test.GetSearchConditionCmd +>> proxy:->com.engine.plugin.hrm.command.GetMySearchConditionCmd +>> target:com.engine.crm.cmd.chance.FormSaveCmd +>> proxy:->com.customization.esb.crm.chance.ProxyNewChanceCmd +>> target:com.engine.crm.cmd.customer.CrmDeleteCmd +>> proxy:->com.customization.esb.crm.customer.ProxyDeleteCustomerCmd +>> target:com.engine.workflow.cmd.workflowPath.node.addInOperate.GetPreAddInOperateConditionCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPathNodeInfo.OdocGetPreAddInOperateConditionCmd +>> target:com.api.prj.cmd.prjBoard.DoEditBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoEditBoardStageCmd +>> target:com.engine.odoc.cmd.updateSign.setting.SelectFreeFlowDatasCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowIsFree4OdocProxyCmd +>> target:com.engine.odoc.cmd.updateOperator.PlusSignatureCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAddDelCmd +>> target:com.api.prj.cmd.prjBoard.DoAddBoardStageCmd +>> proxy:->com.customization.esb.proj.prjboard.ProxyDoAddBoardStageCmd +>> target:com.engine.workflow.cmd.requestForm.RequestManager_FlowNextNodeCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.OdocRequestNextNodeCmd +>> target:com.engine.odoc.cmd.odocWorkflow.OdocAddWorkflowCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignAddWorkflowCmd +>> target:com.engine.workflow.cmd.requestForm.RemarkSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeRemarkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoAddWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveAddWFCmd +>> target:com.engine.workflow.cmd.workflowPath.nodeLink.GetNodeLinkCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowGetNodeLinkCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoSaveNewVersionCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowSaveNewVersionTabCmd->com.engine.plugin.odoc.command.workflowPath.SaveNewVersionCmd +>> target:com.engine.workplan.cmd.workplanBase.AddAndEditWorkPlanCmd +>> proxy:->com.customization.esb.workplan.workplanbase.ProxyAddAndEditWorkPlanCmd +>> target:com.engine.workflow.cmd.requestForm.WFManager_SaveNewNodeCmd +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocWorkflowWFManager_SaveNewNodeCmd +>> target:com.engine.workflow.cmd.workflowPath.baseInfo.DoEditWFCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.SaveEditWFCmd +>> target:com.engine.workflow.cmd.requestLog.LoadRequestLogBaseInfoCmd +>> proxy:->com.engine.plugin.workflow.command.CustomLoadRequestLogBaseInfoCmd +>> target:com.engine.workflow.cmd.workflowPath.node.DoRestoreDeleteNodeCmd +>> proxy:->com.engine.plugin.odoc.command.workflowPath.node.RestoreOdocNodeCfgCmd +>> target:com.engine.workflow.cmd.monitor.DoDeleteCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocWorkflowDeleteProxyCmd +>> target:com.engine.meeting.cmd.meetingbase.MeetingCancelCmd +>> proxy:->com.customization.esb.meeting.meetingbase.ProxyCancelMeetingCmd +>> target:com.engine.odoc.cmd.updateSign.append.AppendSaveLogCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeAppendSignCmd +>> target:com.api.prj.cmd.task.DoTaskOperationCmd +>> proxy:->com.customization.esb.proj.task.ProxyDoTaskOperationCmd +>> target:com.engine.workflow.cmd.requestForm.LoadParamCmd +>> proxy:->com.engine.plugin.odoc.command.odocRequestForm.LoadOdocFormParam->com.engine.plugin.workflow.command.HaoQianPromptInfoCmd +>> target:com.engine.crm.cmd.contacter.EditCmd +>> proxy:->com.customization.esb.crm.contacter.ProxyEditContacterCmd +>> target:com.engine.workflow.cmd.requestForm.ForwardSubmitCmd +>> proxy:->com.engine.plugin.odoc.command.signSetting.OdocSignReceiveTimeForwardCmd +>> target:com.engine.workflow.cmd.requestForm.GetFormTabCmd +>> proxy:->com.engine.plugin.fna.command.FnaElectronicDepositFormTopTabCmd->com.engine.plugin.odoc.command.signSetting.OdocWorkflowTabManagerCmd->com.engine.plugin.workflow.command.ContractLockFormTopTabCmd +>> target:com.engine.workflowDesign.cmd.DoSaveLayout +>> proxy:->com.engine.plugin.odoc.command.rightMenuSetting.OdocDoSaveLayoutCmd +2023-11-14 18:08:42,731 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - The business class dynamic proxy is loaded. +2023-11-14 20:42:22,086 [Timer-0] [A2] [INFO] - rootPath == null +2023-11-14 20:42:22,088 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index a81f53d1d2c3494c659f3a9212c3bfed52718695..82da355aca6407a35cdc92fb29cea3c07f8869f7 100644 GIT binary patch delta 115980 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
J$aWH#0$?ehD1Yvwg*ho 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�o4J>EW1>Q>i{)0`HY+8Va#5sM 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

Tr-N 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 delta 56079 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

EI~yiMZ{E_kgS9D_>l@$<~O>j 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

*QDXEB8OX0z0nLNyqZ67Gjb~f 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 diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java index 973a4c9..3385b97 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/GetClockInTimeItemCmd.java @@ -184,7 +184,7 @@ public class GetClockInTimeItemCmd extends AbstractCommonCommand "1".equals(Util.null2String(e.get("ksdk")))).collect(Collectors.toList()); + needGetDateScheduling = needGetDateScheduling.stream().filter(e -> "1".equals(Util.null2String(e.get("jsdk")))).collect(Collectors.toList()); Map endNeedGetDateSchedule = needGetDateScheduling.get(needGetDateScheduling.size()-1); //判断最晚打卡时间是否跨天 String nowkssj = needGetDate +" "+Util.null2String(endNeedGetDateSchedule.get("dtkssj")); @@ -255,7 +255,7 @@ public class GetClockInTimeItemCmd extends AbstractCommonCommand> computeEndTimeAdd(List> afterNeedGetDateList, List> needGetDateScheduling,List> needGetDateList,String needGetDate){ - needGetDateScheduling = needGetDateScheduling.stream().filter(e -> "1".equals(Util.null2String(e.get("ksdk")))).collect(Collectors.toList()); + needGetDateScheduling = needGetDateScheduling.stream().filter(e -> "1".equals(Util.null2String(e.get("jsdk")))).collect(Collectors.toList()); Map endNeedGetDateSchedule = needGetDateScheduling.get(needGetDateScheduling.size()-1); //判断最晚打卡时间是否跨天 String kssj = needGetDate +" "+Util.null2String(endNeedGetDateSchedule.get("dtkssj")); @@ -316,6 +316,7 @@ public class GetClockInTimeItemCmd extends AbstractCommonCommand resultMap = resultList.stream().min(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).get(); diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java index 2cfeb2d..8828424 100644 --- a/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java +++ b/src/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.java @@ -3,14 +3,17 @@ package com.engine.attendance.attendanceanalysis.cmd; import com.engine.attendance.enums.SystemItemEnum; import com.engine.common.biz.AbstractCommonCommand; 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.Maps; +import com.icbc.api.internal.apache.http.impl.cookie.S; import weaver.conn.RecordSet; import weaver.general.Util; import java.util.List; import java.util.Map; +import java.util.UUID; /** * 更新人员当天出勤结果 @@ -33,29 +36,31 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand resultMap = Maps.newHashMap(); RecordSet rs = new RecordSet(); + List> classInfo = (List>)params.get("classInfo"); + + String sql = "select ygid,rq,bc,xm1,xm2,xm3,xm4,xm5,xm6,xm7,xm8,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=?"; + List> dataList = DbTools.getSqlToList(sql,userId,date); //班次信息 if (params.get("classInfo") == null){ //当天没有排班,计入异常 - noScheduling(params,rs); + noScheduling(params,rs,dataList); return resultMap; } - List> classInfo = (List>)params.get("classInfo"); - - String sql = "select ygid,rq,bc,xm1,xm2,xm3,xm4,xm5,xm6,xm7,xm8,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=?"; - List> dataList = DbTools.getSqlToList(sql,userId,date); if (dataList.size() >0){ //有出勤结果 int index = 0; int i = 0; while (index==0){ i++; - if (dataList.get(0).get("xm"+i) != null || !"".equals(dataList.get(0).get("xm"+i))){ + if (dataList.get(0).get("xm"+i) == null || "".equals(dataList.get(0).get("xm"+i))){ index = i; + break; } } sql = "update uf_jcl_kq_cqjg set xm"+index+"=?,sc"+index+"=? where ygid=? and rq=?"; @@ -65,9 +70,9 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand> userList = DbTools.getSqlToList(sql,userId); - sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,bc,bcbdxx,cqzt,cqsc,xm1,sc1) values (?,?,?,?,?,?,?,?,?,?,?,?)"; + sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,bc,bcbdxx,cqzt,cqsc,xm1,sc1,sjzt,fxrq,formmodeid,modeuuid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime) 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,classInfo.get(0).get("bcxx"),classInfo.get(0).get("bcsdxx"),1,0,item,itemduration); + userList.get(0).get("jobtitle"),date,classInfo.get(0).get("bcxx"),classInfo.get(0).get("bcsdxx"),1,0,item,itemduration,1, DateUtil.getCurrentDate(),formmodeid, UUID.randomUUID().toString(),1,0,DateUtil.getCurrentDate(),DateUtil.getCurrentTime().split(" ")[1]); } @@ -79,15 +84,21 @@ public class UpdateAttendanceResultsCmd extends AbstractCommonCommand params, RecordSet rs){ + public void noScheduling(Map params, RecordSet rs,List> dataList){ String userId = Util.null2String(params.get("userId")); String date = Util.null2String(params.get("date")); + String formmodeid = Util.null2String(params.get("modeId")); String sql = "select subcompanyid1,departmentid,jobtitle from hrmresource where id=?"; List> userList = DbTools.getSqlToList(sql,userId); - sql = "insert into uf_jcl_kq_cqjg (szjg,ygid,fbid,bm,zw,rq,xm1,cqzt) 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); + if (dataList.size() >0){ + sql = "update uf_jcl_kq_cqjg set xm1=?,cqzt=1,cqsc=0,sjzt=1 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + 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]); + } } } diff --git a/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java index c066bd2..83b7502 100644 --- a/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java +++ b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java @@ -18,7 +18,10 @@ import java.util.stream.Collectors; @Slf4j public class AttendanceAnalysisJob extends BaseCronJob { - + /** + * 出勤结果模块id + */ + private String modeId; private AttendanceAnalysisWrapper attendanceAnalysisService = ServiceUtil.getService(AttendanceAnalysisWrapper.class); @Override @@ -32,7 +35,7 @@ public class AttendanceAnalysisJob extends BaseCronJob { Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); collect.entrySet().forEach(e -> { - attendanceAnalysisService.attendanceAnalysis(e.getKey(),e.getValue()); + attendanceAnalysisService.attendanceAnalysis(e.getKey(),e.getValue(),modeId); }); log.info("********AttendanceAnalysisJob end********"); } diff --git a/src/com/engine/attendance/attendanceanalysis/service/AbnormalAttendanceService.java b/src/com/engine/attendance/attendanceanalysis/service/AbnormalAttendanceService.java index 3b10e11..a2b4fb7 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/AbnormalAttendanceService.java +++ b/src/com/engine/attendance/attendanceanalysis/service/AbnormalAttendanceService.java @@ -1,5 +1,6 @@ package com.engine.attendance.attendanceanalysis.service; +import java.util.List; import java.util.Map; /** @@ -18,12 +19,12 @@ public interface AbnormalAttendanceService { * @param params * @return */ - boolean beLate(Map params); + List> beLate(Map params); /** * 早退 * @param params * @return */ - boolean leaveEarly(Map params); + List> leaveEarly(Map params); } diff --git a/src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java b/src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java new file mode 100644 index 0000000..ae09281 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.java @@ -0,0 +1,25 @@ +package com.engine.attendance.attendanceanalysis.service; + +import java.util.List; +import java.util.Map; + +public interface AskForLeaveService { + /** + * 根据时间请假 + * @return + */ + List> askForLeaveByTime(Map param); + + /** + * 根据时长请假 + * @return + */ + List> askForLeaveByDurationTime(Map param); + + /** + * 根据半天请假 + * @param param + * @return + */ + boolean askForLeaveByHalfDay(Map param); +} diff --git a/src/com/engine/attendance/attendanceanalysis/service/EvectionService.java b/src/com/engine/attendance/attendanceanalysis/service/EvectionService.java new file mode 100644 index 0000000..3297fe1 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/service/EvectionService.java @@ -0,0 +1,25 @@ +package com.engine.attendance.attendanceanalysis.service; + +import java.util.List; +import java.util.Map; + +public interface EvectionService { + /** + * 根据时间出差 + * @return + */ + List> evectionByTime(Map param); + + /** + * 根据时长出差 + * @return + */ + List> evectionByDurationTime(Map param); + + /** + * 根据半天出差 + * @param param + * @return + */ + List> evectionByHalfDay(Map param); +} diff --git a/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java b/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java index c4b6aa0..6de95d1 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java +++ b/src/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.java @@ -9,14 +9,13 @@ import java.util.Map; public interface ForgetClockInService { /** * 全天未打卡 - * @param params * @return */ - boolean forgetClockInAllDays(Map params); + List> forgetClockInAllDays(); /** * 漏打卡 * @param params * @return */ - boolean forgetClockIn(Map params); + List> forgetClockIn(Map params); } diff --git a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java index cb9b93c..7fdd32d 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java +++ b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java @@ -21,4 +21,11 @@ public interface UtilService { * @return */ List> getClockInTime(Map params); + + /** + * 记录考勤项目 + * @param params + */ + void recordItem(Map params); + } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java index 2636935..f90b97d 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.java @@ -1,7 +1,6 @@ package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.cmd.item.*; -import com.engine.attendance.attendanceanalysis.cmd.UpdateAttendanceResultsCmd; import com.engine.attendance.attendanceanalysis.service.AbnormalAttendanceService; import com.engine.attendance.enums.AccountingUnitEnum; import com.engine.attendance.enums.ClassSegmentTypeEnum; @@ -25,7 +24,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt } @Override - public boolean beLate(Map params) { + public List> beLate(Map params) { //当前单条明细班次 Map classInfo = (Map)params.get("classInfo"); //当前单个打卡数据 @@ -38,6 +37,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt String analysisDate = Util.null2String(params.get("analysisDate")); //人员 String userId = Util.null2String(params.get("userId")); + List> resultList = Lists.newArrayList(); String clockInTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime"); String classStartTime = analysisDate +" "+Util.null2String(classInfo.get("dtkssj")); @@ -48,7 +48,6 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt lateParams.put("time",between); lateParams.put("rqlx",classInfo.get("rqlx")); - boolean ifBeLate = false; if (ClassSegmentTypeEnum.WORK_TIME.getKey().equals(bdlx)){ //工作时段 @@ -63,14 +62,18 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt double hsl = Float.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl"))); String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw")); double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",workTimeBeLateItems.get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifBeLate=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifBeLate=true; } }else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx) @@ -92,14 +95,18 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt if (!"".equals(jbwdhlfzs) && between > Integer.valueOf(jbwdhlfzs)){ Map saveWorkTimeBeLateParam = Maps.newHashMap(); double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",getBeLateItems(lateParams).get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifBeLate=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifBeLate=true; } } @@ -120,22 +127,26 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt if (!"".equals(thfghlfzs) && between> Integer.valueOf(thfghlfzs)){ double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); Map saveWorkTimeBeLateParam = Maps.newHashMap(); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",getBeLateItems(lateParams).get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifBeLate=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifBeLate=true; } } - return ifBeLate; + return resultList; } @Override - public boolean leaveEarly(Map params) { + public List> leaveEarly(Map params) { //当前单条明细班次 Map classInfo = (Map)params.get("classInfo"); //当前单个打卡数据 @@ -148,6 +159,7 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt String analysisDate = Util.null2String(params.get("analysisDate")); //人员 String userId = Util.null2String(params.get("userId")); + List> resultList = Lists.newArrayList(); String clockInTime = clcokInTimeData.get("signdate")+" "+clcokInTimeData.get("signtime"); String dtkssj = analysisDate+" "+classInfo.get("dtkssj"); @@ -178,14 +190,18 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt double hsl = Float.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl"))); String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw")); double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifLeaveEarly=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifLeaveEarly=true; } }else if (ClassSegmentTypeEnum.EXTENDED_OVERTIME.getKey().equals(bdlx) || ClassSegmentTypeEnum.EARLY_OVERTIME.getKey().equals(bdlx) @@ -209,14 +225,18 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifLeaveEarly=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifLeaveEarly=true; } } @@ -237,18 +257,22 @@ public class AbnormalAttendanceServiceImpl extends Service implements AbnormalAt if (!"".equals(tqlghlfzs) && between> Integer.valueOf(tqlghlfzs)){ double itemduration = Utils.getItemduration(hsl,hsdw,between,AccountingUnitEnum.MINUTES); Map saveWorkTimeBeLateParam = Maps.newHashMap(); - saveWorkTimeBeLateParam.put("userId",userId); - saveWorkTimeBeLateParam.put("date",analysisDate); +// saveWorkTimeBeLateParam.put("userId",userId); +// saveWorkTimeBeLateParam.put("date",analysisDate); saveWorkTimeBeLateParam.put("item",getBeEarlyItems(earlyParams).get(0).get("key")); saveWorkTimeBeLateParam.put("itemduration",itemduration); - saveWorkTimeBeLateParam.put("classInfo", Lists.newArrayList().add(classInfo)); - saveWorkTimeBeLateParam.put("cqzt","1"); - commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); - ifLeaveEarly=true; + saveWorkTimeBeLateParam.put("betweenMinutes",between); + resultList.add(saveWorkTimeBeLateParam); +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add(classInfo); +// saveWorkTimeBeLateParam.put("classInfo", classInfoList); +// saveWorkTimeBeLateParam.put("cqzt","1"); +// commandExecutor.execute(new UpdateAttendanceResultsCmd(saveWorkTimeBeLateParam)); +// ifLeaveEarly=true; } } - return ifLeaveEarly; + return resultList; } /** diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java new file mode 100644 index 0000000..be03fbf --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java @@ -0,0 +1,77 @@ +package com.engine.attendance.attendanceanalysis.service.impl; + +import c.e.c.d.b.c.e; +import com.engine.attendance.attendanceanalysis.service.AskForLeaveService; +import com.engine.attendance.enums.CheckBoxEnum; +import com.engine.common.util.DateUtil; +import com.engine.core.impl.Service; +import weaver.general.Util; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class AskForLeaveServiceImpl extends Service implements AskForLeaveService { + + @Override + public List> askForLeaveByTime(Map param) { + //人员迟到、早退、漏卡等记录 + List> abnormalClockInList = (List>)param.get("abnormalClockInList"); + //请假开始时间 + String kssj = Util.null2String(param.get("kssj")); + //请假结束时间 + String jssj = Util.null2String(param.get("jssj")); + + for (int i=0;i=0){ + abnormalClockInList.remove(i); + i--; + } + } + return abnormalClockInList; + } + + @Override + public boolean askForLeaveByHalfDay(Map param) { + return false; + } + + @Override + public List> askForLeaveByDurationTime(Map param) { + //人员迟到、早退、漏卡等记录 + List> abnormalClockInList = (List>)param.get("abnormalClockInList"); + List> forgetClockList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") == null).collect(Collectors.toList()); + abnormalClockInList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") != null).collect(Collectors.toList()); + abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->Integer.valueOf(e.get("betweenMinutes").toString()))).collect(Collectors.toList()); + + //请假时长,单位小时 + int qjsc = param.get("qjsc") == null?0:Double.valueOf(Double.valueOf(param.get("qjsc").toString())*60).intValue(); + //同一天可抵消多个异常 + String tybcndbjlhbjs = Util.null2String(param.get("tybcndbjlhbjs")); + if (CheckBoxEnum.CHECKED.equals(tybcndbjlhbjs)){ + for (int i=abnormalClockInList.size() -1;i>=0;i--){ + int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); + if (qjsc > time){ + qjsc = qjsc-time; + abnormalClockInList.remove(i); + i++; + } + } + }else{ + for (int i=abnormalClockInList.size() -1;i>=0;i--){ + int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); + if (qjsc > time){ + abnormalClockInList.remove(i); + break; + } + } + } + abnormalClockInList.addAll(forgetClockList); + + return abnormalClockInList; + } +} + diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java new file mode 100644 index 0000000..3754128 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java @@ -0,0 +1,74 @@ +package com.engine.attendance.attendanceanalysis.service.impl; + +import com.engine.attendance.attendanceanalysis.service.EvectionService; +import com.engine.attendance.enums.CheckBoxEnum; +import com.engine.common.util.DateUtil; +import com.engine.core.impl.Service; +import weaver.general.Util; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class EvectionServiceImpl extends Service implements EvectionService { + @Override + public List> evectionByTime(Map param) { + //人员迟到、早退、漏卡等记录 + List> abnormalClockInList = (List>)param.get("abnormalClockInList"); + //请假开始时间 + String kssj = Util.null2String(param.get("kssj")); + //请假结束时间 + String jssj = Util.null2String(param.get("jssj")); + + for (int i=0;i=0){ + abnormalClockInList.remove(i); + i--; + } + } + return abnormalClockInList; + } + + @Override + public List> evectionByDurationTime(Map param) { + //人员迟到、早退、漏卡等记录 + List> abnormalClockInList = (List>)param.get("abnormalClockInList"); + List> forgetClockList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") == null).collect(Collectors.toList()); + abnormalClockInList = abnormalClockInList.stream().filter(e -> e.get("betweenMinutes") != null).collect(Collectors.toList()); + abnormalClockInList = abnormalClockInList.stream().sorted(Comparator.comparing(e->Integer.valueOf(e.get("betweenMinutes").toString()))).collect(Collectors.toList()); + + //请假时长,单位小时 + int ccsc = param.get("ccsc") == null?0:Double.valueOf(Double.valueOf(param.get("ccsc").toString())*60).intValue(); + //同一天可抵消多个异常 + String tybcndbjlhbjs = Util.null2String(param.get("tybcndbjlhbjs")); + if (CheckBoxEnum.CHECKED.equals(tybcndbjlhbjs)){ + for (int i=abnormalClockInList.size() -1;i>=0;i--){ + int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); + if (ccsc > time){ + ccsc = ccsc-time; + abnormalClockInList.remove(i); + i++; + } + } + }else{ + for (int i=abnormalClockInList.size() -1;i>=0;i--){ + int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); + if (ccsc > time){ + abnormalClockInList.remove(i); + break; + } + } + } + abnormalClockInList.addAll(forgetClockList); + + return abnormalClockInList; + } + + @Override + public List> evectionByHalfDay(Map param) { + return null; + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java index b7ee49e..5e97ab0 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.java @@ -1,37 +1,46 @@ package com.engine.attendance.attendanceanalysis.service.impl; -import com.engine.attendance.attendanceanalysis.cmd.UpdateAttendanceResultsCmd; import com.engine.attendance.attendanceanalysis.service.ForgetClockInService; import com.engine.attendance.enums.SystemItemEnum; import com.engine.core.impl.Service; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import java.util.List; import java.util.Map; +@Slf4j public class ForgetClockInServiceImpl extends Service implements ForgetClockInService { @Override - public boolean forgetClockInAllDays(Map params) { + public List> forgetClockInAllDays() { Map forgetParam = Maps.newHashMap(); - forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN); + forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN.getKey()); forgetParam.put("itemduration", 1); - forgetParam.put("classInfo", params.get("classInfo")); - forgetParam.put("userId",params.get("userId")); - forgetParam.put("date",params.get("analysisDate")); - Map result = commandExecutor.execute(new UpdateAttendanceResultsCmd(forgetParam)); - return true; + List> resultList = Lists.newArrayList(); +// forgetParam.put("classInfo", params.get("classInfo")); +// forgetParam.put("userId",params.get("userId")); +// forgetParam.put("date",params.get("analysisDate")); +// forgetParam.put("modeId",params.get("modeId")); +// log.info("userId : {} ,analysisDate: {} forgetClockInAllDays"); + resultList.add(forgetParam); + return resultList; } @Override - public boolean forgetClockIn(Map params) { + public List> forgetClockIn(Map params) { + List> resultList = Lists.newArrayList(); Map forgetParam = Maps.newHashMap(); - forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN); + forgetParam.put("item", SystemItemEnum.MISSING_CLOCK_IN.getKey()); forgetParam.put("itemduration", 1); - forgetParam.put("classInfo", Lists.newArrayList().add(params.get("classInfo"))); - forgetParam.put("userId",params.get("userId")); - forgetParam.put("date",params.get("analysisDate")); - Map result = commandExecutor.execute(new UpdateAttendanceResultsCmd(forgetParam)); - return true; +// List> classInfoList = Lists.newArrayList(); +// classInfoList.add((Map)params.get("classInfo")); +// forgetParam.put("classInfo",classInfoList); +// forgetParam.put("userId",params.get("userId")); +// forgetParam.put("date",params.get("analysisDate")); +// Map result = commandExecutor.execute(new UpdateAttendanceResultsCmd(forgetParam)); + resultList.add(forgetParam); + return resultList; } } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java index db8351d..4a40add 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java @@ -6,9 +6,7 @@ import com.engine.attendance.attendanceplan.service.AttendancePlanService; import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.attendance.component.persongroup.service.SchedulingResultsService; import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl; -import com.engine.attendance.enums.AttendanceItemTypeEnum; -import com.engine.attendance.enums.ClassSegmentTypeEnum; -import com.engine.attendance.enums.WorkForTimeEnum; +import com.engine.attendance.enums.*; import com.engine.common.cmd.GetDateCmd; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; @@ -20,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; @Slf4j @@ -34,26 +33,38 @@ public class UtilServiceImpl extends Service implements UtilService { /** 班次信息*/ Map schedulingResultsMap = schedulingResultsService.queryDataTable(params); List> schedulingResultsList = (List>)schedulingResultsMap.get("data"); + 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()); - Map schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")), e->Util.null2String(e.get("bcrq"))+"-"+Util.null2String(e.get("rqlx")))); + // Map 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>> schedulingMap = schedulingResultsList.stream().collect(Collectors.groupingBy(e-> Util.null2String(e.get("bcxx")).split("-")[0])); + Map>> resultMap = Maps.newHashMap(); String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,b.zddxfz,b.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs 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 entry :schedulingMap.entrySet()){ + for (Map.Entry>> entry :schedulingMap.entrySet()){ bcxxIds +=entry.getKey() +","; } + if ("".equals(bcxxIds)){ + return resultMap; + } bcxxIds = bcxxIds.substring(0,bcxxIds.length()-1); sql = sql +bcxxIds+") order by b.kssj"; List> dataList = DbTools.getSqlToList(sql); Map>> dataMap = dataList.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("bcxx")))); - Map>> resultMap = Maps.newHashMap(); + dataMap.entrySet().forEach(e -> { - String bcrq = schedulingMap.get(e.getKey()).split("-")[0]; - String rqlx = schedulingMap.get(e.getKey()).split("-")[0]; - List> bcxxs = e.getValue(); - for (Map map:bcxxs){ - map.put("rqlx",rqlx); + List> schedulingList = schedulingMap.get(e.getKey()); + for (Map scheduling :schedulingList){ + String bcrq = Util.null2String(scheduling.get("bcrq")); + String rqlx = Util.null2String(scheduling.get("rqlx")); + List> bcxxs = e.getValue(); + for (Map map:bcxxs){ + map.put("rqlx",rqlx); + } + resultMap.put(bcrq,bcxxs); } - resultMap.put(bcrq,bcxxs); }); /** 加班计划*/ @@ -71,6 +82,7 @@ public class UtilServiceImpl extends Service implements UtilService { //日期集合 Map dateParam = Maps.newHashMap(); dateParam.put("nd",Util.null2String(params.get("startDate")).split("-")[0]); + dateParam.put("glpb",glpb); Map result = commandExecutor.execute(new GetDateCmd(dateParam)); List> List = (List>)result.get("data"); Map dateMap = List.stream().collect(Collectors.toMap(e->Util.null2String(e.get("rq")),e->Util.null2String(e.get("rqlx")))); @@ -158,5 +170,105 @@ public class UtilServiceImpl extends Service implements UtilService { return resultList; } + @Override + public void recordItem(Map params) { + // + String userId = Util.null2String(params.get("userId")); + //分析日期 + String analysisDate = Util.null2String(params.get("analysisDate")); + //数据集合 + List> recordDataList = (List>)params.get("recordData"); + //日期类型 + String rqlx = Util.null2String(params.get("rqlx")); + //班次 + List> classInfo = (List>)params.get("classInfo"); + + String formmodeid = Util.null2String(params.get("modeId")); + + String cqzt = Util.null2String(params.get("cqzt")); + 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> dataList = DbTools.getSqlToList(sql,userId,analysisDate); + if (dataList.size() >0){ + sql = "update uf_jcl_kq_cqjg set xm1=?,"; + for (int i =0;i> 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,"; + String value = "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"; + List insertDatas = Lists.newArrayList(); + insertDatas.add(userList.get(0).get("subcompanyid1")); + insertDatas.add(userId); + insertDatas.add(userList.get(0).get("subcompanyid1")); + insertDatas.add(userList.get(0).get("departmentid")); + insertDatas.add(userList.get(0).get("jobtitle")); + insertDatas.add(analysisDate); + insertDatas.add(classInfo.get(0).get("bcxx")); + insertDatas.add(classInfo.get(0).get("bcsdxx")); + insertDatas.add(cqzt); + insertDatas.add(classInfo.get(0).get("edsc")); + insertDatas.add(1); + insertDatas.add(analysisDate); + 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); + for (int i =0;i> dataList){ + public void attendanceAnalysis(String userId, List> dataList,String modeId){ + log.info("***********analysis userId:{} start***********",userId); + log.info("clockInTimeDate : [{}]",dataList); String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3); String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(2); String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); @@ -65,9 +65,9 @@ public class AttendanceAnalysisWrapper extends Service { classesParamMap.put("pblx","0"); classesParamMap.put("pbdx",userId); classesParamMap.put("current","1"); - classesParamMap.put("pageSize",1); + classesParamMap.put("pageSize",10); classesParamMap.put("recurrence",1); - Map>> schedulingResultsMap = utilService.getSchedulingInFormation(paramMap); + Map>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap); /**获得人员加班计划*/ String 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)"; @@ -83,17 +83,18 @@ public class AttendanceAnalysisWrapper extends Service { getClockTimeParam.put("clockInTimeCollect",collect); getClockTimeParam.put("schedulingResultCollect",schedulingResultsMap); //前一天打卡数据 + log.info("getClockTimeParam : [{}]",getClockTimeParam); List> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); log.info("beforeOneDayClockInTimeList : [{}]",beforeOneDayClockInTimeList); //分析前一天考勤 - analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems); + analysis(userId,beforeOneDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeOneDayDate),attendanceItems,modeId); getClockTimeParam.put("date",beforeTwoDayDate); //前第二天打卡数据 List> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam); log.info("beforeTwoDayClockInTimeList : [{}]",beforeTwoDayClockInTimeList); //分析前第二天考勤 - analysis(userId,beforeTwoDayDate,beforeOneDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems); + analysis(userId,beforeTwoDayDate,beforeTwoDayClockInTimeList,schedulingResultsMap.get(beforeTwoDayDate),attendanceItems,modeId); } @@ -106,51 +107,65 @@ public class AttendanceAnalysisWrapper extends Service { * @param scheduleResult 班次 * @param attendanceItems 考勤项目 */ - public void analysis(String userId,String analysisDate,List> clockInTimeList,List> scheduleResult,List> attendanceItems){ + public void analysis(String userId,String analysisDate,List> clockInTimeList,List> scheduleResult,List> attendanceItems,String modeId){ + Map recordParam = Maps.newHashMap(); + recordParam.put("userId",userId); + recordParam.put("analysisDate",analysisDate); + recordParam.put("classInfo",scheduleResult); + recordParam.put("modeId",modeId); + if (scheduleResult == null || scheduleResult.size() ==0){ - //没有排班 + //没有排班 + Map params = Maps.newHashMap(); + params.put("userId",userId); + params.put("analysisDate",analysisDate); + params.put("modeId",modeId); + updateAttendanceResultWrapper.recordNoClass(params); return; } + recordParam.put("rqlx",scheduleResult.get(0).get("rqlx")); List> needClockInSchedule = scheduleResult.stream().filter(e -> "1".equals(e.get("ksdk")) || "1".equals(e.get("jsdk"))).collect(Collectors.toList()); if(clockInTimeList == null || clockInTimeList.size() == 0){ if (needClockInSchedule.size() > 0){ //全天漏打卡 - Map recordAbnormalParam = Maps.newHashMap(); - recordAbnormalParam.put("analysisDate",analysisDate); - recordAbnormalParam.put("userId",userId); - recordAbnormalParam.put("classInfo",clockInTimeList); - forgetClockInService.forgetClockInAllDays(recordAbnormalParam); + recordParam.put("cqzt",0); + recordParam.put("recordData",forgetClockInService.forgetClockInAllDays()); + utilService.recordItem(recordParam); return; } } //请假记录 String sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry=? and b.ksrq=? and (b.cxqj=0 or b.cxqj is null)"; List> askForLeaveList = DbTools.getSqlToList(sql,userId,analysisDate); + log.info("askForLeaveList :{}",askForLeaveList); //考勤项目 Map> askForLeaveItems = Maps.newHashMap(); //出差记录 - sql = "select a.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where a.ccr=? and a.ksrq=? and (b.cxcc=0 or b.cxcc is null)"; + sql = "select b.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where b.ccr=? and b.ksrq=? and (b.cxcc=0 or b.cxcc is null)"; List> evectionList = DbTools.getSqlToList(sql,userId,analysisDate); + log.info("evectionList :{}",evectionList); //出差项目 Map> evectionItems = Maps.newHashMap(); - Map updateAttendacneParams = Maps.newHashMap(); - updateAttendacneParams.put("userId",userId); - updateAttendacneParams.put("date",analysisDate); - updateAttendacneParams.put("classInfo",scheduleResult); sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb from uf_jcl_kq_kqxm where id=?"; for (Map askForLeaveData : askForLeaveList){ + Map askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx")); //全天请假 - if (PeriodOfTime.ALLDAY.getKey().equals(askForLeaveData.get("cxjqj"))){ - updateAttendacneParams.put("item",askForLeaveData.get("jqlx")); - updateAttendacneParams.put("itemduration",scheduleResult.get(0).get("edsc")); - commandExecutor.execute(new UpdateAttendanceResultsCmd(updateAttendacneParams)); + if (CheckBoxEnum.CHECKED.getKey().equals(askForLeaveData.get("qtj"))){ + List> resultList = Lists.newArrayList(); + Map resultMap = Maps.newHashMap(); + resultMap.put("item",askForLeaveData.get("jqlx")); + resultMap.put("itemduration",askForLeaveItem.get("hsl")); + resultList.add(resultMap); + recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); + recordParam.put("recordData",resultList); + utilService.recordItem(recordParam); return; } - Map askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx")); + askForLeaveItems.put(askForLeaveData.get("jqlx").toString(),askForLeaveItem); Map askForLeaveMap = new HashMap(){{ put("bcxx",scheduleResult.get(0).get("bcxx")); @@ -175,13 +190,18 @@ public class AttendanceAnalysisWrapper extends Service { } for (Map evectionData :evectionList){ //全天出差 - if (PeriodOfTime.ALLDAY.getKey().equals(evectionData.get("ccsd"))) { - updateAttendacneParams.put("item", evectionData.get("cclx")); - updateAttendacneParams.put("itemduration", scheduleResult.get(0).get("edsc")); - commandExecutor.execute(new UpdateAttendanceResultsCmd(updateAttendacneParams)); + Map evectionItem = DbTools.getSqlToMap(sql,evectionData.get("cclx")); + if (CheckBoxEnum.CHECKED.getKey().equals(evectionData.get("qtcc"))) { + List> resultList = Lists.newArrayList(); + Map resultMap = Maps.newHashMap(); + resultMap.put("item", evectionData.get("cclx")); + resultMap.put("itemduration", evectionItem.get("hsl")); + resultList.add(resultMap); + recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); + recordParam.put("recordData",resultList); + utilService.recordItem(recordParam); return; } - Map evectionItem = DbTools.getSqlToMap(sql,evectionData.get("cclx")); evectionItems.put(evectionData.get("cclx").toString(),evectionItem); Map evectionMap = new HashMap(){{ put("bcxx",scheduleResult.get(0).get("bcxx")); @@ -206,6 +226,83 @@ public class AttendanceAnalysisWrapper extends Service { needClockInSchedule = needClockInSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); + List>> clcokInTimeData = getClockInPoint(analysisDate,needClockInSchedule,clockInTimeList); + + Map recordAbnormalParam = Maps.newHashMap(); + recordAbnormalParam.put("clcokInTimeList",clcokInTimeData); + recordAbnormalParam.put("attendanceItems",attendanceItems); + recordAbnormalParam.put("scheduleResult",scheduleResult); + recordAbnormalParam.put("analysisDate",analysisDate); + recordAbnormalParam.put("userId",userId); + recordAbnormalParam.put("rqlx",scheduleResult.get(0).get("rqlx")); + recordAbnormalParam.put("modeId",modeId); + + log.info("recordAbnormalParam clcokInTimeList:{},attendanceItems size :{},scheduleResult :{},analysisDate:[{}],userId:[{}],rqlx:[{}],modeId:[{}]",clcokInTimeData, + attendanceItems.size(),scheduleResult,analysisDate,userId,scheduleResult.get(0).get("rqlx"),modeId); + + /** + * 正常上下班入结果表 + */ +// + // List> normalList= updateAttendanceResultWrapper.recordNormal(recordAbnormalParam); + + /** + * 计算是否考勤异常,是否有早退、迟到、漏卡的情况 + * */ + List> abnormalClockInList = updateAttendanceResultWrapper.recordAbnormalClockIn(recordAbnormalParam); + + + /** + * 计算加班 + */ + boolean recordWorkOverTime= updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam); + + /** + * 请假 + */ + recordAbnormalParam.put("askForLeaveList",askForLeaveList); + recordAbnormalParam.put("askForLeaveItems",askForLeaveItems); + recordAbnormalParam.put("abnormalClockInList",abnormalClockInList); + Map vactionMap = updateAttendanceResultWrapper.recordAskForLeave(recordAbnormalParam); + abnormalClockInList = (List>)vactionMap.get("abnormalClockInList"); + List> vactionList = (List>)vactionMap.get("resultList"); + /** + * 出差、外出 + */ + recordAbnormalParam.put("evectionList",evectionList); + recordAbnormalParam.put("evectionItems",evectionItems); + recordAbnormalParam.put("abnormalClockInList",abnormalClockInList); + + Map recordEvection= updateAttendanceResultWrapper.recordEvection(recordAbnormalParam); + abnormalClockInList = (List>)recordEvection.get("abnormalClockInList"); + List> evectionResultList = (List>)recordEvection.get("resultList"); + + /** + * 入库 + */ + List> recordData = Lists.newArrayList(); + recordData.addAll(vactionList); + recordData.addAll(evectionResultList); + recordData.addAll(abnormalClockInList); + recordParam.put("recordData",recordData); + log.info("recordParam : {}",recordParam); + if (abnormalClockInList.size()>0){ + recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); + }else { + recordParam.put("cqzt",CheckBoxEnum.UNCHECKED.getKey()); + } + utilService.recordItem(recordParam); + } + + + /** + * 获取打卡卡点 + * @param analysisDate + * @param needClockInSchedule + * @param clockInTimeList + * @return + */ + public List>> getClockInPoint(String analysisDate,List> needClockInSchedule,List> clockInTimeList){ List>> clcokInTimeData = Lists.newArrayList(); for (Map needClockIn :needClockInSchedule){ @@ -306,38 +403,7 @@ public class AttendanceAnalysisWrapper extends Service { } } } - /** - * 计算是否考勤异常,是否有早退、迟到、漏卡的情况 - * */ - Map recordAbnormalParam = Maps.newHashMap(); - recordAbnormalParam.put("clcokInTimeList",clcokInTimeData); - recordAbnormalParam.put("attendanceItems",attendanceItems); - recordAbnormalParam.put("scheduleResult",scheduleResult); - recordAbnormalParam.put("analysisDate",analysisDate); - recordAbnormalParam.put("userId",userId); - log.info("recordAbnormalParam : [{}]",recordAbnormalParam); - boolean recordAbnormalBoolean= updateAttendanceResultWrapper.recordAbnormalClockIn(recordAbnormalParam); - - /** - * 计算加班 - */ - boolean recordWorkOverTime= updateAttendanceResultWrapper.recordWorkOverTime(recordAbnormalParam); - - /** - * 请假 - */ - recordAbnormalParam.put("askForLeaveList",askForLeaveList); - recordAbnormalParam.put("askForLeaveItems",askForLeaveItems); - boolean recordVaction= updateAttendanceResultWrapper.recordVaction(recordAbnormalParam); - /** - * 出差、外出 - */ - recordAbnormalParam.put("evectionList",evectionList); - recordAbnormalParam.put("evectionItems",evectionItems); - boolean recordAskForLeave= updateAttendanceResultWrapper.recordAskForLeave(recordAbnormalParam); - + return clcokInTimeData; } - - } diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java index 953d5ed..a6816bc 100644 --- a/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java @@ -1,28 +1,40 @@ package com.engine.attendance.attendanceanalysis.wrapper; +import com.engine.attendance.attendanceanalysis.cmd.UpdateAttendanceResultsCmd; import com.engine.attendance.attendanceanalysis.service.AbnormalAttendanceService; +import com.engine.attendance.attendanceanalysis.service.AskForLeaveService; +import com.engine.attendance.attendanceanalysis.service.EvectionService; import com.engine.attendance.attendanceanalysis.service.ForgetClockInService; import com.engine.attendance.attendanceanalysis.service.impl.AbnormalAttendanceServiceImpl; +import com.engine.attendance.attendanceanalysis.service.impl.AskForLeaveServiceImpl; +import com.engine.attendance.attendanceanalysis.service.impl.EvectionServiceImpl; import com.engine.attendance.attendanceanalysis.service.impl.ForgetClockInServiceImpl; -import com.engine.attendance.enums.ClassSegmentTypeEnum; -import com.engine.attendance.enums.ClockPointEnum; +import com.engine.attendance.enums.*; +import com.engine.common.util.DateUtil; import com.engine.common.util.ServiceUtil; +import com.engine.common.util.Utils; import com.engine.core.impl.Service; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; import weaver.general.Util; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +@Slf4j public class UpdateAttendanceResultWrapper extends Service { private AbnormalAttendanceService beLateService = ServiceUtil.getService(AbnormalAttendanceServiceImpl.class); private ForgetClockInService forgetClockInService = ServiceUtil.getService(ForgetClockInServiceImpl.class); + private AskForLeaveService askForLeaveService= ServiceUtil.getService(AskForLeaveServiceImpl.class); + private EvectionService evectionService= ServiceUtil.getService(EvectionServiceImpl.class); + /** * 记录异常打卡 * */ - public boolean recordAbnormalClockIn(Map params){ + public List> recordAbnormalClockIn(Map params){ //卡点 List>> clcokInTimeList = (List>>)params.get("clcokInTimeList"); //考勤项目 @@ -38,9 +50,8 @@ public class UpdateAttendanceResultWrapper extends Service { Map>> startScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtkssj").toString())); //以结束时间分割班次 Map>> endScheduleResult = scheduleResult.stream().collect(Collectors.groupingBy(e->e.get("dtjssj").toString())); - boolean iforgetClockIn = false; - boolean ifBeLate = false; - boolean ifLeaveEarly = false; + List> resultList = Lists.newArrayList(); + for (Map> clcokInTimeMap :clcokInTimeList){ //卡点 String point = ""; @@ -65,14 +76,18 @@ public class UpdateAttendanceResultWrapper extends Service { } if (ClockPointEnum.EMPTY.getKey().equals(timeType) || clcokInTimeData == null){ //漏卡 - Map beLateParams = Maps.newHashMap(); - beLateParams.put("classInfo",classInfo); - beLateParams.put("clcokInTimeData",clcokInTimeData); - beLateParams.put("attendanceItems",attendanceItems); - beLateParams.put("analysisDate",analysisDate); - beLateParams.put("userId",userId); - - iforgetClockIn = forgetClockInService.forgetClockIn(beLateParams); + Map missCardParams = Maps.newHashMap(); + missCardParams.put("classInfo",classInfo); + missCardParams.put("clcokInTimeData",clcokInTimeData); + missCardParams.put("attendanceItems",attendanceItems); + missCardParams.put("analysisDate",analysisDate); + missCardParams.put("userId",userId); + log.info("missCardParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData); + List> iforgetClockIn = forgetClockInService.forgetClockIn(missCardParams); + if (iforgetClockIn.size() >0){ + iforgetClockIn.get(0).put("pointTime",pointTime); + resultList.add(iforgetClockIn.get(0)); + } }else if (ClockPointEnum.START.getKey().equals(pointType) && ClockPointEnum.AFTER.getKey().equals(timeType)){ //迟到 @@ -82,9 +97,12 @@ public class UpdateAttendanceResultWrapper extends Service { beLateParams.put("attendanceItems",attendanceItems); beLateParams.put("analysisDate",analysisDate); beLateParams.put("userId",userId); - - ifBeLate = beLateService.beLate(beLateParams); - + log.info("beLateParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData); + List> ifBeLate = beLateService.beLate(beLateParams); + if (ifBeLate.size() > 0){ + ifBeLate.get(0).put("pointTime",pointTime); + resultList.add(ifBeLate.get(0)); + } }else if (ClockPointEnum.END.getKey().equals(pointType) && ClockPointEnum.BEFORE.getKey().equals(timeType)){ //早退 Map leaveEarlyParams = Maps.newHashMap(); @@ -93,21 +111,28 @@ public class UpdateAttendanceResultWrapper extends Service { leaveEarlyParams.put("attendanceItems",attendanceItems); leaveEarlyParams.put("analysisDate",analysisDate); leaveEarlyParams.put("userId",userId); - - ifLeaveEarly = beLateService.leaveEarly(leaveEarlyParams); + log.info("leaveEarlyParams classInfo: [{}],clcokInTimeData:[{}]",classInfo,clcokInTimeData); + List> ifLeaveEarly = beLateService.leaveEarly(leaveEarlyParams); + if (ifLeaveEarly.size() > 0){ + ifLeaveEarly.get(0).put("pointTime",pointTime); + resultList.add(ifLeaveEarly.get(0)); + } } } - if (iforgetClockIn || ifBeLate ||ifLeaveEarly){ - return true; - } - return false; +// if (iforgetClockIn || ifBeLate ||ifLeaveEarly){ +// return true; +// } + return resultList; } + /** + * 记录加班 + * @param params + * @return + */ public boolean recordWorkOverTime(Map params){ - //卡点 - List>> clcokInTimeList = (List>>)params.get("clcokInTimeList"); //考勤项目 List> attendanceItems = (List>)params.get("attendanceItems"); //排班 @@ -138,27 +163,80 @@ public class UpdateAttendanceResultWrapper extends Service { * @param params * @return */ - public boolean recordVaction(Map params){ - //卡点 - List>> clcokInTimeList = (List>>)params.get("clcokInTimeList"); + public Map recordAskForLeave(Map params){ //请假项目 Map> askForLeaveItems = (Map>)params.get("askForLeaveItems"); - //排班 - List> scheduleResult = (List>)params.get("scheduleResult"); //分析日期 String analysisDate = Util.null2String(params.get("analysisDate")); - //人员 - String userId = Util.null2String(params.get("userId")); - //请假 + //排班 + List> scheduleResult = (List>)params.get("scheduleResult"); + //请假记录 List> askForLeaveList = (List>)params.get("askForLeaveList"); + //异常记录 + List> abnormalClockInList = (List>)params.get("abnormalClockInList"); + + Map map = Maps.newHashMap(); + List> resultList = Lists.newArrayList(); for (int i=0;i resultMap = Maps.newHashMap(); + resultList.add(resultMap); + resultMap.put("item",askForLeaveList.get(i).get("jqlx")); String kssj = askForLeaveList.get(i).get("ksrq") + " "+askForLeaveList.get(i).get("kssj"); String jssj = askForLeaveList.get(i).get("jsrq")+ " "+askForLeaveList.get(i).get("jssj"); + //半天请假 + String btj = Util.null2String(askForLeaveList.get(i).get("btj")); + //请假时长 + String qjsc = Util.null2String(askForLeaveList.get(i).get("qjsc")); + //请假项目 Map askForLeaveItem = askForLeaveItems.get(askForLeaveList.get(i).get("jqlx")); + //自动移除时间区间内的非工作时长 + String zdycbcndfgzsd = Util.null2String(askForLeaveItem.get("zdycbcndfgzsd")); + //同一天可抵消多个异常 + String tybcndbjlhbjs = Util.null2String(askForLeaveItem.get("tybcndbjlhbjs")); + //核算量 + double hsl = Double.valueOf(Util.null2String(askForLeaveItem.get("hsl"))); + //核算单位 + String hsdw = Util.null2String(askForLeaveItem.get("hsdw")); + + Map param = Maps.newHashMap(); + param.put("abnormalClockInList",abnormalClockInList); + double itemduration = 0; + if ("".equals(Util.null2String(askForLeaveList.get(i).get("kssj"))) || "".equals(Util.null2String(askForLeaveList.get(i).get("jssj")))){ + //弹性请假,半天请假 + if (CheckBoxEnum.CHECKED.getKey().equals(btj)){ + //半天请假 + askForLeaveService.askForLeaveByHalfDay(param); + }else if (!"".equals(qjsc)){ + //时长请假 + itemduration = Utils.getItemduration(hsl,hsdw,Double.valueOf(Double.valueOf(qjsc)*60).intValue(),AccountingUnitEnum.MINUTES); + + resultMap.put("itemduration",itemduration); + param.put("qjsc",qjsc); + param.put("tybcndbjlhbjs",tybcndbjlhbjs); + if (abnormalClockInList.size()>0){ + abnormalClockInList =askForLeaveService.askForLeaveByDurationTime(param); + } + } + }else { + //按照开始时间,结束时间请假 + int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); + if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){ + timeMinutes = removeRestTime(kssj,jssj,scheduleResult,analysisDate); + } + itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES); + resultMap.put("itemduration",itemduration); + param.put("kssj",kssj); + param.put("jssj",jssj); + if (abnormalClockInList.size()>0){ + abnormalClockInList = askForLeaveService.askForLeaveByTime(param); + } + } } - return false; + map.put("resultList",resultList); + map.put("abnormalClockInList",abnormalClockInList); + return map; } /** @@ -166,18 +244,179 @@ public class UpdateAttendanceResultWrapper extends Service { * @param params * @return */ - public boolean recordAskForLeave(Map params){ - //卡点 - List>> clcokInTimeList = (List>>)params.get("clcokInTimeList"); + public Map recordEvection(Map params){ + //外出项目 Map> evectionItems = (Map>)params.get("evectionItems"); + //排班 + List> scheduleResult = (List>)params.get("scheduleResult"); + //分析日期 + String analysisDate = Util.null2String(params.get("analysisDate")); + //出差记录 + List> evectionList = (List>)params.get("evectionList"); + //异常记录 + List> abnormalClockInList = (List>)params.get("abnormalClockInList"); + + + Map map = Maps.newHashMap(); + List> resultList = Lists.newArrayList(); + + for (int i=0;i resultMap = Maps.newHashMap(); + resultList.add(resultMap); + resultMap.put("item",evectionList.get(i).get("cclx")); + String kssj = evectionList.get(i).get("ksrq") + " "+evectionList.get(i).get("kssj"); + String jssj = evectionList.get(i).get("jsrq")+ " "+evectionList.get(i).get("jssj"); + //半天请假 + String btj = Util.null2String(evectionList.get(i).get("btcc")); + //请假时长 + String qjsc = Util.null2String(evectionList.get(i).get("ccsc")); + //请假项目 + Map evectionItem = evectionItems.get(evectionList.get(i).get("cclx")); + //自动移除时间区间内的非工作时长 + String zdycbcndfgzsd = Util.null2String(evectionItem.get("zdycbcndfgzsd")); + //同一天可抵消多个异常 + String tybcndbjlhbjs = Util.null2String(evectionItem.get("tybcndbjlhbjs")); + //核算量 + double hsl = Double.valueOf(Util.null2String(evectionItem.get("hsl"))); + //核算单位 + String hsdw = Util.null2String(evectionItem.get("hsdw")); + + Map param = Maps.newHashMap(); + param.put("abnormalClockInList",abnormalClockInList); + + double itemduration = 0; + if ("".equals(Util.null2String(evectionList.get(i).get("kssj"))) || "".equals(Util.null2String(evectionList.get(i).get("jssj")))){ + //弹性请假,半天请假 + if (CheckBoxEnum.CHECKED.getKey().equals(btj)){ + //半天请假 + evectionService.evectionByHalfDay(param); + }else if (!"".equals(qjsc)){ + //时长请假 + itemduration = Utils.getItemduration(hsl,hsdw,Double.valueOf(Double.valueOf(qjsc)*60).intValue(),AccountingUnitEnum.MINUTES); + + resultMap.put("itemduration",itemduration); + param.put("ccsc",qjsc); + param.put("tybcndbjlhbjs",tybcndbjlhbjs); + if (abnormalClockInList.size()>0){ + abnormalClockInList =evectionService.evectionByDurationTime(param); + } + } + }else { + //按照开始时间,结束时间请假 + int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); + if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){ + timeMinutes = removeRestTime(kssj,jssj,scheduleResult,analysisDate); + } + itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES); + resultMap.put("itemduration",itemduration); + param.put("kssj",kssj); + param.put("jssj",jssj); + if (abnormalClockInList.size()>0){ + abnormalClockInList = evectionService.evectionByTime(param); + } + } + } + map.put("resultList",resultList); + map.put("abnormalClockInList",abnormalClockInList); + return map; + } + + /** + * 正常上下班,填写 + * @param params + * @return + */ + public List> recordNormal(Map params){ //排班 List> scheduleResult = (List>)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> resultList = Lists.newArrayList(); + + Map 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 + * @return + */ + public boolean recordNoClass(Map params){ + //分析日期 + String analysisDate = Util.null2String(params.get("analysisDate")); + //人员 + String userId = Util.null2String(params.get("userId")); + + Map normalParams = Maps.newHashMap(); + + normalParams.put("userId",userId); + normalParams.put("date",analysisDate); + normalParams.put("modeId",params.get("modeId")); + log.info("userId : {} ,analysisDate: {} have no class",userId,analysisDate); + commandExecutor.execute(new UpdateAttendanceResultsCmd(normalParams)); return false; } + + /** + * 请假、外出时间扣出休息时间 + * @param kssj 开始时间 + * @param jssj 结束时间 + * @param scheduleResult 班次 + * @return + */ + public int removeRestTime(String kssj,String jssj,List> scheduleResult,String analysisDate){ + scheduleResult = scheduleResult.stream().filter(e -> ClassSegmentTypeEnum.REST_AND_DINE.getKey().equals(e.get("bdlx")) || + ClassSegmentTypeEnum.REST_PERIOD.getKey().equals(e.get("bdlx")) || ClassSegmentTypeEnum.DINING_PERIOD.getKey().equals(e.get("bdlx"))).collect(Collectors.toList()); + int betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); + for (Map restSchedule :scheduleResult){ + String dtkssj = analysisDate+" "+restSchedule.get("dtkssj"); + String dtjssj = analysisDate+" "+restSchedule.get("dtjssj"); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ + dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+restSchedule.get("dtjssj"); + } + if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) >=0){ + //休息时间在请假时间中间 + betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(dtkssj,dtjssj); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) <=0){ + //休息时间在请假时间 左边 + betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(dtkssj,jssj); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) >=0){ + //休息时间在请假时间 右边 + betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(kssj,dtjssj); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) <=0){ + //请假时间在休息时间中间 + betweenMinutes = 0; + } + } + + + return betweenMinutes; + } + } diff --git a/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java b/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java index 0997c3a..458574f 100644 --- a/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java +++ b/src/com/engine/attendance/attendanceplan/cmd/GetAttendanceItemsByPersonDataCmd.java @@ -104,7 +104,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand> attendanceItems = DbTools.getSqlToList(sql); log.info("dataIds : {}",dataIds); diff --git a/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java b/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java index 5089693..0e74d38 100644 --- a/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java +++ b/src/com/engine/attendance/component/persongroup/commonutil/PersongroupCommonUtil.java @@ -143,7 +143,15 @@ public class PersongroupCommonUtil { public static boolean insertShiftSchedulingResults(List> organizationList,List> insertDataList,String formmodeid){ RecordSet rs = new RecordSet(); List addlist = Lists.newArrayList(); + String sql = "delete from uf_pbjg where bcrq>= ? and bcrq<=? "; + String startDate = Util.null2String(insertDataList.get(0).get("bcrq")); + String endDate = Util.null2String(insertDataList.get(insertDataList.size()-1).get("bcrq")); + Set psersons = Sets.newHashSet(); + Set psersonsGroups = Sets.newHashSet(); + Set departments = Sets.newHashSet(); + Set subCompanys = Sets.newHashSet(); for (Map organization: organizationList){ + for (Map insertData : insertDataList){ ArrayList list = new ArrayList<>(); list.add(insertData.get("pbtj")); @@ -155,6 +163,7 @@ public class PersongroupCommonUtil { list.add(null); list.add(null); list.add(null); + psersons.add(Util.null2String(organization.get("dx")).split("-")[0]); }else if ("1".equals(organization.get("dxlx"))){ //人员分组 @@ -162,18 +171,21 @@ public class PersongroupCommonUtil { list.add(Util.null2String(organization.get("dx")).split("-")[0]); list.add(null); list.add(null); + psersonsGroups.add(Util.null2String(organization.get("dx")).split("-")[0]); }else if ("2".equals(organization.get("dxlx"))){ //部门 list.add(null); list.add(null); list.add(Util.null2String(organization.get("dx")).split("-")[0]); list.add(null); + departments.add(Util.null2String(organization.get("dx")).split("-")[0]); }else if ("3".equals(organization.get("dxlx"))){ //分部 list.add(null); list.add(null); list.add(null); list.add(Util.null2String(organization.get("dx")).split("-")[0]); + subCompanys.add(Util.null2String(organization.get("dx")).split("-")[0]); } list.add(insertData.get("bcrq")); list.add(insertData.get("rqlx")); @@ -193,7 +205,29 @@ public class PersongroupCommonUtil { } } + boolean result = false; + if (psersons.size() >0){ + String deleteSql = sql + " and pbdxry in ("+String.join(",",psersons)+")"; + log.info("deleteSql : {}",deleteSql); + DbTools.update(rs,deleteSql,startDate,endDate); + } + if (psersonsGroups.size() >0){ + String deleteSql = sql + " and pbdxryfz in ("+String.join(",",psersonsGroups)+")"; + log.info("deleteSql : {}",deleteSql,startDate,endDate); + DbTools.update(rs,deleteSql,startDate,endDate); + } + if (departments.size() >0){ + String deleteSql = sql + " and pbdxbm in ("+String.join(",",departments)+")"; + log.info("deleteSql : {}",deleteSql,startDate,endDate); + DbTools.update(rs,deleteSql,startDate,endDate); + } + if (subCompanys.size() >0){ + String deleteSql = sql + " and pbdxfb in ("+String.join(",",subCompanys)+")"; + log.info("deleteSql : {}",deleteSql,startDate,endDate); + DbTools.update(rs,deleteSql,startDate,endDate); + } + if (addlist.size() >0){ log.info("addlist :[{}]",addlist); String insertSql = "insert into uf_pbjg (pbtj,pbgl,dxlx,pbdxry,pbdxryfz,pbdxbm,pbdxfb,bcrq,rqlx,sfxx,sfdkpp,bcxx,hxbz,pbrq,pbsj,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,MODEUUID) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; diff --git a/src/com/engine/attendance/enums/DateTypeEnum.java b/src/com/engine/attendance/enums/DateTypeEnum.java new file mode 100644 index 0000000..41ddee6 --- /dev/null +++ b/src/com/engine/attendance/enums/DateTypeEnum.java @@ -0,0 +1,30 @@ +package com.engine.attendance.enums; + +import com.finance.toolkit.BaseEnum; + +/** + * 日期类型 + */ +public enum DateTypeEnum implements BaseEnum { + WORK_DAY("0","工作日"), + HOLIDAY("1","节假日"), + PUBLIC_RESTDAY("2","公休日"), + EXCHANGE_LEAVEDAY("3","调休日"), + CHANGECLASS("4","调班日"); + + private String key; + private String value; + DateTypeEnum(String key, String value){ + this.key=key; + this.value=value; + } + @Override + public String getKey() { + return this.key; + } + + @Override + public String getValue() { + return this.value; + } +} diff --git a/src/com/engine/common/cmd/GetDateCmd.java b/src/com/engine/common/cmd/GetDateCmd.java index 06454d8..fa05f7d 100644 --- a/src/com/engine/common/cmd/GetDateCmd.java +++ b/src/com/engine/common/cmd/GetDateCmd.java @@ -24,8 +24,9 @@ public class GetDateCmd extends AbstractCommonCommand> { @Override public Map execute(CommandContext commandContext) { String nd = Util.null2String(params.get("nd")); - String sql = "select nd,rq,nlrq,rqlx,xq from uf_jcl_kq_rlxx where nd=?"; - List> dataList = DbTools.getSqlToList(sql,nd); + String glpb = Util.null2String(params.get("glpb")); + String sql = "select nd,rq,nlrq,rqlx,xq,rlmc from uf_jcl_kq_rlxx a left join uf_jcl_kq_glpb b on a.rlmc=b.qyrl where b.id=? and a.nd=? "; + List> dataList = DbTools.getSqlToList(sql,nd,glpb); Map resultMap = Maps.newHashMap(); resultMap.put("data",dataList); return resultMap; diff --git a/src/com/engine/common/util/Utils.java b/src/com/engine/common/util/Utils.java index 81184d2..177dc2f 100644 --- a/src/com/engine/common/util/Utils.java +++ b/src/com/engine/common/util/Utils.java @@ -1,6 +1,7 @@ package com.engine.common.util; import com.engine.attendance.enums.AccountingUnitEnum; +import com.engine.attendance.enums.ClockPointEnum; import com.google.common.collect.Maps; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; @@ -226,14 +227,14 @@ public class Utils { } String afterSignDateTime = clockInTimeList.get(j).get("signdate") +" "+clockInTimeList.get(j).get("signtime"); if (i==0 && DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) <0){ - resultMap.put("after",clockInTimeList.get(i)); + resultMap.put(ClockPointEnum.AFTER.getKey(),clockInTimeList.get(i)); }else if (i == clockInTimeList.size()-1 && DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) >0){ - resultMap.put("before",clockInTimeList.get(i)); + resultMap.put(ClockPointEnum.BEFORE.getKey(),clockInTimeList.get(i)); }else if (DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) >0 && DateUtil.getTime(time).compareTo(DateUtil.getTime(afterSignDateTime)) <0){ - resultMap.put("before",clockInTimeList.get(i)); - resultMap.put("after",clockInTimeList.get(j)); + resultMap.put(ClockPointEnum.BEFORE.getKey(),clockInTimeList.get(i)); + resultMap.put(ClockPointEnum.AFTER.getKey(),clockInTimeList.get(j)); }else if (DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) == 0){ - resultMap.put("equal",clockInTimeList.get(i)); + resultMap.put(ClockPointEnum.EQUAL.getKey(),clockInTimeList.get(i)); } } return resultMap; diff --git a/target/classes/com/engine/attendance/attendancePlan/cmd/GetAttendanceItemsByPersonDataCmd.class b/target/classes/com/engine/attendance/attendancePlan/cmd/GetAttendanceItemsByPersonDataCmd.class index a415caeceddb6c480c2de73f93473a313233a845..0d69f75766aafe307b3cb0e2ba1ca0bf805de9f4 100644 GIT binary patch delta 60 zcmdnxc))Q(8#|-n1vQsM)baImwvI{G6brSWo QCdYG&GA3>==5`ka0D2%3tpET3 delta 70 zcmX@$xXW=v8#|-r1vQsM)baImwvI{G671E0G Ya}`R{;b$kOP;hvO%k27=^1Tl2pk-W z2U>zgCyBtJ#c)y_`UFiKT5f(f*UDO1&r_c}M2s-UMCcJ^VBQmPh9sOHUvj;bQXbN3 zhm4AnRR`o$gS>jApk6ppU!1Z=kxfcy&M0th_JS+Q+;hpR(U=OKSWLO*o2qP4lOQ(| zqAvS1rO&NA(2@~%@=jYObYw# L1_s+sdvD1fE&Dvp delta 218 zcmW-Wze@sf96-PCqf5{l82SeU;bNTE=w&}>37SqX6gv`8%ji0nuwUqAPB+@pAT%^6 z2QGnQQ%G<_OVK1a_(yoeTi)Z%ow+j%lIt1vF|gU8OO`%+3^?GGLw}Jxir$+lK~8O8 zsa;N#NkO$JsuxOXgsr|gBSM)~Dri(Wr4~}>l5=`oFs8vrSYKQb;PA_}#BgPsrWoAF zF)exGR-U<&Hy&idqkPhqA3E|E{+ZDA-&2-gd8PE4x2bJm{+p}iF}$hP^oDxeFQ!)r JCE>UA8A}pJJQ4r^ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/UpdateAttendanceResultsCmd.class index 42b1cc32098e5fe03236310f66cebaf7f5ce0848..0fe9fbd414e8a56528ef38558b34af6a71356fe7 100644 GIT binary patch literal 5829 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 D&&^N6 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/AbsenteeismItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class similarity index 65% rename from target/classes/com/engine/attendance/attendanceanalysis/cmd/AbsenteeismItemCmd.class rename to target/classes/com/engine/attendance/attendanceanalysis/cmd/item/AbsenteeismItemCmd.class index 4760fc6f377c7e582406f52c0e61e897e817ad8e..bd0f01fab6fffa153bac17b4e338e1db3e6ea62e 100644 GIT binary patch delta 54 zcmaE$@JeBW9wVdMI delta 40 wcmaE*@IYaM9wVdUWPL`x%}I=pm>5kqyRuwnWVD}bz^FSpiBV{CEE_Ku00>|Uf&c&j diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/BeAwayItemCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..99b6715f9056b88845fa3b182be84f2f8fadddd6 GIT binary patch literal 3821 zcmbtXYj+#f72Q`-G_pLzMu9x3>jZ;eF%yEJ!7@o4;Sd+up|wdMG^OLwwLI}?#>|Wo zJCwH2cMC1hCzMwoANkPI))2Z@S3h_4fAm+htNYH3t&w6W%L2F6WynRvb3?fn3XBX5S1qq$NVjgg(%`h=xm<;IxNe-W zueW%4I9Ks%QlO_w*12Y5QThw!qQf1kvP|cK>Dy|ZZ05pcI}n&k%QwSNx;4|aq|ut1 zuIa1?c3@bInqh~sVVsdu*Ua@9PAiQX73U{y*A7oo(NOh@dDS$Uq3sy6=4yHP0;#K} zZ#Jl^r-LZ4x81Py)lK6bY-gQ}myYSyjrq{G-Fi8-bAIuPw8HX9TGBOd*IhGg`tet}Y1oX7Z^_lr^Nk7vV!E{?UghC-vuV(76|xqGz|sFj z9xb`%`72AFuYwpso5p~Uw!);sL6Cb>CRFVpRG|1WXgVR|A@EoSIRRxeU^~P}L2dm% z$m~#$!0At;CBi7l3W3`lv$0q+2a=c$-2Z^UK$072G*ie#se4I4FavUH4QGwR_4S~} z3pyW~)(Yv-Ez;l$6ecYv$^Yz-%AQ(#h@&gJXkRy`7K6|?txzS6=O(H1=>t%l_nOSZ zvvzdF+wSCjDphn0;ZYqU7}enESjBT1d>sK;S9Z6qsY()p)Y>>_2Fr9%M-x|>PiH(Y zRCce<%5d4M1wDCO>%|&}^C*5s9Y4n}1V&SmI8{aV6C*}UI&UKLqJ>{{&$2A!0{5oV zEJ?_uMzrVXo@>&)Dt)6aUFn;S@gxhVK)2g;oa1r9`|rY%!pMTla7mMm<`BC_%dU7= z)lU-3Mf?(P2;8}yg_l%cdvm*T&O4C{rAnCN>4S;tw6>+DYlSv(e8QJC+cHDRnz8Q_ ztf9?Iw!^Y2@NgnGsz}=iN$Y6$i2mLrzT!C!dxPh*GUh`s&h@_SVA8M zZFPCoGZxr&r@7BUHhp2bvM_UgPGCG;!geTtz~!0skIQv|J2oLs7g*Beb4}A>ED9E1 zIHv7#dMJ%bW!d!S$t3v%DGxK-(iih4J1(*}p7s0%yRqrPRJHo-!p!Wnz}PK4=s2lT zvomaGS*bmrzI4TJGCt5)&DxB0%phRT?>t%7@GBi};XNIbctqexl$H?^wtLlEkw!J@ zNGz!4(x#T~Mr)OA^Ty({bkclq6EWC8#&yvzN+ z{)9{^djq))KEkfqXqk_ee}gvn7ZjfU5M2|wu^T8-_Q&W3Za`Pex81<*3>4P~=qdG* zJs?~?1geiN4bp`ZH0MzobRNfXiT^n%c*bL+ww$_5 z+59Plsm}r1YOQWE-N@<+QVD4G16k^Cwix-txQSE`D5f&Q0GTR zH?XHOPgKV4C;tO}#Tu3X literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/BeLateItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class similarity index 62% rename from target/classes/com/engine/attendance/attendanceanalysis/cmd/BeLateItemCmd.class rename to target/classes/com/engine/attendance/attendanceanalysis/cmd/item/BeLateItemCmd.class index 813963bdeca1a3293b152178bf78235a662ecf53..70b14451ae154984f9d18986b1d13461eccddcad 100644 GIT binary patch delta 72 zcmbQBFiT;B9wVdUWPL_GmdujW+|4nJ_n25r7#UP2Z(tYM9K^Dnk~k*$fH*My;j!IYta!Hl7Y L!D90TUN0s9rr{1% diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/LeaveEarlyItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class similarity index 51% rename from target/classes/com/engine/attendance/attendanceanalysis/cmd/LeaveEarlyItemCmd.class rename to target/classes/com/engine/attendance/attendanceanalysis/cmd/item/LeaveEarlyItemCmd.class index 555a7dc4c0b9f39f8bb6017c18b88d6231ef7a76..b30c6f222666d71a661aa4e3befbeb92aa8ff449 100644 GIT binary patch delta 146 zcmZ3iuvTFMKO>{-WC2D!mdujW+{Lzx%uI%+o9$UHF)}(&7G%@~3vae#^JU`{V_;zr zXW(Rzm^_6imQi~0C!S-9iVXY=$_&;FDhw_RY78L^>I~@&W(*|^<_rxC77RTMR+De? uE@l*-T+4S!Qj>v)L7PF6L6^aSK_95jkYPH55yMOdlgSzUZ9p~e`Aq{Vhu_<{9 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/VacationItemCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..a27daf590438f808b86fe32d08a66d48cf7e0f10 GIT binary patch literal 3826 zcmbtXX?NVz8GbY~8I8vxHWSE7jguO@#VDjE4IY!knIza{oY2}NBoOGe=6bAHBN<7P z*r9Y|hweMHr3-xILrYsj=s6rd_w;}CSCqqZCD|iSOlqj@qr1K9^S<|eumAPQhaUkL z#XCjxV6p>uVXA=9PJ9iI6j8-=0Y`M4)p4$f0wz15%o=;CKNiIxq*T$WN^ZiFx&@cVGc_k)N85D@82A(b3S5b-cQUQq}Y8 zX5h?^UNNg)y)ON-hTG~gDK!yT%!gmYf_wpu5fxp2V_G*r^^MHouACR|IJt*LN@vl7^W zX*Fu59mA`ElE|!(&u6P`x6q3bPs7jyWxs%7f>5x+Hwjpt7#E zLk&AOnzpjEX5IrENyp=*Biy<<6Z*DWFQ<0S&0UdJSUyHeI%e#;E5fEvzmK*Vvqd4w zWL+*xs~J+rLj!4qEYFvw&FJ`+TnatktS}_PttAmF4{kJ@25nbCYf)%8_<7{fl53v7 zIPdu?j1jbH3}Ap(&1_-j9X5U|JebRJ++M?jxOz-echax3qoI5p-LLhO;YEJ2cS6PHJOKJY<0=+ zXuFm7sbn!QfKvvBFs#Efu!LuH_yz*7wrp=*RFx)#skJdFf(5#0poy!@sFR)-D$AFq zWw_wgg04KSbz_;sN;j?>coyH%@tlEg<2yROYv6nMzJcfQf`PlytKl9o7qDhYX$Pua z^tPpJ?^y2>&pvlq$BPDD!pjC;!K(%i;eH*j8F(E(Fz`eCh)5gwF_sPd1V7dBGXp=z zFEmW>daaemmfX)%zI6Q3z_0LY4Z|r}oT^g$nNcGu?YEJ+(Lyk~Ygv|a4fm!~ElJ9x zPHfE69oM9|Dt)sqUFi$Qe2hg@L#NwxoWpU^``^Nn;>e=QfJwo2vyVNbWmmkbYA6rO zMf?VDXt;AT3oohe_U2|Ko%bRaN|iE)(~ODgw6^)CYpG6QKI+Sw&8{I?H+Fr7HMDu& zc34_9JebIhs?sJx(mFPJM1OA*U-2A={lW8D9rK|VXM4|Pu&h(kOx=pvG#pA>lc;M^ zZW_w&_U2B=Y}aeUIrpsGlAsY!^}nppaD6Z)IC7@br;r|yPyn~lJnSnu_! zZ_Kjup5{K?o;+8bIyG@o!)UsSZIPe2<(c%4$Q4$kHH6bOmgn-Brf?XFg2iW!uw72~ zr9r7I2!Dn|lJAi6Ad@Y9FK@Er0^8#m&!4p$i35d+YW3;asp-=iMsDdr8>h<5_Nbj< zvG#oW(h)z*_)23r+hD9Cf`DzmowKatw+4QPKN=XvLmCc5Ss5W=yH~wMX;!1A#EL5B z*R*stS}PrYCRSC?TWqpx8&fW8LPaT)#OvQ_6B2oGZJy*)!;wK>%$R;8CD${RC>t16 z2BgWiei*B~HE;ToB$6w_ac20QBvNk^)SK|x%pVOsx2D5>7OfsW-Zku1&4;r*=lgMh z-!F4@kfX*iqy0sF(U(vFyKoQZMtq8U(a)8}{y9i0#rZhL49DWo`_P7l|AEY3xynWo zwsQpbAV;ko*cVCK8B-^c$fw#cB_1SYtVQjNaOXbmWMFc}rpKAm_8&^z#_{sd-;pV0 zZy=Y!2iP_pE%VXxW9Vo9iNeMA(J_`Axq%{Oe~3=t1`I`f+YM~bKvBJiu2MHCZqH&* zu9WAjl*NTTIR!!Nzybc}1H#ospnB+1KV3LVb57Bqb2yAk{P#)0Ga4JU?$l+TeT9a1 z;VjP{pz%F8jwARg<@R$tN|$qy%LQpw15suVP1g zpmwAJm5(jyE~;CWaKA;~9J!ATm+n}{ZMbyj+MICgT*a<~tJwVp_Kpm#V$YlCeh+(B zv2P^W+?IPc`z|HK*zAma?q|>jv77#k(VubJt?=k24K?vsh1MV%$0HPW)2l~a73@~iR|*s%`LX`JCYgNN}4jzymS W9)H4H%(}00tupExR5ycJJoYJoX= literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/WorkOvertimeItemCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class similarity index 65% rename from target/classes/com/engine/attendance/attendanceanalysis/cmd/WorkOvertimeItemCmd.class rename to target/classes/com/engine/attendance/attendanceanalysis/cmd/item/WorkOvertimeItemCmd.class index b517fb14832b7858541ca8ee215b185cfa89b24d..a14bd2a068462f43c2242d8edf024e63c48f3294 100644 GIT binary patch delta 58 zcmZpY?~&i2%*g0I*^WzmvI3hpOJ+%G?&d(ovrLTUo8?(vF*3SNw&xOqOHB@B6xr;> HX2A&n*B}q0 delta 60 zcmeB?Z<61j%*f>AGue?-Y_c_@_+&>m;mui$JDFIF85ztbPh?k}{Emffa}diOMn(si KqRozM-kbpIL=VRR diff --git a/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class b/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class index 72ea257b8b35b3b01874c630e4f98f292012f8c3..ab0aff6766ed93c3d15f804730bebc195f9acee6 100644 GIT binary patch delta 1061 zcmYk5*>_V_6vlri(@pL@G}mY;1run2QW`X(9hjAf3epM+;#e@6SW-(8lUtmPisFDw z9w(efoKRua@m!U%MEOav(@27mz&t;F^BCbNxj|W4({|AWv9a~ z51+eID2g5>?u|3%v5MUeW$VWs?z5^BE+O{BskB>u)uqP$4t19Xfy3m{!)YhBr&=s+ zDw;E@p*B(qc2|pyWQ=Eg_KSPgXT9b*o_Bab zbAT5e4r-avA;qlm!rnq|GAK{vMhZ2}VUGA5O**{fvsPnx+2Iw!HE*-u;T_Gpyr;;UQI(H7 zys!Cy52w0fKdA6Wd~E)3vf&KJr;_nbCEyd2P5c=e>NUTH=FDpqYvorDw~m`ARK{}K zf_k|!X4bgJ{ZBQYaYA#IZF(hZ&0p?-`pWcrzem1SEH+iI!~EpM%tE~^n~_HXVdmN~ z3kunaTV7@_J}Ngaw<30_sq5}+pX}MYhKqB?ZV$FE337RnAlx2T1mE&6PA*k&0HoZB$*poE+{M+gIvxP zQb%6Y`x%gG2PJ#9u%=@}-RFWUi25Nr4cm&4c1Xmwkuhgy&2IL6L+7{5JtZ3<&iB|O zx=UJhSxq6&)Me2+u0;7RGUXY`LE+d*=)Tmv@3=U`Y0@XpDaKl{MgN*BYFUNYz#8!>L967aTOCXAIbZSxo!l(@w&ESa Py@gx3t%VBQ%{~7Ds8*|l delta 1111 zcmZ9L+jCP@6vlr$x09T+p~n>Hg~m!N2&o!rLq#hU;te6S3V0VVr6HuoCMGG0B2nx8 z(u&*r4R5G;nXyyH0cUi4R{sJYoY7}T{{hEw?X=Pv&%;`4_WIVh*ZS5ze~9CRpHf5@Te5?~_AJr-F?y4=g8L)oRmeGXMcuv9K6;@NVw zkgAmqrYBO_a-oo~&i&l3TI1P?+~HiRl$$K1cGs)L$->b5?`lwm(hfD#70jstb1b+w zcs^^*ufb8ju9@PnriWh5d8{#8LK~OguX%tY4i9P`;;1`&Wwh9GZS96;}u?&`~N?q<~4i1eCdX4u_mLv z&KruzR4rdEj%(gz+TktD+q|R5nBRgM%qi6ob$C~Eg7@ark?&OSeLgTVZcqE@*hKz7 zeaMv+f2auODwWa^MfZ9$8(V2+qcM|>{uNB{kr|Htsn(j~POI7K`ew{M>7Uem%qh*V zmEux{Oq;h!eQrj)UqW9f(S6QqGa23An~(>EEW6VR-;87n;=}SfWItlpnG?FF?*ciq zj{;T@qK)+uY01JlY#=FK(YJ{ILsuFWzmAyLPN`c>3tdu~kjiesuOTDb-Xr*Zg0fu0 zM8xi2+)hfOpkM~MgpJZiMi~1UkZ#jby-H9ExlN6;$w9(? zz$#!z5zsCnuw!&4zb4dohLwsRSS3N54cfnz-hX^I!hUmBr^Y!ep*NdtWUk3oh7r_2e$%NH>0BhvNS%kho2PWmnG07#(~(&S^OR$9zV7*;?jOfkS{EX` z4KyRG^dG!&`bqm8$Viu!Z(ymIYQ7_*8V^ZXnT+qH^6j5SsV+@HDsqnXGwF;IHnq(7 zYBPO=hpa3F>s)FUwAJ*Eq)9baT4B39@vkGoal6rWC*20-2nZAZ8vv#=gelBC?|7QP T+;afCTV8lx_Sr}FTIK#XyA-p_ literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.class b/target/classes/com/engine/attendance/attendanceanalysis/service/AskForLeaveService.class new file mode 100644 index 0000000000000000000000000000000000000000..07d2aad3f919127c19449ac4baa620c983b712b7 GIT binary patch literal 542 zcma)3yH3ME5S&XwOu`!>Axb*Za18~LQ6xeXQ5aE}if%E7b-_8KyR#)Xd>92Ez(=86 zY#xr&q}$n@-JPBN`u_L?aDhD!J05l!4#>PtQXL4&#i)3YGr@3r7ECE8o>`gjJ9_g6 zH5^D|eTH5rV?{R8j{n}^Usd#kRLn!GrHcJp=Kg6aBI^%Vrv9}3Ze4TA(1|%&I%1q@ zvNBcGF-J?aTS{KWR4^PiH2Z@`hRa5BO$m$Eewb!D5)+v?LyoWiO$~+4WhBlQjxyXt z>5K~%OC>m2E7UWos2-A{q%hKOQ}yxHQ4IU#drE&RH@gfBE%#ZV-C<~>z^V&3*rTegU|_MToNy=Y++3Y0M+n_emkviRfZSxV&0#xnfm1ZPW{YM9Tpa zrm@Z}yD}Go8OZNCwPBm7*yY-0QE#$IwvxJNH9UHtix4ETX6JJkgWPEOO1K>i4?Npg zXGXY^C(cdnA>NmHD$m+9Ne^vgEP16E>zL^ u)W0i)d0TQ@Q&&nrAdLJ60pkf_jEUzXPa_1LLmdC{)bp&*esj_)Pk#ZWOp5IQ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/EvectionService.class b/target/classes/com/engine/attendance/attendanceanalysis/service/EvectionService.class new file mode 100644 index 0000000000000000000000000000000000000000..d9b5bfd038c5956a5443ec50a7642b6307750192 GIT binary patch literal 447 zcma)&y-ve06orr5($MlFDj{|@Sn$FYR3X$NhE@#W1un)!w{jiiIFYjOU<^C}4~1}( zqDEn1^YK0R=R05DAD;lOaTMVo!lA&iF17NU*}LkA*IMBGVzHu*DF3soS>St^b@d4ac1A2xf(&4NF5Z z*%cnhyw0c+7$;fbl)h&ZPCuP**%R$bR{ClKE^w=|wbV9ct0j4_?F(7eev&0q<($jB s>64u~0w;BZbp{RbP(Yv;q6hi|fj$O7?*-MvFzBeG_uD!+N40bO1Fe98p#T5? literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.class b/target/classes/com/engine/attendance/attendanceanalysis/service/ForgetClockInService.class index 7ab0dce81fac7924348d0fa270fc6ec3a918be5b..022e32666fbfa5d021f2b2134d5a952b30312fc6 100644 GIT binary patch delta 179 zcmeBYZf1!+^>5cc1_lNb20nHM9(D#^Mh20z{G#;K66c)!ss pYDAp|P}RhK9##+^q=U)Mdg9fkq8tp246HzxF)?rgSzKTiHvovZFr)wg delta 146 zcmZo>>1U2Q^>5cc1_lNb1|D_>E_McPMg|eL{G#;K66c)!7}tMol0gz{tRhV&r5`#-*Yx T42%q{K#Q3e*nlh!FpCoaCsifB diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class b/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class index 3ce952e1a5ed3c73fd6782c35f62f11177a90099..e17ed295fa4acef9e23cfbe7bc5bcf61ce784f7f 100644 GIT binary patch delta 129 zcmcb^a*|cx)W2Q(7#J8#7zEiF_}Li*HVQ0fR4PhM&M!*wEJ@8}WDwHu$x19s)GsZ` z%+dEvEU?xLV`Q+H7;DZLHhBwUtu-?XBLg!73j-qqE6^M!1~wp{oq+?+=LGV(7`Wkl L9w3Vstdb7^$hH+~ delta 46 zcmX@fdWS{e)W2Q(7#J8#82H#3c-R?uHwr9goGijr#mF?dpGkp>fsug=D9yyc4FD$~ B30(jH diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AbnormalAttendanceServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b9eea1de4176a012f650b4b82fd48c384f0ca8d0 GIT binary patch literal 9515 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 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a4630fcba85fcc51335552fd020a59bdb5e6b7be GIT binary patch literal 4706 zcmb_fYj_mZ8Gg@ZcW1L1NmxiEf&`FD0)a)4XjsI+CYV4HtU3f2fBT~s>3e2ov$IJ+o<8LvXU=@* zyMOQZo!K|ue(@y$x8To7wBnuwI_r?cNd@;NkV)b`ygPvdb%VAc4I}ya(@1 z;(d6(Bx-UQNm0vq9Slq)F$q)d3MmMTrx1Zthay}_DiTh-U4) zE>PcZSo&b8Frqsrv=Nh(RKK0m%#)g9$oGI4b;pgOz_I?ET}bQJ7=_ZB>*`isvvT3B zW@+Y3(I}>ix-)I?$S6#i>7Hpl=Nh&(J29&#PS8Y6=+_}3>8o6;PuAS0~SDX>Z#v23TH znOW1$P4-z*vp_?LFR&GzEEXr2stNDWRGpZasd94mg(T_qfu&xBD91-8n2XFodU|I_ zPFf5E%h6w>9;xZNAy>;y(zaJFujmgDmHgi)pB)ho$Qn)%7))j>^6bqkX>?e z`Vm8R+nS!Gt+7i2R>gMgQ1J;o&PJ&qSSCfmCslk3pH}f1JRw=mGCvg-!a%`iReTPg zSMUWDU&NPGd>Lm|d<9=6&JWwRTXY?5YCw0#?R>F5jwc)N6d&gr@GceS@w9@ksrWj+ zq2QY;zJ+hAcn04g!*?6-I3KeO7*z2+JgeaQDt>_HRQwP>Qt)FH7jRL*^D2IVpQ`v7 z=H%`L6_@aYf_W7$;^!)Ufu|VLi0+=&b!)(|O0Hg1@Jq@1l8Rs9Wr4o`+nfa3D!?(rwvJ1bk5fYGAy5TV66&oS88+PAF5mQdK-7HrEOyWN_r`_>hP;5X;a za2SD^K&foov^N-~pk!zJT<_&$=@Ew!O>r*kCv1VXK&!`>8+UBWPG`MGwLTd|+|dj6 zG=qv0xw;(dYg@xp$*0OofQP(|U%{_s=u78r+i()w@EZa(_K@{X__&bhd2`*U!8m7|L} z>86tN#RPVTy;;J!3>sugek+&X@!Hg;rc4ggmMVJ-F&zmqM1!j+0_K^2|K(EVjh1#`RsM{`i zA41BsW|s8hql-GvS5$Rz_!87om-l2(NRTctvg zEurTo58Ds+@Qqc@_V#3t^-%BjD}0MBm68e7Pn9%N-kX(C6WaxccU zeEyKh$<$n37Z0zz%QJ1m3SL$58vdZ-Zh4v9C6@sV3T&!aHmqrTl4HZWu6YY-qnd;} zQCC-}year29q+g8$4-JP+UJoF{Cqgp-bl7uDUwXpEilD*UV_>j=Q4-uo<>V^ zH1vKB^`6v<2<|--yL=`lW-ni8zd#3~p3}Qf$9;+puf`fQVGGy2XvR_8fcvqQzn|8@ z!Hp=9{xCLp!SynLqs+!${)me+M?=_$4#Z?oLBMi%D{f=pDo&vj`x*2a=*Uo_hBofQ z0q&x>oia^4^Z5@h@ZUjN7pX0%xl99b1&0(IR*+TD&HqgPztI0rn(QG{1V<=%XF0=> zNh(e-(>>t~Gl%tppG^(GJXS{dA(fiPDlhwk<+IgG&j!k8ji5-=Jg%=2W#QI%b$AU* z%`DcJU+2(#2{+7P?P{!>yoB|0Xz7UVNNrfCS?qaiY>v%g)04Q{FK;y85pRs2Lsxra ze4)rUc>1vwS#~-k7sd=9>qM&ZQz;IaVtE`d6E)yzT_P|mFU}q z+W)}uP?sGRZ{sE*v6mt4BL7CMxTP9^{bc~sTR~j}rjUJB6B-V^UZg(aBjpIl>qj8F z!5-H?={pYL+|bdq0ApZe{oFg&EG@EmIMO!?~Sah%Nvs^K*fs5ug-Sy@)| zDwOCfqBYM^QP}6!kfN2oA}>2JMC!W)b@G0?l1{e8vO2e2RVU34dC{D}8+<0I{dK&F a-*YVG_%4f==bw&Ij0HO@*x8uEss925qrQy* literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/ForgetClockInServiceImpl.class index 3d67546a48173324d033ad187591aba8f5130dbf..6f1d3398ab9997a12b162fe46b896c5ed4989d5e 100644 GIT binary patch literal 2192 zcmb_d>r&fB6#mwBkSzpFoCMmGBsd`{7lV2sZCWTTb$~b+L+cbe{gYX2;fTr-Bgu69 zr%%#{NZXl~^hY0{50&Y+k|2VZ875PEq}@H&@0>m7=-*d={{vtiKj;|7jE*v9^O!5Z z#D_Xx9}VJTe3Hk!jtBTu$7gsrh|lqbh6Npq__BaOENS>k!`A{?$7>4|Yo6aW17~l3 z->iA@6)zz)p7@(*pY?9PE>t`d(GRvfSSQ`K$6oGKZF zb!{)rTXvjBvPVzF$*J1DJd|cPv>mf%2O(t#W7#d~%Z`HnT3|ySkgxkz&~-v3EpR!- zPV`4kht@kd4(~xqmZlctqa)q6*$92xZ7-xKo4fl~GhA4r!?l#2@{uS;m@jTeSt>N_ zwkyM~&l{+|5&PTQ9Xgd>fzo6OvdUVYG!Go81oIMpIU{_*yqq=p_UQAAO(&^Zz2SBJ zrnPFT8oha5LCvX>Fi^x*4a)|;L4}oWhgL_!BLgc~HL!-q8mb1KU|qmayjItjq3yXE zY6dn?*RW||3*Tz^&OifC1?vBA*=zXTz&3UaT*eiFv6S_u=O;arw28nz5sY zTgpz`^V*JOa@+A-E{?-mHdzR~Zr!zhek_CMJPBMsRfGwdg*x3IjpcSbf!XK<%x9I) z3eW7pjcTJ&t*iX;M`cZdYlu-c+y=dFm!4LaJU_G+4~QZ z!i{8;etolplR8Zc30#Q`MzpFMTAZB%+M#s1*5;nT$YeFGl}Hfh?emkX1_QHeFuTjX zFMIKL8a<9D8WtxEni_r`QY@O4t(LlwJ`wyVFnV^@ugYfV`Ak`Xxr@iYz`e9~#gRe4 z&OfWUfD%6@!{BV?b3;`pzf3vq*-(66ez=XyXp@v^`2J6PO|5a)fv~ww@rSAKZ@+ zD||8HJSi%QY=r$d!uyP!qb-tB*kdWhjidO0l*yAzD^XVc3dO-A7=K_$T^vh_@A%?| Lc$(rVgX#YOq-Zwj literal 1701 zcma)6TTc@~6#iyg*isgOig*JBuZ04O7Zfa_qyjdUVyt3(BExp9i+gFdyTtwxe}@_q zL=)q)KgxLaLfHbwKJ3n%>vztXZ|3)(?>_bxRS!v9$drqUi9Kd3OCcpVxk8M zCS~N(NMWiM)0mN=%9xdLOU7-6?nT|w-6e)Zc4CtuS+J{up}(YCqU@R5!gg^UA3K> za0`a5y)Rmo&{8Bro?)oXwrm(rc$1LEvZWoq%T>?S4RxK@^Aks8YN*Z~Zjx{Rag!q& zp5ZbKw>Q(QA2c-A9tMvuX0x`w^;EaIDs7?`} z6Vn&6ouD7Q7x4*ToSw)&Fr1>dG(js}3i=O{q|(Z0?V8*J`%D`N8Txkz$}~>XUI`sA zgfk@3yl|Gh{NRsBQaWHZmyy08v5#Z|uXCBM~2Z| z)>f_7K76%m1+BI9r&z6u*aoOSe`lw~ z8!Vn)K{Y(XNse7VIpSbU?!Z*@TN?H1o; z@jEPjr^Pp0{H}7og>Mbvaht`rTl{W|-(&H6EqyQRc@izDGp=c!=-i`$GH){x|9Vq_F!biw{)rr}=)9KNF%|oVVz| zEM|+9#h2%f)si z;=QS4x^rV9*PF`c+7j98lCcESy4F~xyD^dOOr{f!(R@CUjz`n6L?e28GU-G*-`JDL z<}&HdY^JxTG3QQeY&!)#tX16}%_U>GM83Ghic>5xxLQvtnl92_R%BuWx;-i&T(&To zPUaUw&?!^5Fa?@3aqwT=3dYy2xC7oQmdh39wmPI$@H=!lJ>Qxm?#Q5m7Gy^>jA2<+Iq< z!r*KVX$}*2;a>|=D66-;HJQsZ)%Yk&59ZmK>k`>~vO6K_7KN5F4}Et>dq4`RE$fM9 zqupR|%rJw3oZx#{x4UYfGu6}1R5>`T(aT-VG;HK{rI^h2SYKaD94lDyXg=!BHU-p3 z)qYlWkEJ=%;HW`+YRM3MfhV!&|{|bwX zVUGVRCOzYqd6jMXXly6M(kC9_7!ev#6JFBf-y)`B>)Vo@>1e(;3roIt$QeCDT?{$N zr=0cwMH5wUG0mw=Y-dY)6OJd-#34+VI2O@6)bN%eIHzQ>)YSZf{VO}D-Ayc$jmr^) zqZ-1^0`0kzdd!wryf^E4&0sPePxQghBysqA5om-Bc!XFg)7zcK$qil?P4z+x70EP4 z^DE#K&|4;`EpfQ9g6GBnu&S~NVMDN7LV@hA6v&sy#L2d#J2GIk15UdeVI+z9f!MA+ zvR*veziC?!C`|HMy-y{jdSkk1h=^yZaD=dlsc3h5JUZ!Ap=8p0rg=liFYs{%WA{Qs zY3G8eS3r+YPN1(_WDe}<&p|@7Jsx+JAkHJSIPB^Y8fg zOsB}8{%`rBO#^h8Y0bzy4+ig&1W_|PVwNbJGA;jKQ5%tvO-Jac&3~XraC&f9qBcLp z$6+F+p_mEj_z8YmMxQ|l8XVPGM4+d=6Po*@&41!Q+x#s51qs;lOeUYpXQMr96ZsvP zc&@sPpR3{L@%n2GpJVgi`0pmaVDmrtpC-R(^Gp1)&9CsQHGCX6uhsBqn_uUXw!&r4 zRLWL{3NZaVmq;OLh(u>3;}J3LhUkn$JQu^OJ(i2>cCI5X-MNmP`G)ox?eSC}UVGy4 zzK%Tr;(a@Ecu9sCiRa~oR+rn7mmZ7n)Sdd3-xc54u}9|QcW5ZmkcCR{-wpESHtQm>}huL7OQOdE^ zXnx*SW3a2LR*hvEH8p}jlE_Bd`y;M?N~XKnnyJRws!oNg%hdQ9H36@)YSf!-b+$Uk zRuMH3f!W)kuJ&wy!_HiG7aq`Rmq1#-UG2HpP!)EyckR%6a+M-;7cGfI)A5KXuG^w;w7u8PTzsc)$;1T6qQzu#hSh zw#k=eO5TPYE9P<7!KkTL+3FIt+Ey)UwW%(Z#u{6-N>8gmYXw>-kM(K|QXyKB)Bgv#C?xZ8x!RcLIK6C#nm?pceLG+}d4cs`Py1m!i>N2$v_biX=TyHy!xF?$KPsV38#1pt- z=DTrUhb�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 literal 11966 zcmb_i349dQ{r~;;$jojA2m=W$qAm&wA+Ugm7!KvsNH{d%^1|8ONwUdiH`&=hf}&`( z-bZWIdf!ryww@uuYOSr>di1bWYyE4rx7tH(wXItDf8U$g$!re5+K)K%oA-Y2_kQ>9 z_ul5&&vrddM6>ymFnx*MROqcR{f2(4(CJ z0F@6^IjZsmor3hK*z#bNC#pP2 z#^V^3k5#!w<>ORdp>nOtD^*^l@@kdWsC>N2C#YN}NY|^pR^@dnuUC14${STaQ4F7? z^2tICr-b=b-W2B3*bu{U!E-|8WGS26pm1ZDvK&+CCY7F3>3Nl22yqjq!gw4bWULNx zGq;5Cke_Ms*{agZDrW?_fJ!f^oK?6j%iYD?OT zoY4vfM-Ol)$O*m&4BNX7>l>GNeycsrq{I`Qoi$02Qv_ zvpS@R{}U#M)#Z&u3p6Pc1#&9NABrVPn!+8Zc5s}!RAa`-cjOQNxAqI|A$gOb=^CzI z0vK}D|3sqU$V^Mp*+ffCrXEqvG@&2UMfpe=89G0+AI^|04lURhaTlh8(nf1MX-pg{ ztxlYUls2aymxBgnzrlG^PDJuT0tj@rraST4+GQn0@<}Fh?P5SAAG02jzAsE5zaHG5 z3CFs{*?8~rAdl}IX~sSv%{+3in(3z#r=Z9(8c*cfp%q&fL6MT7tGzNdbMC$%9kDM+ zbM^)4a1^}(dWT`v`3ZD2vMmVLWjk^Sb9qWM0i)LzSM2GcsA+UDUBa~Xzv*~n8_-wq zi`yvC6DYh{<1Gw_8luPe?>Z`t&Zi5QRt(N_UzICrp(L||_ECaUrp2F&+Mt9qx{xl? zxQniY^N5@Ru|`m(Nr9%Nn207ifGTUsT4Y1Lxv0`l-g3@TGt+)A(|}f@xUaMzV6hYME)2 z$*3_sm5d5Et}>>ZNh^U@JYgl}x7Cmo!&XB}zA8RFo=kV*wKbXSY}g7Q+1X^_C3>uA zGA~~EYPP?`OU@-*wc_-ejJ z7<#{_&UB`;~T`vvi>+olvNtv$Tw+xGvA`|t$Z8P z$SKim4lASauBfe@qLp@$Q}}j`@8COOpu05Q!QW8$ZjJBZd&~GfjD53=zoqfF`F@Qb z;0IA|9Ah=db6r&}R<0cnD7aZbQq|3IE74z@&GF_YsWMwXV(o&XqDCee6%-bF;Q0`oUHquV-{Hq_3h=}jz}9RgmS|1JjxptS zOInl2M*O(K-_`gD{vI}c690c+;U8%H6hE!;GkmQGsULz@As${rI~xCp&jKu57(1ed z@C>YbRz%Qq7#AJ~R&9^Rw}=4XAX^87yDR*>#xL-Xg#+9KJloANDbz2&h4%67yjrYe zi~JHV#qoEDeHiMJ;y69#MO}wsASC{8J$|M}_XinO_mJztreF`ZCkl0XaHa z9X;vvZKo*ws>Z+K*Y+X%xo1GfV4iMD957%zg^{yf=QkAowZ?DqTN?j{f2;BD_$??$ z8p~=BhFIotg1%hsIcK|D6;9SNb@wY?3jbc?Kky%!#(U@`vNbO~k!MLoczcJL z>q7V$&Vk(zicE)iNjdGbx7~7v;Cm=8ra0Q|H`&{4+oR%)jLCUn{u95AQ|e$uPYmOZ z<{kKM-W2ELXc3u)j!Z(F?PF_lW-^sPk^swghLyS~+6K%tq|(qI(~;hmWe_4mvkF1_ zjNy=9l1+;Wm(3w$O7dAzUYQOkVzfUd*i;hsGNu_`ZU$fuqE?}jcX6R$w6&$Xm<}x3 z$`xn1qnvpH{m($pXJtX&;N5N@w&##HaB>jExY9!=RbHRe2@e@r#1w`w?P(1pj+%14 zxuOWY;N?P1O@_6~>;y$zFQKsvWaP)_0>1a$1NB2CC>KoAyuMUtU&VMeX%9KI7u%G; ztyh>(rkc;%bLdrz_Hc**HH}-je3N7d*Ek`oBW}qJm?|dM)C}AO09LmmC5jPh9Uo;p}kIU`&X0(FM}ZCIR%v% ziGI^baZyzc1bp4b+pQxR;3}ETV^C+wW3?Vfv8g?SATMg+qf%6h>C#@ZCR(8=#b@P+Q3SXL39f3XLIm~B6L`E;HeLHzf+6c zTvU^xX&|&sxjR}s515wj**^;|Jy>$})~*>IHFz2YGt<#(#bn8@ zGaFlxWyQV7GK?aru3oq7g!-D5%Qmg4U9^g6mRFVgL<8~$tkhP>>Nk@8bLSw%-S(os z+$r_${89n_-A+U_?RFcYK%MrT*Byw$$LI^QElxe;iRx=e>E>RMDK(`6@r)8KaDX>Dk3L-e?j#3UpY_V zzia#t{-;K-;j)5$h1&>vRXlzv9zUmFX!N3hekLA25sx3zkI*{zov%}w&Dj>XoxJ44 z9f;9T;HI>-?@Qr-qwd#cvn?I?HRX9PZw>+b`s7%o)U;_$v@x9;CDWCYc|BfJv`{#M z7k%F+?Jf7b*4vUel$RLkbRF6+sPJQGdw@a)lLu|gp7Ce`osA#Ana;%z%j3kk55H>r z#6_8W<6;W$VVK8tAD)-uYc=L^k3#!b?j)|%eLduVf&!0Fuu?CPu<{7056I=0;W-?H z38VwGAC=K~x*T7cO@OYTui%U6t8^uZf_SJMKS1wC6x?3&*6vpT{Ma?H`MhD8c60ty@bQ}visMcu~0RDFg62B+#XZ4g^H`k7TsJ}k(WMoRS=`j}oi%unk9 z&-B2v3zXg2!}U2f3`?ky(q1~kN7Y(H>oZ36FhO;AWVk-Jz)TMvsaJQ?JpU|r?fge+ z!N$n&owTr*juM6{uO1N@;h|C%feEEfjuwVnRBX7B5g6Y!m>$t>gZb+OU{oKZZt(K{C}o;%4qmnfb~dgqeGbEbFB^v)sL!SQu8EHXM$(Mt_JTJN7TrhH7q zp16(27h=?Q7AK|~MZk_OM_kxGpw~&F-P9x^eeBR{3U+ZYBST|?dH`Y!Mt@vnY!9U( z5j?u7`FhGl#(BPPq_}XK$ml-x*Lp>U8+qqe7SFBn&aLv!fgz!y7C)UkhIf4S#*R<# zevs07Yb4Z589zlr_aiR{2>F|*3vZ@_sgx$t7@9k4yAgUOdDtlok5j!Gfk!2 zkgy)0Y4kizr&lOO@6inUkY;k2=JRm;fzfI@n(Jv1pGJ#0jkr6LmhwfkjIW{Pd?y{t z_fQQ#O~>);w1VHIT3?7(`=-$v-$FXxw}$F`399#X(t6)E+Tgp2Hu~{#o#DTT zw)yX(GyPA}S^hU@yZ>W4J5WLA1ZL5>f%$Y^U^$&1SW6cKE~E??bbfh?F*MjgcLMU!m|%+T0u?{43C^G$7zbKHxe%*gNJqTz7zw5t>9>Q#yFXZ1s4`Xa3rbD{YS}ZLcHk z9jKKB8GBqAce*m}f{eC2J6(Amb>(@~mFH1co*q}89#@{7t~@=iJUy;FJ6(BpL7wkG zo~KCLO%0?f^q4}A%YWaM&nFbZzwZ%!O!Ibgo<(S|~Jt_rWOsDB#(RQ+HBZ zp?;$wYnRDHHe@1G_(i60I=vh4HlQmrY+af)JWh#>g=YjZrXYsjTB#}%P-80hy+Dzw-u2TxX*u| zEBOI(_tVhV#wkKcWXJ|Of|{tAQk13^sfpPz6*xo`2&o0;b5JvKEv-e)6be6tj-?j> z1+n%B`Z1sq>1PL$Z#SJriuA1~Jsu|fjHncosoY8g8aQzcq_OSu(ZJDdAPu{ff=T-Gv0zX>a0aw#@I@PFP(`_za&!PboyxPoyM_TwB!02;zS@i;vKu+m^w}1iw|*rk@b%bk}S+Z z?K=!rZ8lZY;k1$FkSQ%ZmvVHZYu}BqtH{>E7cH5sk&o$QdP!P3MoZ~sY3XXLc?B6V zD1E*H#<5rSV5L2`6LTWR!0&g{636z)3oyU1x=aQ#!AykZaC9E1b-Pa(MC-9ZwT?5m zLt`DZE1QhSvkFciPBm!n5A^t!ea7i;*+V>gRJk68!~W;s(@UezOL1%9&{*N{ zS)tcd>f0rY2;l2T3GASNCpc}NpXA}F!sbXSI7q(HN8?(AUUv_;6QuY!jOu6i&^ZrL zS~vrH;wOTg-@up;h5c&0#UFf+N3y!AB*Y)`zxX2r^mC3A diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class index 191e20b0510ec25e7fc58e4f65a3e2acbb61560e..a710187034426f3a1bd6d8d9feca5563d7fd2138 100644 GIT binary patch delta 103 zcmV-t0GR)-55NzwTLc1WD3fml7?X7bJP}N4VRm6JY+-I^FH>}KX>Mn;umptyIjR5| z0IL8r0IUE{0IdLO0ImRc0IvXv0I&d?0I>kA0I~qT0J8wd0JH$n0JQ+x0JZ?^0Ji}C J0JxKG2SB`^B0~TG delta 85 zcmV-b0IL7M53UceTLc1ED3fml7?X7bJhQ_DgaSFb02u(g05kx+08aqD0BQif0Cxbt r0Eqy=0Gj~80IdMR0KWjk0LTEu0MP)&0NMb?0PFzA0R8~TlYj?6j6fXE diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class index 841134f69f4d2768cc25f2a9384176b2f616da9f..a9f4e050db35bca4ad0acbd6c14fefcec0761b8c 100644 GIT binary patch delta 98 zcmZ3>zn_0YC<|le>{L7%L|vPAuy#JqI<;F6-uy!6ehSh|=j&oM|coM$j$xWM4g zaFHR4;SxhR!)1m}hARxS8Ll#{Ww^$$pW!;g35FX$*_#Zvfbb2&ZH9jgcP8huI{*N8 CWg`dx delta 80 zcmV-W0I&bQ53LWdRRjT7lU4*(v%Lg~0y)?K835S;GyvKFPXOBhY5?2-cL3c0i2&XJ mn*iSctpMNvzX0I?$N=I1(E#HB+5qGL>;UBe{s88ae+NKQz#TdO diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class index 3c8e3bfd434d587d8b68eccd1be992dd985e904a..bb801df78140eb829259b73194274ad4dfff61d2 100644 GIT binary patch literal 18007 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 literal 16321 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 delta 2355 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 delta 5002 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 DLaR-Q diff --git a/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/SchedulingJob.class index 8f1108af4d57fceeb3448094a5b6d2d781e62ffe..8f0dcdcc7c5f94bf3026eaeaf5b14663de2bd128 100644 GIT binary patch delta 15 WcmeB>?U3E@g^9_;X!AFwN!$P~KLw!x delta 15 WcmeB>?U3E@g^9_~a`QK)N!$P~R0X8~ diff --git a/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/DayRegularScheduling.class index 63962a310f6acba2005b29ff3c36f91f61252ca1..94b10cad8e90c6cdd224340ce5e686128c447f9c 100644 GIT binary patch delta 29 lcmca;bk*Dxsh9V@&Oj^$$KZ&n3c`Mf{{T*W3mH_#N>ypicBWvn_1XcB>{)c2bTZ< delta 30 lcmeCQ>$KZ&n3c`Yl#xM2W3mH_#N>ypicE$kn_1XcB>{&e2a5mz diff --git a/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class b/target/classes/com/engine/attendance/component/persongroup/job/scheduling/tactics/YearRegularScheduling.class index fea27dc290b3fb59849fe12ba3709287d45ea5dc..b489d462ffaea236e2f06f9d43f6cf455b619fce 100644 GIT binary patch delta 22 ecmdmBx4~}1K2|1EgUJV2ZJA6gH~(iflmq}_x(B=f delta 22 ecmdmBx4~}1K2|0}^T`KTZJ7+sHveZelmq}_wgq=IE+PpW%=YZzs?AZ2rLQYVx+yx(6Yd&fFOW^GO2sKB~FfwglQ&TA+t5a;r%%NvVn`b=4+>XzyHWzTm_CkR~svg4OrLK<6j zbI}RhwHqJ1S<+?{XiIr3C*Atbt}j@*%*JZgUXwsPdp@(2UOAK9u(IhwR${#^Bx9v* zTS4fWdqaU?U3IQIX2tQ#rXAEgzf8R0>rSQN68~5sZLMd?c;e!2@`_0Rx`N3>a#xOO zrh1v;?y;!)mB!YlTU&EBE1ZdB%wJJ3m)MzcayQ8tR<-0*3Qo;q>NdaXJ6jYcGVA$X zFsIUtj1MftV1qEvGkw?WxZLjP*L8C^*<6Zc=J4ecHu*{PgNF;Y!&|RVPLTfx? zwp3~78%l8C3mp!8MP{GBFLN`}_KN4r>lRe2m1|yLE;#ikmn~*j8?};q+T(e|J8$AK zzCt>ZyfP^r7jRKQ;(4#J4ilGjoWut@UctDI1jZF8$Ekl0w{JbT_w8RdZ}IW8juE^} zCsTCt&sU#4{PatCGAh9nZ2raf4}Skff=48Hk}Yq4{sbJ8;B*W8`|BU1 zn}T7^{{MPG`%$V?ed@x~Bg$`HbxQ%Q&#BH~XDUv;KGQLn_Lg-Hx4q5>I{n&axnyB} zivAUcq2MKm`9baiK#~fVl4_Nb%9D~RqMun0H&aULC$M*j$3uDqQB2@fVw)swlq5f~ zCX}Dib04AGq$xN??}$7TWN+el+kTpO*&}ACsb3Jj50&kEp0b}JL~mK)L^}r>A6aq4 zO9&xM(nw7VZzGbLybCQgsNRM6@n0r`>ILGIfq`D^qptxl>j?RhCr-%<`HO38VO*t( z*Cfa56#WgnNpFs5lH{Djsh^-do9;nL+)6jxCZ_H0>MWjh9`52SFoW54jF{284gC)KB+#!KdyKsjh)ci-8~cm_3GA1^frxR?ctHY#5*X5q7Y*tgaU2r& zh&9wipIua&h}*?*6Z`FAq=`Yhs5NoOz5|7u+8XDOOeRXrjM3P8X`^&3q7Um3G@4f9 L-o_l+_u!q!Xq1w% literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/common/cmd/GetDateCmd.class b/target/classes/com/engine/common/cmd/GetDateCmd.class index 6c6bcff7cf35158b638e186e90f428a8dab9d278..963387778057f2f33821119fd4a8e4a46a54e081 100644 GIT binary patch delta 777 zcmZ8dOHUJF6g~6kOgjvv6sop`GK%wj948#-@{Q>+9|A+B>QzXW3@!fOpJ@<9?BA*5qkA8pu3E(s1blJDx6)p76Zd{_>so9@fX{;K>%nu%b}#A%$- zao@xP%$&_|O?M}|L+ie%?&j54$Fbb{M%!v^Z+X`1 zjdG*vmY+AvqPt~PtZmP7a)Mi^VcmL;e)r|pq^VtR6^1VM-#N3bw)^WJGse zE!i1jEDVMJ0CN$9m>Z^diVVO&j7U5~NWj`Su}RyDB#4s4GDe6-k>VevpQRNXS=#fn zVv6QRVt)5t2N|)B-(C{yij_$Fg#dKgV)_7bR5^qyql>_@?`nVDm8fp3aW(J*!F46O zwysXDbrG@yT^P0&*P?y#z#&WpPve@{K!MmG!0AW|5=hzmq2y9^Uw;_fz?mnoIzOC@CN<#Y=~E;N)wOiy8~XoOuKyq9wBz;U<3^Lnu}((*51ue(k^lez delta 678 zcmZ8eO-~b16g}_Fn@&4SKNta>7G*#|ofZpP6{~8h3gLHFmK_8 zg9R)KOuh4!x8`rQUcT^OZ`K;?&D!%q z1jSE~d#nt&{AU5eNq;0COUSOg(9=^y5BdWpnS6%eBcy8_KuL69F1v}9arF(>L!-3TL9(hk zNL5YGbZt)^pvS;{&(yuz@lN?jB+so1+;I>-XB%akNjB2^&BRR(_p6XG%mK4xjo>7Q zaT!lBGl=x@bd3It5h%p!gZi|E{F} RaV60mN_KUMDDj@e_+L-AMR))J diff --git a/target/classes/com/engine/common/util/CommonUtil.class b/target/classes/com/engine/common/util/CommonUtil.class index f5c445aaa301f05c3f54416aa86ac799cd0f38db..48d151d546c0725dd04f041138dc157e1777d4a2 100644 GIT binary patch delta 30 mcmbR1I@fgrBPW}w86$(T#^j%jDwDN2g_%rEH#=~~N&*0X>IbC& delta 30 mcmbR1I@fgrBPW}YF(ZSr#^j%jDwDN2g_(?uHal>}N&*0XLI;@u diff --git a/target/classes/com/engine/common/util/DbTools.class b/target/classes/com/engine/common/util/DbTools.class index c82f93e125cb7ccb2e0d446efc3a4d27aac54689..f82b2020be2f0af53694196dbbf121112dc00457 100644 GIT binary patch delta 15 WcmZowY*pOA#mZ!AzL|%$k{bXao&&-F delta 15 WcmZowY*pOA#mZ!4vYCgqk{bXacLTft diff --git a/target/classes/com/engine/common/util/Utils$1.class b/target/classes/com/engine/common/util/Utils$1.class index cebf50cda5c0a8e7f42a833c0402071a9e7ee11f..3fa2952c311b8698076f7a92545db6438d86ad37 100644 GIT binary patch delta 13 UcmbQvGM#0^4Ms-U$u}A803k92i2wiq delta 13 UcmbQvGM#0^4Ms+p$u}A803j^|hyVZp diff --git a/target/classes/com/engine/common/util/Utils$2.class b/target/classes/com/engine/common/util/Utils$2.class index aff4403bd0014bbb4ed1ddf2f27dc02f2b33d402..6cce08006783eec66924dc65997f7a1653a818f7 100644 GIT binary patch delta 13 UcmZo=X=T}PjFC}p@^MBx03N{vLI3~& delta 13 UcmZo=X=T}PjFC}x@^MBx03N&qK>z>% diff --git a/target/classes/com/engine/common/util/Utils$3.class b/target/classes/com/engine/common/util/Utils$3.class index 0c44ca9516d12e3a9e0f212f9a1dd2a0a435e5df..f10d8668752e9cea9206d21601f85f6dea6afb31 100644 GIT binary patch delta 19 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 cGJURx2CLL?zXfgl6~L@qY$1)fS# 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 F{{z!$bx;5R literal 0 HcmV?d00001 diff --git a/target/test-classes/Test$10.class b/target/test-classes/Test$10.class new file mode 100644 index 0000000000000000000000000000000000000000..d6a15f5225f998c9e17982c45d3f7e19bbe674f4 GIT binary patch literal 898 zcmZWn$#T;`5PfYc_QW`Z43K@_a14p1Y$Q$yi^*be!hsNORLPPY%a-NDk|~qo#1(#q z3siC71Nb106fG$}<)G=;ue;y88O@)6zkUN)$4Ls4cqFhau#&t8T zl`HOA3%bfihoxex8;s3Pm8XeeqHK6(P#99Td1^VF{T!~#+EzZC^eQGduzo$#4?6=J z)oU9{J@lruE(5nQE%11KAB2J6@VT~cJGmp>s~+nYY#^u-Mtly3mS1q1M!o2s+6}Ad zTa7})YCqbDUxH7x9q!mi-CJ z%9xD*fbu>odt@R4Nhu=GD^n4;)n(GMFJf-X{s`QW0}+t&ZUpYh`wu9iPZKE6BuX@ecQlO;G=p=R v#Rbjb6V2lbE#NCHVve=a(K#`XMb6@Qz-tT{EOAtj#X~GGN^#c&M?m}sU5TuA literal 0 HcmV?d00001 diff --git a/target/test-classes/Test$11.class b/target/test-classes/Test$11.class new file mode 100644 index 0000000000000000000000000000000000000000..85574262757b255258a5a87dc1f4ec931d581272 GIT binary patch literal 898 zcmZWnO;^)E6uqwv?NE!zs30mIDoR^un^4NPpjJMr1s5XjJSR<3nl??LNj;V0%B}tx zH+qf>e}F&8rN@_su2|%~JNLbJ=gwsQ{QLDAz%q^!n8u<&Rv?$a6!HS9fF`gcP!L!a zC zSG(Y@LeNz;dMp)LDl#^Eb)F`Mv8v&jL198&=c%k#;P|;8v#isf^lBzIuzoYtSA(9w zM*Y%;((HRvI_H7gh!%Lfybr=yaQJ-Jx1Icf?$rvG3hs?r~KboVs>rrNL!fAcDnzDhymmov@p2_XLXf;m56^cT@S^DXle zl#vk`{Q>2DMh?kX2;x$NU|1$XaBaXO<;@V>lD9)JJ`kLccS2@z zAb59Bx+m`krSI%3f`=UUFvf=Gp->7Vl*Tw^FhdJS(IPa;VuNxhQ63di@s2cnpe3AA v0cW&~PgKMgTESOZ#Us{AhUdf_p71J)`Ti~`q&X|dU;&RACAe#fGa&v0!wIdH literal 0 HcmV?d00001 diff --git a/target/test-classes/Test$12.class b/target/test-classes/Test$12.class new file mode 100644 index 0000000000000000000000000000000000000000..a0297c430e70cfb5d2df67f5408029999f69cc0a GIT binary patch literal 898 zcmZWn%U07+6y2vS?WGoxtAeP!6tz^LO?lV{??9nia3JE$wbCS|Y10&%)KyuIoa)aw z(X|}-0e+A}mnRJ!F~~jp>~rou``+9?|9<@ju!7?_rtv~xQD7;KDWnB50*XLZU|C>A zU{zpE;H5xLATLl5CrHbxlr(D<`Jw z%`4d=A^x`A?dWF7@->EieyO2-)Of2WwPJ=JdO&9ZZ1 zwal_-w$zrv|K_~Q9l2zszunfHv-F#4!_>Xvb!Oo@g$%!(X?{-t@y8d;agNbng!|05 z)K5@KhGh5$BJWdjNJaw?8vr4P112tS1Rx>43x9w=$fd`ZhOSuTy*u~4cjwMz{`~v(8^Anv;~2+dff<3>IL43`$OtF`a{^g` zd4UCiMS&**O9IORIe`^{Re`4hYXZ*%o(sGXcqxzZBKf9a5(ZVvF?ZXIve_zWWt$nPHg(ND)LNFmJ|`ny)p7}mg5#L2ysf#e$;*DV zWV+szl3gLh_nYmOZf;n$m4GtTb`ApZD*Ip1OQ7vV1R zE%g(Wk|7!Xfyhxx_Q_}fVp0U4U&aG)smCPbK)_sK zPzlF$fD<~zCpy9xdWWy{9`{%)5u6iKc)+VL9(H$0Vw!UVDLle`Mse;M;|z%Zext9{ literal 0 HcmV?d00001 diff --git a/target/test-classes/Test$2.class b/target/test-classes/Test$2.class new file mode 100644 index 0000000000000000000000000000000000000000..ae31c7f3cea3cd6d3f00c2315493cdefc913666c GIT binary patch literal 569 zcmZWm%TC)s6g?BW$zWU_?vrH2|E^Z@4090xsREv>CYG9r=SLhI*j5}>3&<9LEJ0hql-_Na`6&V zR3cSEROTPjzI%B*RiyY56%F_hsA@{g4>18wDaf7qQCXN76PUl`yy+ zt!3N}MUqGgdABDMv(r3eaK1)q9LN)um6*@yy$f+AsKG}agi)gO@JyOfG$`Pmi}xtH zSVWOZBxshiACQHvZE4{KGQcxYNS$utJfARkAtCS|e{`9VI*^gJ?U){74 z3qGLV(L(tN#C5`s#oT-DnS1VI=Fh|R4S)tJ4qPm9EOESZFp2jZ%N#|H4;(8Ts~jH- zSS#QYL;kbU${aFSrSchr-HdvYVY;of{GJZGGVX|ONQ~Ex0ui2xSY`1OX`6vc7~GcD zGH!+3OA(z@9t!-66AO`2vH1s5&dp~fvEhs`0ivMy7~*e$h3@=)l0 z^`v_)19R}4DL<#+)BC&hD*&TI+mW9p)Q2@<%9Y<>6))#mzhM8UcrU#C7!*7{1{0o> zfuAJG;T73M{0%8;Kh!omIBf6eAqhzQvM)sKhVnd}a z_y9hIw(tj4uM>7G=H7G9+;bl@cmICf0@y;ufr|x>MUEv0<5=cc;V5#fa=hhu$ML>^ zwE{jcXxSVnJLh$}%2j&u-4iPF6@Y5GyOfR8RdVba9} zCaFZCdfKP~skmR?^LO@YH5Vn68FH#iX6rMJo+dILM%$ZDlCCf$aq6}D=DP2%`*q41 z4Z|>oTQ`-BN2P4~6bk zzjiKUVD_Ig<>wS?^!_gW3c%>lcI2lB^L~|sa0zm>%PD4*C=Z^ z48wHRxsn^^5o&nZ;t{ayMMfYG7t$WIdL!WuB8@-*cWAQ#LEvs!Q(?P>Ny$s zNunI4$j%{8_6|1gso(=%;}J{vL+|q!({$qw3&X=piY&Y$o1?5ZzM9Y%4gboWG>Ufd~R!^I}XT)e~> zwMbQ08`UQj_k;alZ{PP_lu=V3WBYG_~P&~ z43qifT4q#K`zq4jiMXNX=1GQGL+)6bdK8D(4c(%_4I}&YK8><&GOGAkZVu#;(B0Zu z`$~r9;5k!yPQj=ByYwpnqeHJFKTfC%Yrs^h4`5ZV;92*uFRR`QuQ&uHj}O6!=j7my zLMXk3=h*3S$IXZKvl2F+jxUnOc8RZYLq;{ F{{tSjc02$8 literal 0 HcmV?d00001 diff --git a/target/test-classes/Test$8.class b/target/test-classes/Test$8.class new file mode 100644 index 0000000000000000000000000000000000000000..f04b33cd7f085e88a2714d283803e201a8aecaf5 GIT binary patch literal 569 zcmZWmT~pIQ6g}I-b_o$QiVA+92-tQ8no=AQ9A7#rohkZ22cNg;PP>>UOtSHR`JyvE z_yhb+ik`H*@sNAZJ$ui&dpEx?fBpinkERD7YZ4D79(h>AV~Hmc>k>~To=I#-Jg;H1 zhAn~W8q#dN5%ff~kSf_@sQ_)KM{tglGdPE0P~_mV_s z-B{(hW-0pvo!iZWBLVL;EwV_zH>JfwN$;MkuZjcSB~hH_CK;b-J4r`1Z2NeDB_B7j zM2p;v6Kkea$*^62vB{`NY%ZVjZCdG*> z{0tYU;=l*+K^!SsQhdrm({EmPzkWTXKmUIH2C$B!BPn*s%aqQI8Gw!jmC9f79;&jg+eybve}ycF0K*b~@SaiF41NNn4#?e7rc znWYngQfiwPVYFhq)={@rwK~Uo)nP_f+J^3&=p8$_Uy_Pnw>?6t?7CK`~?b(6EU_h@l^p83Z*mVu3?b+_>q2<@xrixc7yv9Nb^H^XTmgyNB z3M(7=6e>7mTs55@f$|I+p4lX*{<+z#UGT)Xwi?i0t?6@x##@nOwm7%}aeP z)K~rbr5B|cno~OGf!&xExQX6_kPep5b$#2(9q3;DP(S1OL6R`zbJ(~1lG8StW%t-_ zS!Lg9m0BjRch=>K%}gb1cXanO_omvg41en?vvie0o`0M<{+$5gj~|%hEk=J451DV- zpP;Oa$@mW_@3V41CL*Brfslg{laxadNXg*{jL6XljLCEaq#TdHgq)1PR9|OWUW=HS zzTow~;0<{*NPTBtG2G^J4{0_$0EH45CKXd8Fi(TXP!bvqp-3r|Xc!e5!8;no2O7gE vrEx|QpJ*IkXaZkp5_ecD743;d+~Zpu_roa}EOAtj#RJ@Bl;o;ej)3?NbKt8k literal 0 HcmV?d00001 diff --git a/target/test-classes/Test.class b/target/test-classes/Test.class index 8f52d1bd3a9134a6a182a26fd4147d73b90dd725..e8051ec8ff5e467d8dc7c14c3293a52f0cb0d3d7 100644 GIT binary patch literal 4316 zcmbVQYj_k_8GcW8H?x@xNeCn{#TH5fBtW_(K!AkO!crhKf!ZV>Ch^6~LKGqao7CR85bdG@=U?|k2P zzS}vIC;#)%6#yIXHx>QJ*1^CD6*)|($m67nQ!wjLfTi-sR#C(~Djc{9JQXUk^(f)A zf-@=>Agf?fMWcjMDi%ukdKHT#e1nP>3E!xqO~N;+Xb(2OxtZ4Asp4IDcRk*N_bRwo z!TVG!lVa~zv0TCrsOXUJgDO@^_#qXY$g21-&L;7ZdMw39llWK?=aTq%5}!!olL|hi zq8Fc*KcA6D`D_xOlY*aD@dbQQ!Iu<#SwI`KEW=5gy6YOQK<(DNmG`y@#5%hU2*lHN z)(~hM%3H?1QeoV1M)h%%oaP}rqnihGCok!c8TTggQpeD!;d%qyUC{HEKx^mWp_BS) zJ!R@vE;Zsgc`G;IYuB9|>YS@(E~jfyAd%HQqenV9 z$85ORD^TZpx_y$t3ykNIsP%|@!S2@T%uN-`+1nklEJe3QXc`E~ zXbuAbpR<4bB;6m_#{U8*uW@H30{^cmX>8*)8mo3wV7aLm#c6 zV|YSff!|Q&Xq0tsVF3p|GGrmf_6srk8Di@d{9MB?@Fc_4yRLVAcTZ1uPp^hw;;ATy z=b2rmo;X`aj-1SFr=`p7()RLRsI2VB*oBl~?vI*>Mx}LltXe%H@3EWVK6_ z4M$GiPTk3Q=&_azy})u_8gZLw!M0LJ79I_?56q{jve?BT z-Y}c7VcnZx;d%C;<=sB1%UK-n+$*mWKP5Ta&Y4CkOi4Jd{qfC-t69dG?T({Q1tYet zGt7gZxyk}P5A6BuKs2Ujd0$jzARMJ#ceB0NpezfH^eT-3SKg$uW>owhe-Kz1%|}^B zWLkwR6GH|P1elPD#a&CR>sS-O*^P; zAaubOo~tVwl$Wcbp|&}Of&&Vyi|U=TGg|ZEAq8%bZ8U$*IL4*pOxYgYo$#;DmZ~U( zY`PRH%2wSxPh{r?c3wA{qn`Ws2m4AfCXGxbgqZ&_awOg8h5O&`%pqDrfM8$6g!r$49+YGRyuo~(Mvy_4tSj|JWeX7Kl%2UyRh6;jP zXb+ET8g54*8TRj0o*Y#hNBNG4ieLL;VDgpsMspi#PV1&QlIJT?!HWVb<^*KE^RO&m zSq?X{JNx-L03;yf(}BO+NTmpck`Hh-aI6_|;*atak5TjESd1rp?HkCU1`J{^p~UVW#&N`tqah4)w~8k0 zBNpSHTI|Q2)KrJplp|3y#uWt+x5|^;F^#&RHJ70tx`g@}Xf-%UY5}Q+3e`xesX{Fz z)m)(#ky>1#T1d54s5Vlss!;8ut_!IdED?N&y&9Ot^)tAkhM`+JOjq`GU&b;D-WUjy zT2AVw3e`bsMTJ^PYE^~mB-IsA(^%afZ;v;x>7K#b7!DHco<(mCQ7M&ZPc)}ihf;~= zb!#hVPkTJTFQfNRd*Tw-i;LLMU&|6`uf2$kvH)U!4LR~4c$z7AhJk*TU#HJu1zx~< z{GGM*5>xOG9L2x*8T@Zdi5Sj`IL?U#?h~yzFIM4-*v#kKAf6Y8*$GGRk~oTgies!- zT_nV~Xc8H*L}bM(aYFQooY*Gvektr>8WW-)clo7IC;BjgQI^74zJ$kcfTeH__v0XW zF}#T5crAHx+U>_7VhPIE;cjBJI86Vy5e7PrRCFAz=r~f*akQf2SVhM%)HbPdu!V)* z$9=M2wAIahGuTwaG;cmnI?{8D!);O`kb_P?WIV@xsSE}P9W?M0UH(h*lRbbPAzU89 uWg%=2VOt1WLbxb|3q#l#!UZ8zL-;)Yia+!332z}SeR?Z>c^lr2cl;L`SbwMh delta 541 zcmYk2O;1xn6o#Ma$DQ8kPyykpfFG#HSD}DKKtM&1S^-_)#$`h;4WubaDTJLX_mZoT zEqgXXLT*^_1Na9f#-Cz5w~)vrbLPzZ&Uxm{{O^Jf_F+gkD1* z{e}Ss4OxaB@jt99di$3D`rL5WiWXZRAN>XqBDIP1>TflFtxpc$s5jDkL6~I3@X0oEQ`QDb3CX{a x;2acm33RxQW!*94-O z=|cgf>98$1$5FTk|}Vx9ReM z>G_+cU$R}jvF*HeEytfyivo##x7F0m4J%L_zNBilu6@w>_v?;syPoA7?U;VeHR5=g z#4D7OxPhB&(lk7smzCMYd=fj@Wn3}rwt&bptb0a-p(+sfPmM5^32E145M8=HG?J&2)M{b>fV= zT9IBED7Wu7`S^;#okmYuJoR$szwBP6Zt8yVA~SuFLZ08*L z@W(g6>n%oq5bZEuvp*oRG9shjp}ft?9vKTkTv7`@gVh$eMNAa;|BUUN+=jWF9wmq5PMG{gEUkOqks{V zFp4t9@CM^}&r=@poF`oMk!SqOGk#&EJFJon=fo85@h*z{93!kW&8vbe9^fvc1XoS) G3eZ2%cf#@j literal 0 HcmV?d00001 diff --git a/target/test-classes/TestGetClockInPoint$2.class b/target/test-classes/TestGetClockInPoint$2.class new file mode 100644 index 0000000000000000000000000000000000000000..69868ec7c214105098ddb605bf85f67c85a059dd GIT binary patch literal 960 zcmZuv+fEZv6kVq+?Y0)N2f26wZv{)G?X(31ig>Bqw15eS4<;tlnJJxin1RmJRN|Ab z`ZK<0;)5UH2l;5+)1iq8WHS4#v-aNWtaJJO_vbGFbJ&ez60?LXAs5F4@&tuYAQTBD z!W?0qut0c3SR^bFmI-CT3gIzfmGFe{l<~xN5MtfhaSnfT>+smY`S`jVL>3~o#?IlDSHYn_!+m}@_5U- z*L2;cz(8SfSz$hUs_WhQDOZ*Js+!hisZepAvEFTPw_q5pX|C=k#*`)Q$`(o-KlNgk zb$Xp{UFQPUZw2~_U*p?ooY{!9dfp=K6W?v9z#c~~IEGYFAn6}PzT=rzep7WD+v>5v z@CCJO@<=spfzkB4YOlvq?Zf<@*XH9Z`*#{X?(nV`)Bk06YfVG*%IBGx^Ar?*ca!`Y z0l`1t0FQSW{Xw|Le9ioT$jFcke@EnPMh?hm0Ai8?a7o4kaJkPUps literal 0 HcmV?d00001 diff --git a/target/test-classes/TestGetClockInPoint$3.class b/target/test-classes/TestGetClockInPoint$3.class new file mode 100644 index 0000000000000000000000000000000000000000..c371cf6ce871eef4e1a23a60c18957a8d3f2f01c GIT binary patch literal 633 zcmZuuO>fgc5Pch)WN{6pF8!c<6lee^RU7A{5E8^CqEIP?O0C*MPa9{IY;o3=z3%_& z1tbpq0Dcr=ob-Uy9Cqf-+c&c_vw!~n`VF9kZ3iwkI39C6aj<}=9M3p5Ii7R8;CRWg zRYJLhR}94uN-Oh`!SXAo40bObN`}S0((-FI8OY>B3?gE@ejJMER3s{oZ%EsWRm$KV zXf2aoB+^t;xYj?Bsrf8TFN(wO2l^;h+LW7J2In}=l2GoeyyE&C)$WD367>8h9Y%4g z^ypBUaXc*HwTn0KUEITc2A-;sHflmec+l>&_Buh}qJk}OB4dj(V_XtFA^HTnlhE@Pq3<2@T?!O z&#K-XuQ&rGkI%qe&&k0xB^B_1>;{Tt-@?W_D%i#<-eVIT_~>GZZroX6cz8&Wg%z>| UQmv7+W-In literal 0 HcmV?d00001 diff --git a/target/test-classes/TestGetClockInPoint$4.class b/target/test-classes/TestGetClockInPoint$4.class new file mode 100644 index 0000000000000000000000000000000000000000..bd9c0e4d2ff5bc4e7f308e35d52b11ec834d7083 GIT binary patch literal 633 zcmZuuTTc@~6#k~Ww&Su2EOHT41gdUpu-j4+q=1?Rm85_P1Rs2wZYS;Fc9!hU`oDaU zga?0sKgxKv<-vqL%sJor&SlQ!&)=Kh0GfF1z{N7h3da)%Q+UepjANDKIma5uI>$x{ zn6!(-?=77QSD;ErQJMKw_>5kI!BpY^RaxS_NF zNjnm0D#={zoXgaFlBONS;rAo`C05#$n=Jy-bgJoDyn@J>EKvgG0aVfrHu`R(hLj!x6UXh61rbI zGYK`{$~S6VWrktL|Id5cy_BJ8-DN6wDFk#sm#zvhdNe=jX+nKiBc@Wl2CI4n&-w-X zYt_5w7000D@iDmXIXU=ANd?T1Tt<=P9&GGW!2>Md9aixkK0aWUJnpzKJUk-H!aT_W UMJ`S3yzl+ zR4aJJP=2qpG9MT$zjn!BcapwjnC~hrKjovIOfN()CdTU~k%%uvstWs#w9Qau4DPAc zGVR17%OsgA-3ytSV`(~Z5`90_UlOHFwbf>D&XYWiuPhxkE2Fo*nFdeAsG zDK+0NHfmkxhGEbD&-=M|B_q?m&(!Wy2Iu+gD{2Ux}-wr~U=$5NPxOsJ>KMnO6*!-#BBid+A6rEJsSq55;sSvr{oli1DH{7Ri~&RB2z5wwb7$!R>1; zvtA7Ph7JEqG|NeZ9=A?R zM$LE2janClVL0^v^L`wj%h+_UGL5Sg0=l0|R|Ob7nxFJCp)sr((`fz#YkC#W`T_fM z)4S$X=b+~CIk@gQCHPKB6|9ilMwR3-Z1kz%J8a-Rb`ZhG0ITG2=Y`?n7Fib7NmeLo SleCR3+{PLqhoY891NUA6?9o$DI_0hbLrNSR`4X TsAbYNR`3)HgdB>RB@OU@qxgwy literal 0 HcmV?d00001 diff --git a/target/test-classes/TestGetClockInPoint.class b/target/test-classes/TestGetClockInPoint.class new file mode 100644 index 0000000000000000000000000000000000000000..a81fc98d37bcc03fb9c8c10140cdb4f0e5df1d1b GIT binary patch literal 7207 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 RYQ1*rw%Zx}>Z`@;|1T|Ac&-2d literal 0 HcmV?d00001 diff --git a/test/Test.java b/test/Test.java index d45c347..eacb23e 100644 --- a/test/Test.java +++ b/test/Test.java @@ -1,11 +1,25 @@ +import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd; +import com.engine.attendance.attendanceanalysis.service.UtilService; +import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; import com.engine.attendance.enums.AccountingUnitEnum; +import com.engine.common.util.DateUtil; +import com.engine.common.util.ServiceUtil; import com.engine.common.util.Utils; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import io.swagger.models.auth.In; import weaver.general.Util; import java.time.LocalDate; import java.time.temporal.ChronoUnit; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; public class Test { @@ -93,13 +107,48 @@ public class Test { // System.out.println("aa|aa|ss".split("\\|")[2]); // AccountingUnitEnum accountingUnitEnum = AccountingUnitEnum.HOUR; // AccountingUnitEnum accountingUnitEnum2 = AccountingUnitEnum.HOUR; +// List> lists = Lists.newArrayList(); +// lists.add(new HashMap(){{ +// put("item",102); +// put("betweenMinutes",15); +// put("itemduration",15.0); +// put("pointTime","2023-11-14 09:00"); +// }}); +// lists.add(new HashMap(){{ +// put("item",7); +// put("itemduration",1); +// put("pointTime","2023-11-14 13:00"); +// }}); +// lists.add(new HashMap(){{ +// put("item",11); +// put("betweenMinutes",13); +// put("itemduration",13.0); +// put("pointTime","2023-11-14 18:30"); +// }}); +// lists = lists.stream().filter(e -> e.get("betweenMinutes") != null).collect(Collectors.toList()); +// lists = lists.stream().sorted(Comparator.comparing(e->Integer.valueOf(e.get("betweenMinutes").toString()))).collect(Collectors.toList()); +// +// System.out.println(lists); +// +// Map param = Maps.newHashMap(); +// param.put("qjsc","0.5"); +// System.out.println(Double.valueOf(Double.valueOf(param.get("qjsc").toString())*60).intValue()); + System.out.println(DateUtil.getCurrentDateMinusDay(2)); + //System.out.println(lists.hashCode()); +// List lists2 = lists.stream().sorted(Comparator.comparing(e->Integer.valueOf(e.get("betweenMinutes").toString()))).collect(Collectors.toList()); +// lists.addAll(lists2); +// lists.addAll(lists2); +// System.out.println(lists2); +// +// System.out.println(Double.valueOf("1.00").intValue()*60); + // System.out.println(DateUtil.getTime("2023-11-15 10:00:00").compareTo(DateUtil.getTime("2023-11-15 09:00:00"))); //long numDays = DateUtil.getBetWeenMinutes("2023-11-08 17:40","2023-11-08 16:30"); // BigDecimal duration = new BigDecimal(5); // BigDecimal hsl = new BigDecimal(0.6); // System.out.println(duration.divide(hsl,BigDecimal.ROUND_DOWN).multiply(hsl).add(hsl,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue()); // System.out.println(DateUtil.AfterMinutes("2023-11-08 15:40:05",numDays/2)); - System.out.println(Integer.valueOf(Util.null2String(null))); + // System.out.println(Integer.valueOf(Util.null2String(null))); // List> clockInTimeList = Lists.newArrayList(); // clockInTimeList.add(new HashMap(){{ @@ -120,10 +169,8 @@ public class Test { // put("signtime","11:05:43"); // }}); // System.out.println(Utils.getNearestClcokInTimeCmd("2023-11-12 08:46:43",clockInTimeList)); - - - - // System.out.println(DateUtil.getTime("2023-10-30 23:00").compareTo(DateUtil.getTime("2023-10-30 22:01"))); +// + // testGetClockInTimeItemCmd(); //System.out.println(DateUtil.beforeDay("2023-10-31",1)); // List> personGroupOrganizationList = Lists.newArrayList(); // personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}}); @@ -151,4 +198,165 @@ public class Test { long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); return Math.toIntExact(daysBetween); } + + + /** + * 测试获取当天打卡测试类 + */ + public static void testGetClockInTimeItemCmd(){ + String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(2); + List> dataList = Lists.newArrayList(); + dataList.add(new HashMap(){{ + put("signtime","23:50:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-11"); + }}); + + dataList.add(new HashMap(){{ + put("signtime","01:10:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","01:20:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","09:15:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","12:17:00"); + put("id","49"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","18:17:00"); + put("id","49"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","01:17:00"); + put("id","49"); + put("userid","53"); + put("signdate","2023-11-13"); + }}); + dataList.add(new HashMap(){{ + put("signtime","03:17:00"); + put("id","49"); + put("userid","53"); + put("signdate","2023-11-13"); + }}); + + Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); + List> schedulingList = Lists.newArrayList(); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","0"); + put("tqdkfzs","120"); + put("sfkt","1"); + put("dtjssj","09: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","01:00"); + put("thdkfzs","120"); + put("ksdk","1"); + put("rqlx","11"); + }}); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","1"); + put("tqdkfzs","60"); + 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","0"); + put("dtkssj","09:00"); + put("thdkfzs","60"); + put("ksdk","1"); + put("rqlx","11"); + }}); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","1"); + put("tqdkfzs","60"); + 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","03:00"); + put("thdkfzs","60"); + put("ksdk","0"); + put("rqlx","11"); + }}); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","0"); + put("tqdkfzs","60"); + put("sfkt","1"); + put("dtjssj","21: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","18:00"); + put("thdkfzs","60"); + put("ksdk","0"); + put("rqlx","11"); + }}); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","1"); + put("tqdkfzs","60"); + put("sfkt","1"); + put("dtjssj","01: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","21:00"); + put("thdkfzs","60"); + put("ksdk","0"); + put("rqlx","11"); + }}); + + Map>> schedulingResultsMap = Maps.newHashMap(); + schedulingResultsMap.put("2023-11-12",schedulingList); + schedulingResultsMap.put("2023-11-13",schedulingList); + schedulingResultsMap.put("2023-11-11",schedulingList); + + + Map params = Maps.newHashMap(); + params.put("date",beforeOneDayDate); + params.put("clockInTimeCollect",collect); + params.put("schedulingResultCollect",schedulingResultsMap); + + Map beforeOneDayClockInTimeList = new GetClockInTimeItemCmd(params).execute(null); + System.out.println(beforeOneDayClockInTimeList); + + } } diff --git a/test/TestGetClockInPoint.java b/test/TestGetClockInPoint.java new file mode 100644 index 0000000..dca043d --- /dev/null +++ b/test/TestGetClockInPoint.java @@ -0,0 +1,197 @@ +import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper; +import com.engine.attendance.enums.CheckBoxEnum; +import com.engine.attendance.enums.ClockPointEnum; +import com.engine.common.util.DateUtil; +import com.engine.common.util.Utils; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TestGetClockInPoint { + public static void main(String[] args) { + + List> schedulingList = Lists.newArrayList(); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","1"); + put("tqdkfzs","60"); + 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","0"); + put("dtkssj","09:00"); + put("thdkfzs","60"); + put("ksdk","1"); + put("rqlx","11"); + }}); + schedulingList.add(new HashMap(){{ + put("edsc","9.50"); + put("bdlx","0"); + put("jsdk","1"); + put("tqdkfzs","60"); + 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","03:00"); + put("thdkfzs","60"); + put("ksdk","0"); + put("rqlx","11"); + }}); + + List> dataList = Lists.newArrayList(); + dataList.add(new HashMap(){{ + put("signtime","08:45:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","09:15:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","10:15:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","13:01:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); + dataList.add(new HashMap(){{ + put("signtime","15:30:00"); + put("id","48"); + put("userid","53"); + put("signdate","2023-11-12"); + }}); +// dataList.add(new HashMap(){{ +// put("signtime","18:15:00"); +// put("id","48"); +// put("userid","53"); +// put("signdate","2023-11-12"); +// }}); + System.out.println(getClockInPoint("2023-11-12",schedulingList,dataList)); + } + public static List>> getClockInPoint(String analysisDate, List> needClockInSchedule, List> clockInTimeList){ + List>> clcokInTimeData = Lists.newArrayList(); + + for (Map needClockIn :needClockInSchedule){ + if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))){ + String dtkssj = analysisDate+" "+needClockIn.get("dtkssj"); + String dtjssj = analysisDate+" "+needClockIn.get("dtjssj"); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ + dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj"); + } + int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs"))); + Map> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj,clockInTimeList); + String timeType = ClockPointEnum.EMPTY.getKey(); + Map> clcokInTimeMap = Maps.newHashMap(); + if (ksdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){ + timeType=ClockPointEnum.EQUAL.getKey(); + } + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()) != null){ + String clockInTime = ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signdate") +" "+ksdkNearestClcokInTime.get(ClockPointEnum.BEFORE.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.beforeMinutes(dtkssj,tqdkfzs))) >=0){ + //打卡时间大于等于最早打卡时间 + timeType=ClockPointEnum.BEFORE.getKey(); + } + } + 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){ + //打卡时间小于结束时间 + timeType=ClockPointEnum.AFTER.getKey(); + } + } + clcokInTimeMap.put(dtkssj+"|"+ClockPointEnum.START.getKey()+"|"+timeType,ksdkNearestClcokInTime.get(timeType)); + clcokInTimeData.add(clcokInTimeMap); + } + if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk"))){ + String dtkssj = analysisDate+" "+needClockIn.get("dtkssj"); + String dtjssj = analysisDate+" "+needClockIn.get("dtjssj"); + int thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs"))); + if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){ + dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj"); + } + Map> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj,clockInTimeList); + + String timeType = ClockPointEnum.EMPTY.getKey(); + Map> clcokInTimeMap = Maps.newHashMap(); + if (jsdkNearestClcokInTime.get(ClockPointEnum.EQUAL.getKey()) != null){ + timeType=ClockPointEnum.EQUAL.getKey(); + } + if (ClockPointEnum.EMPTY.getKey().equals(timeType) && jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()) != null){ + String clockInTime = jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signdate") +" "+jsdkNearestClcokInTime.get(ClockPointEnum.AFTER.getKey()).get("signtime"); + if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(dtjssj,thdkfzs))) <=0){ + timeType=ClockPointEnum.AFTER.getKey(); + } + } + 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){ + timeType=ClockPointEnum.BEFORE.getKey(); + } + } + clcokInTimeMap.put(dtjssj+"|"+ClockPointEnum.END.getKey()+"|"+timeType,jsdkNearestClcokInTime.get(timeType)); + clcokInTimeData.add(clcokInTimeMap); + } + } + //当有2笔需要打卡时,可能会有打卡歧义的情况,歧义情况取2个时间点的中间值,当打卡时间小于中间值归属前一个打卡,大于则相反 + if (clcokInTimeData.size() >1){ + for (int i=0;i> beforeClcokInTimeData = clcokInTimeData.get(i); + Map> afterClcokInTimeData = clcokInTimeData.get(i+1); + Map beforeClcokInTimeMap = null; + String beforeClcokInTime = ""; + String afterClcokInTime = ""; + Map afterClcokInTimeMap = null; + for (Map.Entry> beforeEntry :beforeClcokInTimeData.entrySet()){ + beforeClcokInTimeMap = beforeEntry.getValue(); + beforeClcokInTime = beforeEntry.getKey(); + } + for (Map.Entry> afterEntry :afterClcokInTimeData.entrySet()){ + afterClcokInTimeMap = afterEntry.getValue(); + afterClcokInTime = afterEntry.getKey(); + } + //重复 + if (beforeClcokInTimeMap != null && beforeClcokInTimeMap == afterClcokInTimeMap ){ + String beforeTime = beforeClcokInTime.split("\\|")[0]; + String afterTime = afterClcokInTime.split("\\|")[0]; + long betWeenMinutes = DateUtil.getBetWeenMinutes(beforeTime,afterTime); + + String middileTime = DateUtil.AfterMinutes(beforeTime,betWeenMinutes/2); + + String signdateTime = beforeClcokInTimeMap.get("signdate") +" "+beforeClcokInTimeMap.get("signtime"); + + if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <=0){ + //该打卡归属前一个打卡点 + afterClcokInTimeData.put(afterClcokInTime,null); + }else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) >0){ + //该打卡归属后一个打卡点 + beforeClcokInTimeData.put(beforeClcokInTime,null); + } + } + } + } + + return clcokInTimeData; + } + +}