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 82da355..37c9771 100644 Binary files a/out/artifacts/hrm_attendance/hrm-attendance.jar and b/out/artifacts/hrm_attendance/hrm-attendance.jar differ 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 0000000..9349073 Binary files /dev/null and b/target/classes/com/api/attendance/attendanceAnalysis/AttendanceanalysisActionApi.class differ 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 0000000..10cd8b3 Binary files /dev/null and b/target/classes/com/engine/attendance/attendanceanalysis/cmd/recordDataCmd.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class b/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class index ab0aff6..904c643 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class and b/target/classes/com/engine/attendance/attendanceanalysis/job/AttendanceAnalysisJob.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class b/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class index e17ed29..263bf15 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/UtilService.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class index 75d404b..9a0a26d 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/AskForLeaveServiceImpl.class differ 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 a4630fc..0f29e3a 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/EvectionServiceImpl.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class index 11ba4e3..ff4e67a 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class and b/target/classes/com/engine/attendance/attendanceanalysis/service/impl/UtilServiceImpl.class differ 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 0000000..852835a Binary files /dev/null and b/target/classes/com/engine/attendance/attendanceanalysis/web/AttendanceanalysisAction.class differ 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 a710187..dee32a3 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class and b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$1.class differ 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 a9f4e05..b7baa34 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class and b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper$2.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class index bb801df..ae2c5da 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class and b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/AttendanceAnalysisWrapper.class differ diff --git a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class index 8f0f22d..09952b5 100644 Binary files a/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class and b/target/classes/com/engine/attendance/attendanceanalysis/wrapper/UpdateAttendanceResultWrapper.class differ diff --git a/target/classes/com/engine/common/util/Utils.class b/target/classes/com/engine/common/util/Utils.class index 5d320e7..8c2da46 100644 Binary files a/target/classes/com/engine/common/util/Utils.class and b/target/classes/com/engine/common/util/Utils.class differ diff --git a/target/test-classes/Test$1.class b/target/test-classes/Test$1.class index 5283186..51a5810 100644 Binary files a/target/test-classes/Test$1.class and b/target/test-classes/Test$1.class differ diff --git a/target/test-classes/Test$10.class b/target/test-classes/Test$10.class index d6a15f5..8bad994 100644 Binary files a/target/test-classes/Test$10.class and b/target/test-classes/Test$10.class differ diff --git a/target/test-classes/Test$11.class b/target/test-classes/Test$11.class index 8557426..839612a 100644 Binary files a/target/test-classes/Test$11.class and b/target/test-classes/Test$11.class differ diff --git a/target/test-classes/Test$12.class b/target/test-classes/Test$12.class index a0297c4..8a08034 100644 Binary files a/target/test-classes/Test$12.class and b/target/test-classes/Test$12.class differ diff --git a/target/test-classes/Test$13.class b/target/test-classes/Test$13.class index fb56f32..0d94596 100644 Binary files a/target/test-classes/Test$13.class and b/target/test-classes/Test$13.class differ diff --git a/target/test-classes/Test$2.class b/target/test-classes/Test$2.class index ae31c7f..3e5d273 100644 Binary files a/target/test-classes/Test$2.class and b/target/test-classes/Test$2.class differ diff --git a/target/test-classes/Test$3.class b/target/test-classes/Test$3.class index d7f96c5..b27ec44 100644 Binary files a/target/test-classes/Test$3.class and b/target/test-classes/Test$3.class differ diff --git a/target/test-classes/Test$4.class b/target/test-classes/Test$4.class index e76e211..a6a8e7f 100644 Binary files a/target/test-classes/Test$4.class and b/target/test-classes/Test$4.class differ diff --git a/target/test-classes/Test$5.class b/target/test-classes/Test$5.class index 9c4b390..dfa7271 100644 Binary files a/target/test-classes/Test$5.class and b/target/test-classes/Test$5.class differ diff --git a/target/test-classes/Test$6.class b/target/test-classes/Test$6.class index 0f3710d..15915ea 100644 Binary files a/target/test-classes/Test$6.class and b/target/test-classes/Test$6.class differ diff --git a/target/test-classes/Test$7.class b/target/test-classes/Test$7.class index c461429..2335f4a 100644 Binary files a/target/test-classes/Test$7.class and b/target/test-classes/Test$7.class differ diff --git a/target/test-classes/Test$8.class b/target/test-classes/Test$8.class index f04b33c..57ccd98 100644 Binary files a/target/test-classes/Test$8.class and b/target/test-classes/Test$8.class differ diff --git a/target/test-classes/Test$9.class b/target/test-classes/Test$9.class index 573c1b5..072f268 100644 Binary files a/target/test-classes/Test$9.class and b/target/test-classes/Test$9.class differ diff --git a/target/test-classes/Test.class b/target/test-classes/Test.class index e8051ec..b55f15a 100644 Binary files a/target/test-classes/Test.class and b/target/test-classes/Test.class differ diff --git a/target/test-classes/TestAskForLeaveByDurationTime$1.class b/target/test-classes/TestAskForLeaveByDurationTime$1.class new file mode 100644 index 0000000..bb98828 Binary files /dev/null and b/target/test-classes/TestAskForLeaveByDurationTime$1.class differ diff --git a/target/test-classes/TestAskForLeaveByDurationTime$2.class b/target/test-classes/TestAskForLeaveByDurationTime$2.class new file mode 100644 index 0000000..6464efa Binary files /dev/null and b/target/test-classes/TestAskForLeaveByDurationTime$2.class differ diff --git a/target/test-classes/TestAskForLeaveByDurationTime$3.class b/target/test-classes/TestAskForLeaveByDurationTime$3.class new file mode 100644 index 0000000..a445994 Binary files /dev/null and b/target/test-classes/TestAskForLeaveByDurationTime$3.class differ diff --git a/target/test-classes/TestAskForLeaveByDurationTime.class b/target/test-classes/TestAskForLeaveByDurationTime.class new file mode 100644 index 0000000..6cea6bd Binary files /dev/null and b/target/test-classes/TestAskForLeaveByDurationTime.class differ diff --git a/target/test-classes/TestGetClockInPoint$1.class b/target/test-classes/TestGetClockInPoint$1.class index f517a22..8bc6796 100644 Binary files a/target/test-classes/TestGetClockInPoint$1.class and b/target/test-classes/TestGetClockInPoint$1.class differ diff --git a/target/test-classes/TestGetClockInPoint$2.class b/target/test-classes/TestGetClockInPoint$2.class index 69868ec..0aeb998 100644 Binary files a/target/test-classes/TestGetClockInPoint$2.class and b/target/test-classes/TestGetClockInPoint$2.class differ diff --git a/target/test-classes/TestGetClockInPoint$3.class b/target/test-classes/TestGetClockInPoint$3.class index c371cf6..6de3a62 100644 Binary files a/target/test-classes/TestGetClockInPoint$3.class and b/target/test-classes/TestGetClockInPoint$3.class differ diff --git a/target/test-classes/TestGetClockInPoint$4.class b/target/test-classes/TestGetClockInPoint$4.class index bd9c0e4..8c9ac4e 100644 Binary files a/target/test-classes/TestGetClockInPoint$4.class and b/target/test-classes/TestGetClockInPoint$4.class differ diff --git a/target/test-classes/TestGetClockInPoint$5.class b/target/test-classes/TestGetClockInPoint$5.class index 14a51fb..cd9c975 100644 Binary files a/target/test-classes/TestGetClockInPoint$5.class and b/target/test-classes/TestGetClockInPoint$5.class differ diff --git a/target/test-classes/TestGetClockInPoint$6.class b/target/test-classes/TestGetClockInPoint$6.class index 7993bd7..4225127 100644 Binary files a/target/test-classes/TestGetClockInPoint$6.class and b/target/test-classes/TestGetClockInPoint$6.class differ diff --git a/target/test-classes/TestGetClockInPoint$7.class b/target/test-classes/TestGetClockInPoint$7.class index b5031cf..9297848 100644 Binary files a/target/test-classes/TestGetClockInPoint$7.class and b/target/test-classes/TestGetClockInPoint$7.class differ diff --git a/target/test-classes/TestGetClockInPoint.class b/target/test-classes/TestGetClockInPoint.class index a81fc98..cd581ba 100644 Binary files a/target/test-classes/TestGetClockInPoint.class and b/target/test-classes/TestGetClockInPoint.class differ 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; + } }