From b56b72e12bd6441720fec610826a4cfd7cc5f458 Mon Sep 17 00:00:00 2001 From: liuliang <401809302@qq.com> Date: Fri, 17 Nov 2023 22:10:40 +0800 Subject: [PATCH] liuliang --- log/sdk.log | 290 ++++++++++++++++++ .../hrm_attendance/hrm-attendance.jar | Bin 159433 -> 167654 bytes .../AttendanceanalysisActionApi.java | 11 + .../attendanceanalysis/cmd/recordDataCmd.java | 147 +++++++++ .../job/AttendanceAnalysisJob.java | 29 +- .../service/UtilService.java | 2 + .../service/impl/AskForLeaveServiceImpl.java | 18 +- .../service/impl/EvectionServiceImpl.java | 14 +- .../service/impl/UtilServiceImpl.java | 141 +++------ .../web/AttendanceanalysisAction.java | 83 +++++ .../wrapper/AttendanceAnalysisWrapper.java | 77 +++-- .../UpdateAttendanceResultWrapper.java | 19 +- src/com/engine/common/util/Utils.java | 19 +- .../AttendanceanalysisActionApi.class | Bin 0 -> 736 bytes .../cmd/recordDataCmd.class | Bin 0 -> 7271 bytes .../job/AttendanceAnalysisJob.class | Bin 3836 -> 4662 bytes .../service/UtilService.class | Bin 713 -> 956 bytes .../service/impl/AskForLeaveServiceImpl.class | Bin 4794 -> 5068 bytes .../service/impl/EvectionServiceImpl.class | Bin 4706 -> 4982 bytes .../service/impl/UtilServiceImpl.class | Bin 15724 -> 14312 bytes .../web/AttendanceanalysisAction.class | Bin 0 -> 6695 bytes .../wrapper/AttendanceAnalysisWrapper$1.class | Bin 1984 -> 1984 bytes .../wrapper/AttendanceAnalysisWrapper$2.class | Bin 1983 -> 1983 bytes .../wrapper/AttendanceAnalysisWrapper.class | Bin 18007 -> 19064 bytes .../UpdateAttendanceResultWrapper.class | Bin 15923 -> 16611 bytes .../com/engine/common/util/Utils.class | Bin 10704 -> 10741 bytes target/test-classes/Test$1.class | Bin 569 -> 569 bytes target/test-classes/Test$10.class | Bin 898 -> 898 bytes target/test-classes/Test$11.class | Bin 898 -> 898 bytes target/test-classes/Test$12.class | Bin 898 -> 898 bytes target/test-classes/Test$13.class | Bin 898 -> 898 bytes target/test-classes/Test$2.class | Bin 569 -> 569 bytes target/test-classes/Test$3.class | Bin 569 -> 569 bytes target/test-classes/Test$4.class | Bin 569 -> 569 bytes target/test-classes/Test$5.class | Bin 569 -> 569 bytes target/test-classes/Test$6.class | Bin 569 -> 569 bytes target/test-classes/Test$7.class | Bin 569 -> 569 bytes target/test-classes/Test$8.class | Bin 569 -> 569 bytes target/test-classes/Test$9.class | Bin 897 -> 897 bytes target/test-classes/Test.class | Bin 4316 -> 4651 bytes .../TestAskForLeaveByDurationTime$1.class | Bin 0 -> 645 bytes .../TestAskForLeaveByDurationTime$2.class | Bin 0 -> 690 bytes .../TestAskForLeaveByDurationTime$3.class | Bin 0 -> 691 bytes .../TestAskForLeaveByDurationTime.class | Bin 0 -> 1792 bytes .../test-classes/TestGetClockInPoint$1.class | Bin 960 -> 960 bytes .../test-classes/TestGetClockInPoint$2.class | Bin 960 -> 960 bytes .../test-classes/TestGetClockInPoint$3.class | Bin 633 -> 633 bytes .../test-classes/TestGetClockInPoint$4.class | Bin 633 -> 633 bytes .../test-classes/TestGetClockInPoint$5.class | Bin 633 -> 633 bytes .../test-classes/TestGetClockInPoint$6.class | Bin 633 -> 633 bytes .../test-classes/TestGetClockInPoint$7.class | Bin 633 -> 633 bytes target/test-classes/TestGetClockInPoint.class | Bin 7207 -> 8545 bytes test/Test.java | 35 ++- test/TestAskForLeaveByDurationTime.java | 36 +++ test/TestGetClockInPoint.java | 53 +++- 55 files changed, 816 insertions(+), 158 deletions(-) create mode 100644 src/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.java create mode 100644 src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java create mode 100644 src/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.java create mode 100644 target/classes/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class create mode 100644 target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class create mode 100644 target/test-classes/TestAskForLeaveByDurationTime$1.class create mode 100644 target/test-classes/TestAskForLeaveByDurationTime$2.class create mode 100644 target/test-classes/TestAskForLeaveByDurationTime$3.class create mode 100644 target/test-classes/TestAskForLeaveByDurationTime.class create mode 100644 test/TestAskForLeaveByDurationTime.java diff --git a/log/sdk.log b/log/sdk.log index 943377c..88136f5 100644 --- a/log/sdk.log +++ b/log/sdk.log @@ -464,3 +464,293 @@ 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 +2023-11-17 12:25:10,031 [Timer-0] [A2] [INFO] - rootPath == null +2023-11-17 12:25:10,035 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties +2023-11-17 12:35:19,971 [Timer-0] [A2] [INFO] - rootPath == null +2023-11-17 12:35:19,973 [Timer-0] [A2] [INFO] - filePath == nullWEB-INF\prop\isSyncLog4j.properties +2023-11-17 13:44:24,925 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(SERVICE-METHOD) dynamic proxy... +2023-11-17 13:44:24,925 [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-17 13:44:24,925 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(COMMAND) dynamic proxy... +2023-11-17 13:44:24,925 [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-17 13:44:24,925 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - The business class dynamic proxy is loaded. +2023-11-17 13:45:18,436 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(SERVICE-METHOD) dynamic proxy... +2023-11-17 13:45:18,436 [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-17 13:45:18,436 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - Loading business class(COMMAND) dynamic proxy... +2023-11-17 13:45:18,436 [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-17 13:45:18,436 [main] [com.engine.core.cfg.DynamicProxyConfiguration] [INFO] - The business class dynamic proxy is loaded. diff --git a/out/artifacts/hrm_attendance/hrm-attendance.jar b/out/artifacts/hrm_attendance/hrm-attendance.jar index 82da355aca6407a35cdc92fb29cea3c07f8869f7..37c9771e5eaaaccee850e757be3a722e0bcc737e 100644 GIT binary patch delta 45649 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�~EmR7r!BNFfJH| z28K97<9OW!YU{=SVAsH%;LFa~Lbg4-WS}bfTNo8|j)Bo%F;JO846)U}8E7v9^3_cX zyo7Gl{)W&&<5U>+zd;!>WDa$gI6r7>1`Ta3qT&Vcw_FnWK>sWl6*y%EO+pKEXcF$X zgAdICVZ<~+-0oj=T=J2E`{n=-F!oQyy$rfaWh{VOfKSgAjGz=2L1WTl0r_42<8Lx4 zNNx#Hf(L(7&_EkYKn}3{{0HT|B_IhTOO!hQInycYMju1g_aa z1NI$JQN6P4a%B|y1BBTFg#QU6h-FhH0we`T?I5$)5fyEK;Mb)DDJZ=NBLoc;|Cxc8 z!wXwZc7~Q3(1toT*l!O7L8@yY%o!jAu^a$JfCBxW$_5M*RNI0EH`d`FVZ`Ec2IC4J zZ~*uKLd@S4bdcH+p!s(!q_D1_7Dp(8K}!Q{Fv=0~QNX|CtGImN2$>g-f5}V+GCM&Q zH2hO>c7jGbi{J|BKZfChEDq4rS#^Rg|2qtqWG#S<{qmC>bae)VfEKPoWc{|5n~BbEUl91-cJkD*W@S2>oCEke9n;r3MLHfg1?lAqG@R@6r%L k#CH+U#1-<1=f4zUVoep)YnNI=pmz)(5|W%T)D5Kn2b6gK1poj5 delta 37793 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 diff --git a/src/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.java b/src/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.java new file mode 100644 index 0000000..3e3eee4 --- /dev/null +++ b/src/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.java @@ -0,0 +1,11 @@ +package com.api.attendance.attendanceAnalysis; + +import com.engine.attendance.attendanceanalysis.web.AttendanceanalysisAction; +import lombok.extern.slf4j.Slf4j; + +import javax.ws.rs.Path; + +@Path("/attendance/attendanceAnalysis") +@Slf4j +public class AttendanceanalysisActionApi extends AttendanceanalysisAction { +} diff --git a/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java b/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java new file mode 100644 index 0000000..ad12648 --- /dev/null +++ b/src/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.java @@ -0,0 +1,147 @@ +package com.engine.attendance.attendanceanalysis.cmd; + +import com.engine.attendance.enums.DateTypeEnum; +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.Lists; +import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; + +import java.util.List; +import java.util.Map; +import java.util.UUID; + +@Slf4j +public class recordDataCmd extends AbstractCommonCommand> { + + public recordDataCmd(Map params){ + this.params=params; + } + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + // + 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"); + //进出时间 + Map recordDataTime = (Map)params.get("recordDataTime"); + + 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 cqzt="+cqzt+",fxrq='"+DateUtil.getCurrentDate()+"',xm1="+dayTYpe+","; + for (int i =0;i0){ + for (Map.Entry entry : recordDataTime.entrySet()){ + sql = sql + entry.getKey()+"="+entry.getValue()+","; + } + } + + sql = sql.substring(0,sql.length()-1) +" where ygid=? and rq=?"; + log.info("update sql : {}",sql); + DbTools.update(sql,userId,analysisDate); + }else { + 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,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(DateUtil.getCurrentDate()); + 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;i0){ + for (Map.Entry entry : recordDataTime.entrySet()){ + if (!"NULL".equals(entry.getValue())){ + cloumns = cloumns + entry.getKey()+","; + value = value + "?,"; + insertDatas.add(entry.getValue()); + } + } + } + cloumns = cloumns.substring(0,cloumns.length()-1); + value = value.substring(0,value.length()-1); + sql = sql +cloumns +") values ("+value+")"; + log.info("insert sql : {}",sql); + log.info("insert data : {}",insertDatas); + DbTools.update(sql,insertDatas.toArray()); + + } + return null; + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java index 83b7502..98281c0 100644 --- a/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java +++ b/src/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.java @@ -2,14 +2,14 @@ package com.engine.attendance.attendanceanalysis.job; import com.engine.attendance.attendanceanalysis.wrapper.AttendanceAnalysisWrapper; -import com.engine.attendance.workflow.service.ProcessSubmitCheckService; -import com.engine.attendance.workflow.service.impl.ProcessSubmitCheckServiceImpl; +import com.engine.attendance.attendanceplan.service.AttendancePlanService; +import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.engine.common.util.ServiceUtil; +import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; -import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.util.List; @@ -18,6 +18,7 @@ import java.util.stream.Collectors; @Slf4j public class AttendanceAnalysisJob extends BaseCronJob { + private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); /** * 出勤结果模块id */ @@ -27,16 +28,30 @@ public class AttendanceAnalysisJob extends BaseCronJob { @Override public void execute() { log.info("********AttendanceAnalysisJob start********"); + + String queryUserSql = "select id from hrmresource where (status = 0 or status = 1 or status = 2 or status = 3) and status != 10"; + List> userList = DbTools.getSqlToList(queryUserSql); + String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3); String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ?"; - List> dataList = DbTools.getSqlToList(sql,beforeThreeDayDate,beforeOneDayDate); Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); - collect.entrySet().forEach(e -> { - attendanceAnalysisService.attendanceAnalysis(e.getKey(),e.getValue(),modeId); - }); + + for (Map userMap:userList){ + String userId = Util.null2String(userMap.get("id")); + /**获得人员考勤项目*/ + Map paramMap = Maps.newHashMap(); + paramMap.put("startDate",""); + paramMap.put("endDate",""); + paramMap.put("resourceId",userId); + paramMap.put("modeId","204"); + Map dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); + List> attendanceItems = (List>)dataMap.get("data"); + + attendanceAnalysisService.attendanceAnalysis(userId,collect.get(userMap.get("id")),attendanceItems,modeId); + } log.info("********AttendanceAnalysisJob end********"); } } diff --git a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java index 7fdd32d..d0b8fda 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/UtilService.java +++ b/src/com/engine/attendance/attendanceanalysis/service/UtilService.java @@ -28,4 +28,6 @@ public interface UtilService { */ void recordItem(Map params); + Map getNeedRecordClockInTime(List>> clcokInTimeData); + } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java index be03fbf..2cfd064 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.java @@ -1,10 +1,10 @@ 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 com.google.common.collect.Lists; import weaver.general.Util; import java.util.Comparator; @@ -23,14 +23,15 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic //请假结束时间 String jssj = Util.null2String(param.get("jssj")); + List> needRemoveList = Lists.newArrayList(); for (int i=0;i=0){ - abnormalClockInList.remove(i); - i--; + needRemoveList.add(abnormalClockInList.get(i)); } } + abnormalClockInList.removeAll(needRemoveList); return abnormalClockInList; } @@ -51,19 +52,20 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic 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)){ + List> needRemoveList = Lists.newArrayList(); + if (CheckBoxEnum.CHECKED.getKey().equals(tybcndbjlhbjs)){ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); - if (qjsc > time){ + if (qjsc >= time){ qjsc = qjsc-time; - abnormalClockInList.remove(i); - i++; + needRemoveList.add(abnormalClockInList.get(i)); } } + abnormalClockInList.removeAll(needRemoveList); }else{ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); - if (qjsc > time){ + if (qjsc >= time){ abnormalClockInList.remove(i); break; } diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java index 3754128..443bf9e 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.java @@ -4,6 +4,7 @@ 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 com.google.common.collect.Lists; import weaver.general.Util; import java.util.Comparator; @@ -21,14 +22,15 @@ public class EvectionServiceImpl extends Service implements EvectionService { //请假结束时间 String jssj = Util.null2String(param.get("jssj")); + List> needRemoveList = Lists.newArrayList(); for (int i=0;i=0){ - abnormalClockInList.remove(i); - i--; + needRemoveList.add(abnormalClockInList.get(i)); } } + abnormalClockInList.removeAll(needRemoveList); return abnormalClockInList; } @@ -43,16 +45,18 @@ public class EvectionServiceImpl extends Service implements EvectionService { //请假时长,单位小时 int ccsc = param.get("ccsc") == null?0:Double.valueOf(Double.valueOf(param.get("ccsc").toString())*60).intValue(); //同一天可抵消多个异常 + + List> needRemoveList = Lists.newArrayList(); String tybcndbjlhbjs = Util.null2String(param.get("tybcndbjlhbjs")); - if (CheckBoxEnum.CHECKED.equals(tybcndbjlhbjs)){ + if (CheckBoxEnum.CHECKED.getKey().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++; + needRemoveList.add(abnormalClockInList.get(i)); } } + abnormalClockInList.removeAll(needRemoveList); }else{ for (int i=abnormalClockInList.size() -1;i>=0;i--){ int time = Integer.valueOf(abnormalClockInList.get(i).get("betweenMinutes").toString()); diff --git a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java index 4a40add..41f06bb 100644 --- a/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java +++ b/src/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.attendance.attendanceanalysis.service.impl; import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeItemCmd; +import com.engine.attendance.attendanceanalysis.cmd.recordDataCmd; import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceplan.service.AttendancePlanService; import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; @@ -172,103 +173,59 @@ public class UtilServiceImpl extends Service implements UtilService { @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(); - } + commandExecutor.execute(new recordDataCmd(params)); + } - 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 getNeedRecordClockInTime(List>> clcokInTimeData) { + Map resultMap = Maps.newHashMap(); + int inIndex = 1; + int outIndex = 1; + int jcCloumns = 8; + for (Map> clcokInTimeMap : clcokInTimeData){ + //卡点 + String point = ""; + //当天打卡数据 + Map clcokInTime = null; + for (Map.Entry> entry :clcokInTimeMap.entrySet()){ + point = entry.getKey(); + clcokInTime = entry.getValue(); } - sql = sql.substring(0,sql.length()-1) +" where ygid=? and rq=?"; - log.info("update sql : {}",sql); - DbTools.update(sql,dayTYpe,userId,analysisDate); - }else { - 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,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 paramMap = ParamUtil.request2Map(request); + String startDate = Util.null2String(paramMap.get("startDate")); + String startBeforeDate = DateUtil.beforeDay(startDate,1); + String endDate = Util.null2String(paramMap.get("endDate")); + String endAfterDate = DateUtil.AfterDay(endDate,1); + String userIds = Util.null2String(paramMap.get("userIds")); + String modeId = Util.null2String(paramMap.get("modeId")); + int betweenDays = DateUtil.getBetWeenDays(startDate,endDate); + String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ?"; + List> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate); + Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid")))); + + for (String userId : userIds.split(",")){ + /**获得人员考勤项目*/ + Map param = Maps.newHashMap(); + param.put("startDate",""); + param.put("endDate",""); + param.put("resourceId",userId); + param.put("modeId","204"); + Map dataMap = basicsetService.getAttendanceItemsByPerson(param); + List> attendanceItems = (List>)dataMap.get("data"); + + /** 获取人员班次*/ + Map classesParamMap = Maps.newHashMap(); + classesParamMap.put("tableName","uf_pbjg"); + classesParamMap.put("startDate",startBeforeDate); + classesParamMap.put("endDate",endAfterDate); + classesParamMap.put("pblx","0"); + classesParamMap.put("pbdx",userId); + classesParamMap.put("current","1"); + classesParamMap.put("pageSize",10); + classesParamMap.put("recurrence",1); + Map>> schedulingResultsMap = utilService.getSchedulingInFormation(classesParamMap); + + for (int i=0; i<=betweenDays;i++){ + String date = DateUtil.AfterDay(startDate,i); + attendanceAnalysisService.attendanceAnalysisForApi(userId,date,collect.get(userId),attendanceItems,schedulingResultsMap,modeId); + } + } + return null; + }catch (Exception e){ + log.error("execute fail,catch error: [{}]",e); + return ApiReturnTools.error("500","saveApplicableOrganization error"); + } + } +} diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java index 11e2673..8503e8f 100644 --- a/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.java @@ -4,12 +4,9 @@ import com.engine.attendance.attendanceanalysis.service.ForgetClockInService; import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.impl.ForgetClockInServiceImpl; import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; -import com.engine.attendance.attendanceplan.service.AttendancePlanService; -import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.attendance.enums.CheckBoxEnum; import com.engine.attendance.enums.ClassSegmentTypeEnum; import com.engine.attendance.enums.ClockPointEnum; -import com.engine.attendance.enums.PeriodOfTime; import com.engine.common.util.DateUtil; import com.engine.common.util.DbTools; import com.engine.common.util.ServiceUtil; @@ -17,7 +14,6 @@ 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 com.icbc.api.internal.apache.http.nio.protocol.O; import lombok.extern.slf4j.Slf4j; import weaver.general.Util; @@ -34,29 +30,29 @@ import java.util.stream.Collectors; @Slf4j public class AttendanceAnalysisWrapper extends Service { - private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class); private UtilService utilService = ServiceUtil.getService(UtilServiceImpl.class); private ForgetClockInService forgetClockInService = ServiceUtil.getService(ForgetClockInServiceImpl.class); private UpdateAttendanceResultWrapper updateAttendanceResultWrapper = ServiceUtil.getService(UpdateAttendanceResultWrapper.class); - public void attendanceAnalysis(String userId, List> dataList,String modeId){ + /** + * 考勤分析主逻辑入口 + * @param userId 人员id + * @param dataList 打卡日期 + * @param attendanceItems 考勤项目 + * @param modeId 出勤结果formmodeid + */ + public void attendanceAnalysis(String userId, List> dataList,List> attendanceItems,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); /** 打卡数据 */ - Map>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); - - /**获得人员考勤项目*/ - Map paramMap = Maps.newHashMap(); - paramMap.put("startDate",""); - paramMap.put("endDate",""); - paramMap.put("resourceId",userId); - paramMap.put("modeId","204"); - Map dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); - List> attendanceItems = (List>)dataMap.get("data"); - + Map>> collect = Maps.newHashMap(); + if (dataList != null && dataList.size() >0){ + collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); + } /** 获取人员班次*/ Map classesParamMap = Maps.newHashMap(); classesParamMap.put("tableName","uf_pbjg"); @@ -69,13 +65,6 @@ public class AttendanceAnalysisWrapper extends Service { classesParamMap.put("recurrence",1); 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)"; - Map>> overtimePlanMap = DbTools.getSqlToList(sql,userId,beforeOneDayDate,beforeThreeDayDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq")))); - Map forgetClockInParam = Maps.newHashMap(); - forgetClockInParam.put("classInfo",schedulingResultsMap.get(beforeOneDayDate)); - forgetClockInParam.put("userId",schedulingResultsMap.get(beforeOneDayDate)); - /**计算获取前一天和第二天打卡数据*/ Map getClockTimeParam = Maps.newHashMap(); @@ -99,6 +88,33 @@ public class AttendanceAnalysisWrapper extends Service { } + /** + * 考勤分析主逻辑入口 + * @param userId 人员id + * @param analysisDate 分析日期 + * @param dataList 需要包含分析日期以及分析日期前后2天的3天打卡数据 + * @param attendanceItems 人员考勤项目 + * @param modeId 出勤结果formmodeid + */ + public void attendanceAnalysisForApi(String userId,String analysisDate, List> dataList,List> attendanceItems,Map>> schedulingResultsMap,String modeId){ + log.info("***********analysis userId:{} start***********",userId); + log.info("clockInTimeDate : [{}]",dataList); + Map>> collect = Maps.newHashMap(); + if (dataList != null && dataList.size() >0){ + collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); + } + /**计算获取前一天和第二天打卡数据*/ + Map getClockTimeParam = Maps.newHashMap(); + getClockTimeParam.put("date",analysisDate); + getClockTimeParam.put("clockInTimeCollect",collect); + getClockTimeParam.put("schedulingResultCollect",schedulingResultsMap); + //前一天打卡数据 + log.info("getClockTimeParam : [{}]",getClockTimeParam); + List> clockInTimeList = utilService.getClockInTime(getClockTimeParam); + + analysis(userId,analysisDate,clockInTimeList,schedulingResultsMap.get(analysisDate),attendanceItems,modeId); + + } /** * 分析数据 * @param userId 分析人员 @@ -285,6 +301,7 @@ public class AttendanceAnalysisWrapper extends Service { recordData.addAll(evectionResultList); recordData.addAll(abnormalClockInList); recordParam.put("recordData",recordData); + recordParam.put("recordDataTime",utilService.getNeedRecordClockInTime(clcokInTimeData)); log.info("recordParam : {}",recordParam); if (abnormalClockInList.size()>0){ recordParam.put("cqzt",CheckBoxEnum.CHECKED.getKey()); @@ -304,7 +321,17 @@ public class AttendanceAnalysisWrapper extends Service { */ public List>> getClockInPoint(String analysisDate,List> needClockInSchedule,List> clockInTimeList){ List>> clcokInTimeData = Lists.newArrayList(); - + if (needClockInSchedule.size() > 0){ + String sfdx = Util.null2String(needClockInSchedule.get(0).get("sfdx")); + String zddxfz = Util.null2String(needClockInSchedule.get(0).get("zddxfz")); + String dxhs = Util.null2String(needClockInSchedule.get(0).get("dxhs")); + if (CheckBoxEnum.CHECKED.getKey().equals(sfdx)){ + //上下班弹性 + List> needClockInStart = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("ksdk"))).collect(Collectors.toList()); + + List> needClockInEnd = needClockInSchedule.stream().filter(e -> ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx")) && CheckBoxEnum.CHECKED.getKey().equals(e.get("jsdk"))).collect(Collectors.toList()); + } + } for (Map needClockIn :needClockInSchedule){ if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))){ String dtkssj = analysisDate+" "+needClockIn.get("dtkssj"); diff --git a/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java b/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java index a6816bc..c6c4d18 100644 --- a/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java +++ b/src/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.java @@ -225,6 +225,7 @@ public class UpdateAttendanceResultWrapper extends Service { if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){ timeMinutes = removeRestTime(kssj,jssj,scheduleResult,analysisDate); } + log.info("recordAskForLeave timeMinutes :[{}] ,hsl:{},hsdw",timeMinutes,hsl,hsdw); itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES); resultMap.put("itemduration",itemduration); param.put("kssj",kssj); @@ -287,12 +288,12 @@ public class UpdateAttendanceResultWrapper extends Service { 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); @@ -303,11 +304,12 @@ public class UpdateAttendanceResultWrapper extends Service { } } }else { - //按照开始时间,结束时间请假 + //按照开始时间,结束时间出差 int timeMinutes = DateUtil.getBetWeenMinutes(kssj,jssj); if (CheckBoxEnum.CHECKED.getKey().equals(zdycbcndfgzsd)){ timeMinutes = removeRestTime(kssj,jssj,scheduleResult,analysisDate); } + log.info("recordEvection timeMinutes :[{}] ,hsl:{},hsdw",timeMinutes,hsl,hsdw); itemduration = Utils.getItemduration(hsl,hsdw,timeMinutes,AccountingUnitEnum.MINUTES); resultMap.put("itemduration",itemduration); param.put("kssj",kssj); @@ -394,6 +396,7 @@ public class UpdateAttendanceResultWrapper extends Service { 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); + log.info("removeRestTime scheduleResult : {}",scheduleResult); for (Map restSchedule :scheduleResult){ String dtkssj = analysisDate+" "+restSchedule.get("dtkssj"); String dtjssj = analysisDate+" "+restSchedule.get("dtjssj"); @@ -403,15 +406,19 @@ public class UpdateAttendanceResultWrapper extends Service { 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){ + log.info("休息时间在请假时间中间"); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) <=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtkssj)) >=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){ + log.info("休息时间在请假时间 左边"); + }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) >=0 && DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtjssj)) <=0){ //休息时间在请假时间 右边 betweenMinutes = betweenMinutes - DateUtil.getBetWeenMinutes(kssj,dtjssj); + log.info("休息时间在请假时间 右边"); }else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) <=0){ //请假时间在休息时间中间 betweenMinutes = 0; + log.info("请假时间在休息时间中间"); } } diff --git a/src/com/engine/common/util/Utils.java b/src/com/engine/common/util/Utils.java index 177dc2f..855d109 100644 --- a/src/com/engine/common/util/Utils.java +++ b/src/com/engine/common/util/Utils.java @@ -257,19 +257,22 @@ public class Utils { }else if (AccountingUnitEnum.HOUR.getKey().equals(hsdw)){ if (unit.equals(AccountingUnitEnum.MINUTES)){ double durationHour = duration/60.0; - if (duration%60 > 0){ - durationHour = durationHour +1; - } +// if (duration%60 > 0){ +// durationHour = durationHour +1; +// } durationBig = new BigDecimal(durationHour); if ((durationHour/hsl) > Math.floor(durationHour/hsl)){ - itemDuration=durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); + // (durationHour/hsl)*hsl+hsl + durationBig = new BigDecimal(Math.floor(durationHour/hsl)); + itemDuration = durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); }else { itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue(); } }else if (unit.equals(AccountingUnitEnum.HOUR)){ if ((duration/hsl) > Math.floor(duration/hsl)){ - itemDuration=durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); + durationBig = new BigDecimal(Math.floor(duration/hsl)); + itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); }else { itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue(); } @@ -279,7 +282,8 @@ public class Utils { }else if (AccountingUnitEnum.MINUTES.getKey().equals(hsdw)){ if (unit.equals(AccountingUnitEnum.MINUTES)){ if ((duration/hsl) > Math.floor(duration/hsl)){ - itemDuration=durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); + durationBig = new BigDecimal(Math.floor(duration/hsl)); + itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); }else { itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue(); } @@ -288,7 +292,8 @@ public class Utils { int durationMinute = duration*60; durationBig = new BigDecimal(durationMinute); if ((durationMinute/hsl) > Math.floor(durationMinute/hsl)){ - itemDuration=durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); + durationBig = new BigDecimal(Math.floor(durationMinute/hsl)); + itemDuration=durationBig.multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue(); }else { itemDuration = durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).doubleValue(); } diff --git a/target/classes/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.class b/target/classes/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.class new file mode 100644 index 0000000000000000000000000000000000000000..9349073534969879d411e8f2bed56b8e659217af GIT binary patch literal 736 zcmbtS%We}f6g|#slF2|JJW2|*bb-`#fj8YHLK;PMHL5CFW$#SP#F1lHV<%}p3$XyP z-~;$5#GN!PBdW4tVc&D#$Jh7gukSwq9APg+9nS-7hj@W*3l;1Hc*#)JHe=`{HqW@z zpN?icu~{bbK0{-mjPma(=AbuXs15BzGHfNv$dkoL7saMv-7mAoP2dUn03D4{zPvx;HI=}fx z+Pj%p3Wn~-h4E@GN6IN;7aL=}C@K@VPEy2N@|EMc4+5eqMlA5nf|ALIVNAhoYb~84bDAwFGbG!&h>A@7Nf&|NhWpk$Rh7F|;!2um70g z?ZJ8kTnm%&p%%{ddv{j>`?M}~S|f&?f+e8}VHyD4A!(c>BUwNE3if&JZqwaZ8$(2d xqw4@Xz(dlS*t$*LUweR7r}7QeFQ^p-82%I}mh}^IXX!N&jq literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class b/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class new file mode 100644 index 0000000000000000000000000000000000000000..10cd8b3bfd876ee2e558caa1140cf4df8b192d11 GIT binary patch literal 7271 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 z TO!oQ^wY6s*F1fvpy6}V61#{u+iFaC`T-5gg5rUUB&%SCq$Cnp`wkyDGy=~y$9 zWTk}o-O~`itp?)FF`DK;JR>O&;?d}ySk!|t^|;cnhg_&4{`HM=`MCO=IQ#xsBp|cj zO@L%1))Fzwcs{wEpFGg z;|^^Y$Fy7VcI`Os)ZT}8X&=E|+9SAI`yt+~{S@!fevW&z(|E7Elf`^2pigdsjUpoS zOd2Ipjr7j}lyL-2B8i7^lvG%}h&3)n&#b~2ZbXDSKJM&`Qqu<=E_0~wT@IHPbv3^4 zoM@(Q`jZHzX*#i{!p z+^1ln_AHK(3Sfoy4BpNYDmH3Q;2oUPutWP4?&Mq@4ruq|o$O(P$ZPlDU0l_1i*^e& zEVAplU7Nt&r1)%2JY_#i&yoxXr?`KLa5-4w3> mEH=u9&+nhTawXhxjmO6?$`m?+|x&(#hj>^}hy3`f@7( literal 0 HcmV?d00001 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class b/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class index ab0aff6766ed93c3d15f804730bebc195f9acee6..904c643266609c048c6cb1e88fbb9158af0d3a9d 100644 GIT binary patch literal 4662 zcmbtYS#%TE8U99=HS%ZxS8NqDL98*xi7+8cZI)tFf{6??Hc*moW9eERdo&|vMu5A} zCF#DTO}C`!zJxAmn}m?qX_L|=UD9-W>_eaW(#Q7nt>={VyE7wc1ZK%;a*pOM|NZ{& z{@eY{OBbJe0l;?rMMEF%Q}GrJZ^heGyuAy(c!vr@ekbHlDUEUl0+VS}R7`0wF|A<+ zRvOg|Hp0#l$k$NE$qY{6w2E1|{LT#Cg?G!J_oQ(qgJpQHhWFw98a{yg(|90_56Z<4 zrSai3K9WX%8XwIdiI1i6aTTACnm?%_g-@mNU>cuR@fi&d;j=0}r=Y`fDhjei$E_4R zYjXQ^q3Bd9!W~qwWWw;wk|+Ez;hr>0Lc!i*$*C5ET`_G@FnnLwWy3DThc(Nv3tlK+ z*wd6a%;gA$z^STJ79(Y;cG@^;6u4O_jQOrI%>G4oJWgE zf6DZ($0kim)6T>KbPhNZq@s$`qEz>(ELErdq;=9Y!!@d-Mom%*3|03{tH1>*Up9Or z+-uou#1~ak>W)blP0yF&5;PFkPt=7wdxX=m6Bd=o4JpK1PKZgz72{K`5POZ;y@q7d z9WEZSTT2~Ya8MEm52_`{vP6jxE7}b;TWc8WwiqSS*m1ezV=IRyrinJVi@fiOos-I< zgAGGmCyqp#jv-x*K>+>#sFKPSjrm4thH8RXVZy2SJTsB`tl|qas%2Cs%EpGs=Nq;w zSl`pmZ*X(WAkExR=#lh}k`;xmHs;jblGta;AYIi;w??Ehv~H1sqvJN*uHf!hmAz)Q zX2rramck?4QSn6`591L9L$3<8MKT7cqkydn4qOYVnMv17ZXLH`yN;W2i-Nx1=)ack zn1S+n&o^AZA*13;Iv&NB88DuZL7g|t`AOHQ=BM1ME4;wq`BPKE75RJ*kNR~lzcarz z@3;~uob|WOwzbV}-JH)GcDW(Ec4xkySMP2W!Z7+(d_~7s@ii4+*YOQ}Q^8D=PoK}Y~ZdO0fmDW~i$N#Q%)c#NO3-8ib_yZD}p@9X#h9#`>09S86u27glsnb{(4u+ZGF9;W1&E+#NO}zsK^8l?yzNe9?MJ{iYp31-bWZLW!;x{1~j*6PdW;g$I+q^ zC7;n7+Ynp4_D+mDj>Y#$mz+*m<4*W|+_3=8eX;5nJqJ-iY}RLTTXQ8%Op5UOE2wI? z?z+PEWeAO$cHQIKCdrR1SYcBPcVSc&tnP^`3|D27!p%VqFXGqqXq=d zwcqfjIFmsVH(<0(l#W`R#O_?c{Z|az_M5HZ&03WxXxoNn4-40GYz6ta?a8BI?!d=# z&U#=pTkFPC#$GATC%SR0sgTJwxbQq67oCt9yzCGnQ&~X9D^XTl&rh;+mJk%$H<9G6RF*^9WjB1vn8>{hp&h!uf0~q8?!Hx!a zVg{W&0bG0v>1@|Lv;?x5;+Br*q0eE_C>1O|nB>nuGP`7;GuPS4jpH3Rj~!3ul4Fz@ zNaa%V=vLS(yat#9IaG>-L70$_OLpy%}Lh5+vZHV!P} zmYUOYYEw&ND<`)$J%gLhzA`PZ+!I_`S}zG{y`!`ma3eJ2v4}2Pf%UZE297rJ|4p=J z5ALBOYuJJ_bmRSWO>Mu6+7n}M=oBE5?AL<&Vt`Kds ziFS}Ehlq9)60hK1bg4M3;!P^<34S>U$73qSf&bv)ZcP>((w9+vdlc1rZ+3Gd4xZq8 zB5*@02-u#$Y+>-~I7a$F8gFg{FRv`~0_e*2&SA?rq@^GE3h*}sSW3Gb=PW^bFY~K$ V_a$2S_sGHFTte3#vVGHp}RNlhj|MU7Xy zgY>8#bQUk!&5(XS#*vSS|KDuH*`n`t(>_uQ84q zv8-j(v~{XD%;4%bt@JDd-)@>lx-Y3`GDe1>ynZE4jUCqAFv7qLhLZpFGTiXU28OjZ zlo)hYi5X|RyAJgXI|Nf2#A#L?QgMXiC}ufo5#gxD&ElM^E$|S>F+8l|5spWZ6XR|( z#}KqjOX}uC>&~$$Dp$p09FOA(jwkUH`Fm3-D`TbgnIXfPOvN(=Zaf{taoU~L%TmWL?%n(o|-DMD+An%$T9fSpA%`CB8g+JZr|RM9OUKOPQJMw2>yPWqq^X zQ^!;3emyqHP_=w`ZcLR!71{I`yH51QKHpyP8y^mS%<&06=eSd9-HDB&+20=ck{%mOr4D6h z7=Er7fB3`Vtp9@Z0z<7R43voz0aZ)~nsQFj> zX7V%I3mdP1HHMUVIIcqZ7S6Biltx9=r@9`V{vNxdU{P#5cj_ zwnV%DyUj2`&hXg)DTpV4mO1ntRjjC_*? inQ9qXCigQLNU<<7@G|f*Ffy zx&e&C6%{VrX~7gLthkHgZVRTVSc+v96scGaw-pLjNKwP#v0#D<4fm+1#Y$rrSiN{qufhR3^O2yOIB*jL#<1CeV8xz{9511zyBU9NPq5#&&@n*eP9iG4#3STJB!W@ruB!Xye!|@ETqhcmsO`+Ob#QO}xcm zpW*ihngWgP)#X}XrQg$JGh?3}duRymx1(I(0N&;}C~ydeIgSW);2nW?5hjnLc5I=c z(~d;~5p;39CvXhM1-kJ*#|eQC@FB-X0w3cOfs;5TwbKHhVkgHLfwMR#@R{@p34D${ zl<5jB(5z{`@;YDY+JM%?@r8`}Qs67>68IW>JC2)XvC<(m{)YTozrWV2<&)ar_tD_> zYBd4cbgCi^I;C1_I^D9@>6V~MH zYKEjny>OxB)*+$GJlpaOzEzQn?>aIqc4o=Nc{#h#F(v6DGuLW?xmrso#acEh8pU8H z@abMJ$M*sk@uR>Jd8>=1ScpZTt=94E=g>LpRpl3k%+M8)5xO99m*x`x8S;pHoJL{- z$uTsOBcsuja}?|_DF%!sY1WN46p${W4!D{62&9ikA$d_SYk?6KvTY76?~@tqgk_S+ zSZH>bT@fTP>_(-_VU9pG-~_D6A_AiUoiI=0d7bFv)rlv6SLF?4|*z6ere1^Y+fkTq2*;%lk27W~&@Z{Pq>Oj-oa>tf4u zlhgG*PJtWSkrAJUF|ZSZ!Wi5i8LK)mG>l<|N^bJ-UiO$I&&)?KB8-tvQy7`suuKvz z$e?%%xr1*-(&gYORGj9xbBt`fr@iO6%SptQWNSyM z1iywoG43uooroPw0JrH**?N3Zt3*8Q%8MZ9diE{_T@Cf3AR=Z_Llsj!YpBUKQ$cnR zHQR__2Z@;7M9oW7wqJ>kSBZ+hk*x7S z&>W?#w>zd$Z&?4Nii}HW61$3pK`bIN%QtNz?IYhbTh4U_lFvrs>ozvwb+h4ix?B(r zJ)|+1k{C?CILt|Kr5(x*y*EY&3P$^@Uld7C$^?V0h!H3~(fg#JRYp=cbTK`^auYd1LSv{HI zi`RNi1DJ|$Ol0E@4~mjuVyVP34~k9Pi5d^4Cqu__CGL_~;lUIWD{;4pRj5_Q)k@U) zh|-XZ_1Ivd5gV1(LN62;Z|@L8 z>{WV!D6q%soVjro-gts#jgE$qTm7M{j#<+4X$ zz;&0Z+D#JASa=q;#B&y&#|su-#2yPTVXuI}UXgg!3gb1rE^)xZK^(I12HvDc#EYFA-tuChg~NDT;)sQ#c*nxKcu(S(h2uCO z(P`m*d|)AplS=Ed(2d;^Jr+*kLkl0FgGH?lhPDQSO;rs|ZJ}VR#A)UFv4t}@D^OW? z!YCE?E_p>7Ey0b=TY~mMPtKT6@Tq`5yV9w)v9@V#{({x(gLR?eoEj5Z_^k6gk5_oI z@VT0u>-;(CdtqNro>Np?UtikTD3Bfxb{9s60H-;pJhV`mk z-%w|d^N_9xM)ggjNbkb1D25Nlhz(sB6~*X6J=Zs;pB3&C7@O{nB4aNW#|Wg?7aD$} z10?~!(NCjsPJn|pK8nmj>DT@85Yp68Ul`UMUxz$~Xg7Kzy=Nn+_&Z+F|G*;&xu?R3 zAj!eG5XkGs4KyT>v4&g#yJfLU+3e2DFt0})X||gL+eeB;*p?`1b%m7rfuy=hLj6Q4 z{X+Y%C=qUyiVT#A9F&X6WJv*S#i$VF?4G)IYxrniA(7`3OY)g2bBJp&CN*XwuZm+f z)n9~T_fx5HHjAP-o3q78R5Aq@lZ&E?fI3q=jB4`Q?eKaG*J6saIru9h&R z3?%)D7Khm7HR2k^2}SQ>Qd|22;UqCNf#hCOJxAoCB6$&^)GL!R!I#)Xb+r@Un@LXL zF;=Hw5f2Z9;nNm}nH`52)CY48Qjb7)u1zaqxmnO_M+6( xb=Tj&iT{bhL%Gc<;C6h;(Inm%_zD-1j(X13kp}r+gSA)}*P7$nCO$MRe*w&vTLb_A diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class index a4630fcba85fcc51335552fd020a59bdb5e6b7be..0f29e3a2c0277f15c4e1376342911fa045f6b48b 100644 GIT binary patch delta 2303 zcmZ`*`&U#|6#mYgJ992~jxvISfbVBKLs2m?1r&vpS5RqID#8s>Ujtf(*jo`OTa`Y!{F7` z>#DQX`s*9ABoxQ90?*-jju!+r<3)ij*eXr8F$}tFT3X%A@shyHc!guTzz)1BuoJrk zUPDmeb-cmgnd|fUTm3E7&83Eam9Mrn)`d4c*hQbfZVzq}*n_@?SW0Ti<@6L_jLA?>33gZKby-$i8q}H&yY!Mtk<;kSB!vT%V^9(&5yIeY7@wr}TW>*pk~8WTMy!Ix9WEB^-II~z48udqjQtc+ zg}i1qT@HvR=|vzB!!Qv^NJBEN!Elsg1Xf@qnlOs`EEydbiwziOt8XI{ZCZFPq($h-$}D;Y6r`|hlo1ylbi*^m?_8owCr;S>q}zs3 zL6>t`L`|bJ2{#KCQ7sTjR2!p^Fl^5#Wv3(NZ?srcEndocsS;X0_7*c9uvkp|%_H`@ z|Dp*nZ6J-WkJ1>$L~2FSo5@yoSgmYNoD!=f3HE6;Ra)7p$_BHik=&8@jx>o!M`Zw2 zv_WHuYNe1y<11~z^UGLDzgX#3EE_KtH&CyGaA;sgU=~DRhD2dbfU7~Mjy(j_|I%p| zP{2kSVk22??t~JX&j^%8@&AERcl{@5YQNiEiAnL7Sn1qM+>!rbpizDvKjM3ue`{z% Vj-dwnZKUbvi)ia2S{v>}`@h`9nD77q delta 2081 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 JrBNw$_y@XOxflQd delta 7205 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 T!<8qfYZB1f804dKY4m>qz-yNK diff --git a/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class b/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class new file mode 100644 index 0000000000000000000000000000000000000000..852835aa49cb6f9dcdaa308b40eb2a271802f196 GIT binary patch literal 6695 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 Ya04iNli?N+zG1k{@Q>ln5dZ)H diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class index bb801df78140eb829259b73194274ad4dfff61d2..ae2c5da0f6832e9b691f770a2852450039d6e7dc 100644 GIT binary patch literal 19064 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 literal 18007 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 diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class index 8f0f22d137cbce800184a6d97e36926794b7de7d..09952b57648d59e4e6400c676d7feadba32f98d6 100644 GIT binary patch delta 6267 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 MgrghIr#Rw&0N+~hKmY&$ delta 5769 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 diff --git a/target/classes/com/engine/common/util/Utils.class b/target/classes/com/engine/common/util/Utils.class index 5d320e7ae4c7ec368973b1853662656817e6c114..8c2da46c428a6433f8dbe77f277bf830760dd534 100644 GIT binary patch delta 706 zcmb7C&r4KM6#hQn8{eB5$7XZ}ed&~?y&0s^B7zKB>9S1|SFK7M+d{ z1?*BXnQNj2xMCFCw>Ij;F4<`MT&?V1FjU_xvIy!*JM zXxNtJ%ArpQ?4o23ZNWX<3g+ZxcM-s#R1Ts}Yz~Um91W*5^ianWdN4pQUekw3`Z31< z7FdC=ti%pO^zo$38lGb}eRX9I^M^MWSF8DWM|eqeqjq5s`$a$ HkA6M?poO}% delta 727 zcmbVKO=uHA7=16B?e3;Yo0ydBim7cwqlK1I4?-GmUi45ED#%i8U7Ok;(DjgtdN4%~ zJ$Nd6s6i-#2Tx*6a4X~@LZCNAFdjV!+Sb3e;HAduB#I(L5Qq65!<#qn`yR~a!DoYu zWd?jOIjnHRhjAV+yk@Ye&CeGs6D?ELMXUFmm6_-r5OB~wpBcN9@pGmS4z8=tEhFVf z#?3<681VZ%uh4)-fXhx#Vt;lnj}aHAx?ObSP%^xEoOWU5Fd3VT;EbKrV!;C!7NF@` z^Jr2lV$;;MB@Fc|x|Xo3^$6+t1#}vUp?Y168LEr3hFZk9sV-r{#iWa=qqy#Q;{0YHT)PSL}GbGW{H>hA+zu4kYAH7`u(-k$dCe+Ad& z`v4@|5g3Pm8-0?3O|j()x}{WT3!YTu3l2ppIKnN2a7_rWpjBW+Jo}0Owh_fQ^f~6< zP}YlK%1BdzO%+$E;WitQXA>T?8BZC+26wQ5QHH6rl?HpblSjFWY3`=YHcqphGwk3T z<1Da~C3fMu=ynnsPGAUc@D>`UaSSV16rA`ySQVUDT;7K@+<>P>z7y9{?ercW;Dy8z VJ_@0X0E_s9bts7PffMg~{vA%3w;%uj diff --git a/target/test-classes/Test$1.class b/target/test-classes/Test$1.class index 5283186c7da6f8a7797ccaa6421464a05ea11320..51a5810f6049df6e0b5a7948772084271c672d36 100644 GIT binary patch delta 33 pcmdnVvXf=QJ4VqL3@i*U8F(39F^Dm|W{_ui!=S6A7>Y diff --git a/target/test-classes/Test$11.class b/target/test-classes/Test$11.class index 85574262757b255258a5a87dc1f4ec931d581272..839612ae617aa8a470ac4b0b710d092973d01ea6 100644 GIT binary patch delta 77 zcmV~$s}ev^07cQWhZ(`Bs;Vl2;Qe-Ks;a8$t)d_CiPo~7^*-OJa=8==C>2sEqE<|! egjN}y8hRN9?Tk8@bTaE=(T$O1)x-80C;b7sTMSqL delta 77 zcmV~$sS-d?0EW^38)j}Wsw&#|ZALSys;a80-YR+#kLVn0tob}=iR2Q?Cs9DEkW4YT e8Vb#nTB)>AYp2mctCLO_y>13sMmR?(06L~B{kdY|u@OfI~C;b7doeS~+ diff --git a/target/test-classes/Test$13.class b/target/test-classes/Test$13.class index fb56f3297b3d135b42c386dc2c92ff2fb5e43675..0d945968e02259b8b409faccf0927a2f0878fc10 100644 GIT binary patch delta 77 zcmV~$sS-e70EN-}4KspKRaI34&8Vts?E6;LzlvVOBRa=8#`#<;tz=WnqmfUmfKDO3 eA_gUl%9xZht6)*ds*z0>yKW8{PCZ<2ZpA+h^bVQ; delta 77 zcmZo-Z(`rT&FtvOz{2Roz{}{(Ajas!AkXN_puy3@i*E7WSq>*WCj4Wmk4A4 diff --git a/target/test-classes/Test$9.class b/target/test-classes/Test$9.class index 573c1b50641f6e642fd38c0d1d29e0343971e669..072f2688cc0c4b06a49812b9e6a20aa0313b0ad3 100644 GIT binary patch delta 77 zcmZoivR!s diff --git a/target/test-classes/Test.class b/target/test-classes/Test.class index e8051ec8ff5e467d8dc7c14c3293a52f0cb0d3d7..b55f15ab47bd9e1b084d592371ec705143d66d40 100644 GIT binary patch delta 1977 zcmb7_XvR$*q%KT)%>Rgznetq+Pc%So}d(QJN_q^vGNMGM4y6ewv zJAk2_&^e15FLRjdVV;MGhgzNaT<)cgdL5GnodsN>vyeqz7PCZ`;YyvQTxG{ab(V3p z#x**AYJ6PFbsEccI#Z)@y-rsfZ_r7$@kX5#8*h@VRNJ^&r-zLzbb7XD-x82z-JxT# z+Q*&TrLjiiZk>L1*gZNKHr}g~Y2$r5SvKCUGl&|U2YArKLq7WQu!prC)_Hiu!=oM^ z(|BBG1W(w*lR8NYc*?`mcI0}U4LqZOXp@Itk;M~DOvV+0w zU|z4>5&5~f|8tGZ59VrYF?g0zjpq!S*{acE(8@NA?FP^Dg2oPm7ul)tlEKToV(==j zX}oUm25%a?#V(Dv4R-TRCxv@zxZdm&)Ogq6J>It(orNPm;6s_VsJ7OuH|s+4OTy;t z+RFMwHy`=gBk-}GSq7i5SL0KI&)BE2-{4{nSedRd-3}Uj&LM>!-^yTvFZj}0?po8g zh_4L3<{NvV-zq%y)m4$okQp}kjy)QO4UX`=Rp_pbcB%@SMPYMVI2k0Wsz!gocI)4NpWe})NxZ3xsy&U z*IA%QvsSv3LuF?5T$wvj)>CYT=T$b;h0N;Oh+=%k*hw{^1)-d|p-5HE6thmIE+{_5 zc?t%MwGO#^JDeF~w{+DEWi`5kR=Q`c<0wB^C-vUOzqOY~lmu&szb6e#`R_D=j+3d%KLh4M$vDR86DLPJkZeftd z*)ke!wu|vh5ay+rbL?2L$Hn53n@C6uI0DXqs|9xxS___LyqhH?L4rURge4@g_dk-! zOk|Syy_8TIlUzvDA*#?lvjx3mpbVu=__DH_F@`&noGoq2dt*CUdT!ZJj5U5^q<|XNqLo4PvTT4#{y-#s#9}Wtx2oQG06%W%5b`HClGm zabgRJlLl_bKYc5mS_vdDO;~4PUE-{(u%tLk7S=7!QiOGnvs7Vean?iFX>rzb`qn7D zVziZX#Ws3F3#YfzCxM;xEs?d9W^bpTi1VcDUp;Am%8Z%UfD05V27OC#6QmL#~ zX{=M(G^$bTP?OoMX0lJ!N&l$ls4_XB8l*8UR4%nh`PE{Ts+Oq!YN^UoSE*5ISz9?w zkT2;{`CQmm4qlbVbS{!|Sj8r3N|#7EtY$qk#OL4;(V1K-PN#B_&t+n{B*Du}vD}1Y z2crbrMattM6>*XBHW6E+BCb&x*Qmtp*X@fLEB8Ffvu~P_891YrGZW-XM@Kb^qrJe} zuA!X7zt_;9N)}=t>FlZN?SBI|C!37` delta 1654 zcmYk6S#VTE6o$W^?auUc$Ydaa0g(_Bf`JH0AdrAza{(bB3SxvHfeD*RFc}rxM%-~l zFAA;*?tltJlL=84MNmWmS40FKe4@%Keb6V%^4yv6;(h4<{HIUw`QKJ4@&5HH{)#RNymWwU67+&Qyi`NZr@TSFEhPT;jvCXiZcP!pDyvGj1PIg(e8{X#w ziw;94DMesbb6cXg!lKKtn{M0kPpJ8jj}(!KEiH+*L~GN^`sT#amUvrkfISiR3haxp zz_6c>Ej}?E;8Tl(hS?ml*Z3#(`ONS+hZVYVcx6?2MMZfz%5@519x;qAb8 zPC`p3tQEiQb7YcPoiLYjnRJA>oXJ_8Rd{7a=v$V;Uq3{e>AMIFE$_e@qIUaX_RG(u+gsRgRF1C@_U91f6KAL`t&xOrxHpN6I5im(VMN0?gn_kqR;M zzq9bnmL3b#IAGhIMgK0&_sHoDsF$@&FYl&M3I}Eig%t_Az-7h4N?bNbSgFef z3rk*@p()C0eKB8jNO>1Sz08rY{9JfZHgu}|F@JPeS+>d_9X`|zD`LJ(+)ZUe%->0s z>R?1|Kx_~TbTHB}fj8}=R%a(1m0L(2le0c956KBiI87D5ilNTRE&NU+f60sWH>;JG zb;`$jgD34tA=pDlU z_v^_?jCU$Bbu`IBoFiSBu3E$x!B%?6bLxCSd0sPEoW-In7G^O9_HTLpYx1%@H;Xx0 Z)LA^q&-^5hd{VeG_dPP_8t&!3e*x8xC^P^7 diff --git a/target/test-classes/TestAskForLeaveByDurationTime$1.class b/target/test-classes/TestAskForLeaveByDurationTime$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bb98828771232442f315352953e2dd96cc5fd337 GIT binary patch literal 645 zcmaJ;%TC)s6g`6tF~+;$_i8T2eXzR928N4HN2hjo$a?ez8_PC~)&#Ln-%Ea6(lsxCXC7}OZtvp7qd;y{|&3qAY4-taq4lJ-?I zic_hskA-f>tsE9SETZUP2p$QST67rLcMnTgCQT-9ykexz5*)iA{rwKmg6Ubu{qlB8NK!K`0d5bEBHHi=8ZR(sR4oC+r InLOY;0}#-Z^8f$< literal 0 HcmV?d00001 diff --git a/target/test-classes/TestAskForLeaveByDurationTime$2.class b/target/test-classes/TestAskForLeaveByDurationTime$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6464efab9e3bbaec42c3280ad4291173e0d53f74 GIT binary patch literal 690 zcmaJfgc5PchmWb2xK7zm|M(v|>DP@6abR1t&(r4>jH92%7ar%kd-wm9p^UKjDR zxPZigAHa`7%r-qBRmx#!-@KVOe%{?be}DZ3@Dxv6c-Z8)%W==eGPXGGb5uFDId(X9 zIUbZzE8`(U>7~-jykc;I`YA*4Fd0dP)ktaiA)gLp+82YE7(YseB0d$VviT)hG!vCE zc<;5A>0vCgOj5cN^<`#WXJ3w!G?L<6zWMexPlZv5?yIS+wYv=NNs^~Sd93X0-G%-8 zXX0Ftr6WCzlT7JxPntT%4?FuUhLwRd zU!~MNrE_D=7Q*KYOS432W6d$FwOj4ZUKs9$&$h#Z7abB+7y7HU8P=`GW^Pp6d?&I= zPs|v$7OKe6R4C0*2|h;`>R9M;^Ted|hh2LW&MY?!2f=^UkApKgG~KIA{VIhPUA#xn z0bsP~kZ4~eG=_7*)Ehs+8h*idexUfN;a~Ghb5QpA94z^+1>Z?jz#7F(lqlXp5fvJE oo8ktlxPyQy>s0aPgW=;QWe#;(WraFHnhol_LCB@9W!eG$59@fIqW}N^ literal 0 HcmV?d00001 diff --git a/target/test-classes/TestAskForLeaveByDurationTime$3.class b/target/test-classes/TestAskForLeaveByDurationTime$3.class new file mode 100644 index 0000000000000000000000000000000000000000..a44599443a7f15a9640fca40ae98c267f9986632 GIT binary patch literal 691 zcmaJt$gd0S0XA+KmEj(blA82q;2=!30tY539xlPi||q9;s6$&JaI~ z7m#@12k@g1H|rjdCRLH|J@?!XAIJXl_t$R#kMYQXi%pI#j%^3aD0A#^R5+>}yBvEQ z_e!XhaG#<0LTP1QGFbJ-DT93!k0irtsI>f$O$RdRi$O$;7sf*oor*-|@g-@SiAovV z_gc&3C=zKZDclYFGBvN#FUN5bN^vea%6xlifJLV>jo!+I{Vl^GSa-idV5 z6ElYL!Y)!Y6-qN~)IWz8-I37a)`>~zh~4}ytXXClp4R`%ejJ?1q3K>_8doX!bn`B~ z2Y}I{zeIkO&=}SQ(`fz#YkCFG`T_e>)4S#s=b+^AIauhp+OuuHtJA8jJ#JSWxkeh9V3ViyBI?{8qzR7{mAuOY!QyhGnd%_+G`T z0)5T%WU%arFqEN!p#|HsqeTVT%Ji0k+_K-43QDH!$&Ietkin*CIJA^a-xAK22<%uN z7<19CO^l1?rVOK{@YSjxm{RP?`@NNJAR^oMHf>kd2bJ{R1-!-JyVzP#aBIz}SXQh|I6HYI*LnBOL4BPEEMk><*)*8(`W#VX& zdY%13-AOSb^M&J8NLd~?+R}<@iv)a-iiNPB{*=RevjW%1M+*0v_jz=)r+@IT_#Q~b1yQyMb#|9pACQd!# zD#M@X_z_P(=sEvEkJ}3V*G8(S>)6CkI<~N_;+c-;*imrd)QmWFhm)OjP{C9@UoGEn zInvVjp-q1r;vpk1oxGNUK=hIeb?ykWgAH;UIpmhOW<|3Zr*Z-n)-YA0dM}Km%WV8O zoAJco_Khce6e2ziQn z2@`yU<6j0Ofk}Qpp=MAjlxJq%K>4-5{VBgged91LaIGf}n8HPB!}yF~N$_9DB1hZH zx5${)a<-g%hcj7hSIa|XHCetze!W^Ao=vpb_t2idLE#W`yiYs9+R#F^(0c_LMAla2XO;`dQ2* zOli5o*c=+TifhbciqFAye9p4$5Uqk~o-sp@30e}b>VelRZ5iC)ZiXB_rktdAi4w?@ JM<0C$pm{0}F!~122O(kd$DMXOLvjV31-kWRPaCVvu2QW{_p@VUS}81<0C$pmv0}F#N122OJgBXJ-gFKMbU=U|8WRPI6VvuBTW{_g=VUT7BWsqTr eV~}M?XOLqk0II5FP+(|cP-N(4P@3GuYz6>=`3h73 diff --git a/target/test-classes/TestGetClockInPoint$2.class b/target/test-classes/TestGetClockInPoint$2.class index 69868ec7c214105098ddb605bf85f67c85a059dd..0aeb998ea6f9475083ec7d1f6d364ff08625333c 100644 GIT binary patch delta 77 zcmX@Wet><0C$pm(0}F#X122OHgBXJ*gFJ&4kfqIF$e_bu#h}aJ%%I2M!=TR)%3#0{ e2NX?bFk&cRFlMM^Fkxt7FlFdwFq_=PYz6?d9Sf)c delta 77 zcmX@Wet><0C$pn60}F!+122OrgBXJvgFJ&eg9Z>9GH5bbF=#P3GiWpTFz7IZGUzhI eG3YU*Gw3rEFc>gY0#!6I7%_A+7*FnEHUj{xz6*5# diff --git a/target/test-classes/TestGetClockInPoint$3.class b/target/test-classes/TestGetClockInPoint$3.class index c371cf6ce871eef4e1a23a60c18957a8d3f2f01c..6de3a6270bb23d6ef1f1ace20a2a2ee12f408457 100644 GIT binary patch delta 33 ocmey#@{?tQ9+Rjg0}F!{122O$gBXJigFJ&Rg9d}$WM?Kb0C%Sa(EtDd delta 33 ocmey#@{?tQ9+RjU0}F#W122OGgBXJ)gFJ&3g9d~3WM?Kb0Ct%LzW@LL diff --git a/target/test-classes/TestGetClockInPoint$4.class b/target/test-classes/TestGetClockInPoint$4.class index bd9c0e4d2ff5bc4e7f308e35d52b11ec834d7083..8c9ac4e9d21666a476c82b3fda28c98ca6cf4abf 100644 GIT binary patch delta 33 ocmey#@{?tQ9+Rj&0}F!#122OkgBXJogFJ&Xg9d}kWM?Kb0C~d&^#A|> delta 33 ocmey#@{?tQ9+RjI0}F#K122OegBXK7gFJ%+g9d}+WM?Kb0C=?p;{X5v diff --git a/target/test-classes/TestGetClockInPoint$5.class b/target/test-classes/TestGetClockInPoint$5.class index 14a51fb0fca8b3c00b8055c2ccaa9a1adbce9eec..cd9c9754f4142bc9cea922a752f0d53ca03bec92 100644 GIT binary patch delta 33 ocmey#@{?tQ9+Rjm0}F#2122O+gBXJcgFJ&Lg9d}wWM?Kb0DIpC82|tP delta 33 ocmey#@{?tQ9+RjO0}F#Q122OMgBXJ=gFJ&9g9d~9WM?Kb0D92|2LJ#7 diff --git a/target/test-classes/TestGetClockInPoint$6.class b/target/test-classes/TestGetClockInPoint$6.class index 7993bd756f8c408e002039b61b9429924685db0c..42251273fe60bcb9989318ff9f731cd75ce2b4f8 100644 GIT binary patch delta 33 ocmey#@{?tQ9+Rjy0}F!>122OwgBXJ!gFJ&jg9byuWM?Kb0Db!gJpcdz delta 33 ocmey#@{?tQ9+RjC0}F#E122OYgBXK1gFJ%|g9d}|WM?Kb0DSERD*ylh diff --git a/target/test-classes/TestGetClockInPoint$7.class b/target/test-classes/TestGetClockInPoint$7.class index b5031cf2367956667c30f2a99ba06e153135d17e..9297848bd08e2e30236faeea8a9492c281f13d8d 100644 GIT binary patch delta 33 ocmey#@{?tQ9+PMw0}DeC1201`gBU{ygFHhhg9by`WM?Kb0Du<;VE_OC delta 33 ocmey#@{?tQ9+Rja0}F#c1201WgBU{~gFHhJg9bzJWM?Kb0DlPvPXGV_ diff --git a/target/test-classes/TestGetClockInPoint.class b/target/test-classes/TestGetClockInPoint.class index a81fc98d37bcc03fb9c8c10140cdb4f0e5df1d1b..cd581baa116f77a2a5d3d2fdc15169c85257a915 100644 GIT binary patch literal 8545 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 AMF0Q* literal 7207 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 RYQ1*rw%Zx}>Z`@;|1T|Ac&-2d diff --git a/test/Test.java b/test/Test.java index eacb23e..22d16d5 100644 --- a/test/Test.java +++ b/test/Test.java @@ -13,6 +13,9 @@ import com.google.common.collect.Sets; import io.swagger.models.auth.In; import weaver.general.Util; +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.Comparator; @@ -94,11 +97,31 @@ public class Test { // System.out.println(333); // } // List lists = Lists.newArrayList(); -// List lists2 = Lists.newArrayList(); -// List lists3 = Lists.newArrayList(); -// lists.add(new HashMap()); -// lists.add(new HashMap()); -// lists.add(new HashMap()); +//// List lists2 = Lists.newArrayList(); +//// List lists3 = Lists.newArrayList(); +// lists.add(new HashMap(){{ +// put("key","1"); +// }}); +// lists.add(new HashMap(){{ +// put("key","2"); +// }}); +// lists.add(new HashMap(){{ +// put("key","3"); +// }}); +// +// Map map1 = lists.get(0); +// Map map2 = lists.get(1); +// +// List list2 = lists.stream().filter(e -> e.get("key").equals("1")).collect(Collectors.toList()); +// +// Map map3 = list2.get(0); +// map3.put("value","222"); +// System.out.println(DateUtil.getBetWeenMinutes("2023-11-16 08:00","2023-11-16 09:10")); + // BigDecimal durationBig = new BigDecimal(1.5); + + //System.out.println( durationBig.divide(hslBig,BigDecimal.ROUND_DOWN).multiply(hslBig).add(hslBig,new MathContext(BigDecimal.ROUND_HALF_DOWN)).doubleValue()); + System.out.println(Utils.getItemduration(1,"1",DateUtil.getBetWeenMinutes("2023-11-16 08:00","2023-11-16 09:10"),AccountingUnitEnum.MINUTES)); + // lists2.add(lists.get(1)); // lists3.add(lists.get(1)); // if (lists2.get(0) == lists3.get(0)){ @@ -134,7 +157,7 @@ public class Test { // 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(DateUtil.getBetWeenDays("2023-11-15","2023-11-15")); //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); diff --git a/test/TestAskForLeaveByDurationTime.java b/test/TestAskForLeaveByDurationTime.java new file mode 100644 index 0000000..302d82a --- /dev/null +++ b/test/TestAskForLeaveByDurationTime.java @@ -0,0 +1,36 @@ +import com.engine.attendance.attendanceanalysis.service.impl.AskForLeaveServiceImpl; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TestAskForLeaveByDurationTime { + public static void main(String[] args) { + Map params = Maps.newHashMap(); + params.put("tybcndbjlhbjs","1"); + params.put("qjsc","2.0"); + List> abnormalClockInList = Lists.newArrayList(); + params.put("abnormalClockInList",abnormalClockInList); + abnormalClockInList.add(new HashMap(){{ + put("item","7"); + put("itemduration","1"); + put("pointTime","2023-11-15 13:00"); + }}); + abnormalClockInList.add(new HashMap(){{ + put("item","11"); + put("itemduration","13.0"); + put("betweenMinutes","16"); + put("pointTime","2023-11-15 18:30"); + }}); + abnormalClockInList.add(new HashMap(){{ + put("item","102"); + put("itemduration","15.0"); + put("betweenMinutes","60"); + put("pointTime","2023-11-15 09:00"); + }}); + AskForLeaveServiceImpl askForLeaveService = new AskForLeaveServiceImpl(); + System.out.println(askForLeaveService.askForLeaveByDurationTime(params)); + } +} diff --git a/test/TestGetClockInPoint.java b/test/TestGetClockInPoint.java index dca043d..a82354a 100644 --- a/test/TestGetClockInPoint.java +++ b/test/TestGetClockInPoint.java @@ -1,7 +1,10 @@ +import com.engine.attendance.attendanceanalysis.service.UtilService; +import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; 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.ServiceUtil; import com.engine.common.util.Utils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -12,8 +15,8 @@ import java.util.List; import java.util.Map; public class TestGetClockInPoint { - public static void main(String[] args) { + public static void main(String[] args) { List> schedulingList = Lists.newArrayList(); schedulingList.add(new HashMap(){{ put("edsc","9.50"); @@ -87,7 +90,11 @@ public class TestGetClockInPoint { // put("userid","53"); // put("signdate","2023-11-12"); // }}); - System.out.println(getClockInPoint("2023-11-12",schedulingList,dataList)); + List>> collect = getClockInPoint("2023-11-12",schedulingList,dataList); + System.out.println(collect); + Map clock = getNeedRecordClockInTime(collect); + System.out.println(clock); + } public static List>> getClockInPoint(String analysisDate, List> needClockInSchedule, List> clockInTimeList){ List>> clcokInTimeData = Lists.newArrayList(); @@ -194,4 +201,46 @@ public class TestGetClockInPoint { return clcokInTimeData; } + public static Map getNeedRecordClockInTime(List>> clcokInTimeData) { + Map resultMap = Maps.newHashMap(); + int inIndex = 1; + int outIndex = 1; + for (Map> clcokInTimeMap : clcokInTimeData){ + //卡点 + String point = ""; + //当天打卡数据 + Map clcokInTime = null; + for (Map.Entry> entry :clcokInTimeMap.entrySet()){ + point = entry.getKey(); + clcokInTime = entry.getValue(); + } + //需要计算的班次打卡时间点 + String pointTime = point.split("\\|")[0]; + //start:开始打卡时间点,end:结束打卡时间点 + String pointType = point.split("\\|")[1]; + //empty:漏卡,equal:打卡时间和班次时间相等,before:打卡时间在班次时间之前,after:打卡时间在班次时间之后 + String timeType = point.split("\\|")[2]; + + + if (ClockPointEnum.START.getKey().equals(pointType)){ + //开始时间打卡 + String key = "j"+inIndex; + if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTimeData != null){ + String value = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime"); + resultMap.put(key,value); + } + inIndex++; + }else if (ClockPointEnum.END.getKey().equals(pointType)){ + //结束时间打卡 + String key = "c"+outIndex; + if (!ClockPointEnum.EMPTY.getKey().equals(timeType) && clcokInTimeData != null){ + String value = clcokInTime.get("signdate")+" "+clcokInTime.get("signtime"); + resultMap.put(key,value); + } + outIndex++; + } + + } + return resultMap; + } }