From 6e021119c07ad5927dc2f9e020875380d7b01c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=AD=A3=E5=9B=BD?= <438926402@qq.com> Date: Tue, 6 May 2025 22:20:28 +0800 Subject: [PATCH] =?UTF-8?q?2025-05-06=20=E7=A8=BB=E8=8A=B1=E9=A6=99?= =?UTF-8?q?=E9=9B=86=E5=9B=A2=E9=9B=86=E6=88=90=E4=B8=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=B9=B3=E5=8F=B0=E7=BB=84=E7=BB=87=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cfgHome/src_dhxbacklog/pluginCfg.xml | 6 + .../src_dhxbacklog/spring/spring-sso.xml | 6 + .../cfgHome/src_dhxbacklog/spring/spring.xml | 5 + .../cfgHome/src_dhxorganization/pluginCfg.xml | 6 + .../spring/spring-node.xml | 5 + .../src_dhxorganization/spring/spring.xml | 5 + .../src_mainorganization/pluginCfg.xml | 6 + .../spring/spring-dao.xml | 6 + .../spring/spring-service.xml | 6 + .../cfgHome/src_membermanage/pluginCfg.xml | 6 + .../spring/spring-membermanage.xml | 5 + .../src_membermanage/spring/spring-node.xml | 44 + .../pluginCfg.xml | 6 + .../spring/spring-dao.xml | 5 + .../spring/spring-quartz.xml | 5 + .../spring/spring.xml | 5 + .../chushihua/quartz/HsDataSyncQuartz.java | 13 - .../jkts/node/NewTongYongNode.java | 1 - .../jkts/service/NewTongYongService.java | 1 - .../jkts/service/TongYongService.java | 2 - .../QrCodeFormPluginInitializer.java | 1 - .../apps/qrCodeForm/constant/Constants.java | 2 - .../controller/QrCodeFormController.java | 1 - .../manager/QrCodeFormManagerImpl.java | 5 - .../qrCodeForm/sso/WechatQRHandShake.java | 3 +- .../qrCodeForm/util/InitQrCodeFormUitl.java | 6 - .../src_dhxbacklog/DhxBacklogPluginApi.java | 47 + .../constanst/DhxFlowConstants.java | 34 + .../sso/DhxFlowWaitHandlesso.java | 82 + .../apps/src_dhxbacklog/util/GetToken.java | 23 + .../src_dhxbacklog/util/HttpRequestUtils.java | 241 +++ .../src_dhxorganization/DhxPluginApi.java | 46 + .../archive/ArchiveCommonNode.java | 106 ++ .../archive/node/UpdateHireFilesNode.java | 22 + .../constants/DhxConstants.java | 29 + .../member/MemberCommonNode.java | 107 ++ .../util/Cap4ReturnUtil.java | 17 + .../src_dhxorganization/util/DhxHttpUtil.java | 49 + .../src_dhxorganization/util/ParamUtil.java | 10 + .../src_dhxorganization/vo/DhxResponse.java | 76 + .../ctrl/StartTaskController.java | 8 +- .../src_dingding/dao/DingdingDaoImpl.java | 6 +- .../apps/src_dingding/dao/IDingdingDao.java | 3 +- .../src_dingding/service/DingdingService.java | 13 +- .../apps/src_dingding/task/DingdingTask.java | 14 +- .../apps/src_dingding/util/DingtalkUtil.java | 2 +- .../apps/src_dingding/util/TimeUtil.java | 17 +- .../bo/ReceiveOrgMemberResponse.java | 56 + .../src_mainorganization/dao/ISrcEnumDao.java | 9 + .../dao/ISrcMemberDao.java | 7 + .../dao/impl/SrcEnumDaoImpl.java | 74 + .../dao/impl/SrcMemberDaoImpl.java | 41 + .../service/IReceiveOrgMemberService.java | 27 + .../impl/ReceiveOrgMemberServiceImpl.java | 612 +++++++ .../MemberManageCommonNode.java | 279 +++ .../MemberManagePluginApi.java | 42 + .../MemberOrganizationCommonNode.java | 164 ++ .../constants/MemberManageConstants.java | 38 + .../node/AccountOpeningNode.java | 29 + .../node/AccountOpeningOrganizationNode.java | 29 + .../node/MemberAccountClosureNode.java | 219 +++ .../MemberAccountClosureOrganizationNode.java | 147 ++ .../node/MemberAccountClosureTalentsNode.java | 205 +++ .../node/MemberAnewEngageNode.java | 29 + .../MemberAnewEngageOrganizationNode.java | 29 + .../node/MemberBasicsNode.java | 29 + .../node/MemberBasicsOrganizationNode.java | 18 + .../node/MemberContractNode.java | 288 +++ .../node/MemberDecruitmentNode.java | 29 + .../MemberDecruitmentOrganizationNode.java | 18 + .../node/MemberDimissionNode.java | 29 + .../node/MemberDimissionOrganizationNode.java | 18 + .../node/MemberDimissionTalentsNode.java | 29 + .../node/MemberEducationNode.java | 29 + .../node/MemberEmployNode.java | 203 +++ .../node/MemberEntryNode.java | 29 + .../node/MemberEntryOrganizationNode.java | 18 + .../node/MemberEntryTalentsNode.java | 29 + .../node/MemberFamilyNode.java | 29 + .../node/MemberHonorNode.java | 29 + .../node/MemberInterviewResultNode.java | 232 +++ .../src_membermanage/node/MemberMoveNode.java | 29 + .../node/MemberMoveOrganizationNode.java | 18 + .../node/MemberPerformanceNode.java | 261 +++ .../node/MemberRegularizationExtendNode.java | 26 + .../node/MemberRegularizationNode.java | 26 + .../node/MemberRewardPunishmentNode.java | 29 + .../node/MemberSystemAccountClosureNode.java | 29 + ...rSystemAccountClosureOrganizationNode.java | 30 + ...MemberSystemAccountClosureTalentsNode.java | 29 + .../node/MemberTaskFinishNode.java | 204 +++ .../node/MemberTryOutSummarizeNode.java | 29 + .../src_membermanage/node/MemberWorkNode.java | 29 + .../node/MembersMoveNode.java | 207 +++ .../node/MembersMoveOrganizationNode.java | 158 ++ .../node/RegistrationofApplicantsNode.java | 29 + .../node/TrainingRecordNode.java | 207 +++ .../util/DataProcessingUtil.java | 53 + .../util/OrganizationParamUtil.java | 168 ++ .../apps/src_membermanage/util/ParamUtil.java | 436 +++++ .../apps/src_membermanage/util/ProtUtil.java | 463 +++++ .../vo/MemberManagerResponse.java | 76 + .../vo/MemberOrganizationResponse.java | 76 + .../OrganizationInitializationPluginApi.java | 47 + .../OrganizationInitializationConstants.java | 36 + .../dao/IOrganizationInitializationDao.java | 35 + .../OrganizationInitializationDaoImpl.java | 365 ++++ .../OrganizationInitializationQuartz.java | 1603 +++++++++++++++++ .../util/FormExportUtil.java | 113 ++ .../util/InterfaceListUtil.java | 467 +++++ .../util/ParamUtil.java | 80 + .../util/ProtUtil.java | 86 + .../apps/src_qyba/FVTongyongbeianNode.java | 2 - .../src_qyba/service/FVTongyongService.java | 7 - .../seeyon/apps/src_qyba/util/FanWeiUtil.java | 6 - .../SaveAndUpdateMemberMainResource.java | 84 + 116 files changed, 9663 insertions(+), 86 deletions(-) create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxbacklog/pluginCfg.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring-sso.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxorganization/pluginCfg.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring-node.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_mainorganization/pluginCfg.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-dao.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-service.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_membermanage/pluginCfg.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-membermanage.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_organizationInitialization/pluginCfg.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-dao.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-quartz.xml create mode 100644 seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring.xml create mode 100644 src/com/seeyon/apps/src_dhxbacklog/DhxBacklogPluginApi.java create mode 100644 src/com/seeyon/apps/src_dhxbacklog/constanst/DhxFlowConstants.java create mode 100644 src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java create mode 100644 src/com/seeyon/apps/src_dhxbacklog/util/GetToken.java create mode 100644 src/com/seeyon/apps/src_dhxbacklog/util/HttpRequestUtils.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/DhxPluginApi.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/archive/ArchiveCommonNode.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/archive/node/UpdateHireFilesNode.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/constants/DhxConstants.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/member/MemberCommonNode.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/util/Cap4ReturnUtil.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/util/DhxHttpUtil.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/util/ParamUtil.java create mode 100644 src/com/seeyon/apps/src_dhxorganization/vo/DhxResponse.java create mode 100644 src/com/seeyon/apps/src_mainorganization/bo/ReceiveOrgMemberResponse.java create mode 100644 src/com/seeyon/apps/src_mainorganization/dao/ISrcEnumDao.java create mode 100644 src/com/seeyon/apps/src_mainorganization/dao/ISrcMemberDao.java create mode 100644 src/com/seeyon/apps/src_mainorganization/dao/impl/SrcEnumDaoImpl.java create mode 100644 src/com/seeyon/apps/src_mainorganization/dao/impl/SrcMemberDaoImpl.java create mode 100644 src/com/seeyon/apps/src_mainorganization/service/IReceiveOrgMemberService.java create mode 100644 src/com/seeyon/apps/src_mainorganization/service/impl/ReceiveOrgMemberServiceImpl.java create mode 100644 src/com/seeyon/apps/src_membermanage/MemberManageCommonNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/MemberManagePluginApi.java create mode 100644 src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/constants/MemberManageConstants.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/AccountOpeningNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/AccountOpeningOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureTalentsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberBasicsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberBasicsOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberContractNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberDimissionNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberDimissionOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberDimissionTalentsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberEducationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberEmployNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberEntryNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberEntryOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberEntryTalentsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberFamilyNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberHonorNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberInterviewResultNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberMoveNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberMoveOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberPerformanceNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberRegularizationExtendNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberRegularizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberRewardPunishmentNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureTalentsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberTaskFinishNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberTryOutSummarizeNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MembersMoveNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MembersMoveOrganizationNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/RegistrationofApplicantsNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/TrainingRecordNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/util/DataProcessingUtil.java create mode 100644 src/com/seeyon/apps/src_membermanage/util/OrganizationParamUtil.java create mode 100644 src/com/seeyon/apps/src_membermanage/util/ParamUtil.java create mode 100644 src/com/seeyon/apps/src_membermanage/util/ProtUtil.java create mode 100644 src/com/seeyon/apps/src_membermanage/vo/MemberManagerResponse.java create mode 100644 src/com/seeyon/apps/src_membermanage/vo/MemberOrganizationResponse.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/OrganizationInitializationPluginApi.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/constant/OrganizationInitializationConstants.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/dao/IOrganizationInitializationDao.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/dao/impl/OrganizationInitializationDaoImpl.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/quartz/OrganizationInitializationQuartz.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/util/FormExportUtil.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/util/InterfaceListUtil.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/util/ParamUtil.java create mode 100644 src/com/seeyon/apps/src_organizationInitialization/util/ProtUtil.java create mode 100644 src/com/seeyon/ctp/rest/resources/SaveAndUpdateMemberMainResource.java diff --git a/seeyon/WEB-INF/cfgHome/src_dhxbacklog/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/pluginCfg.xml new file mode 100644 index 0000000..88b0151 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_dhxbacklog + 稻花香流程平台流程待办集成 + 20241231 + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring-sso.xml b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring-sso.xml new file mode 100644 index 0000000..52a673b --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring-sso.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring.xml b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring.xml new file mode 100644 index 0000000..2f0d235 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxbacklog/spring/spring.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_dhxorganization/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/src_dhxorganization/pluginCfg.xml new file mode 100644 index 0000000..85ff84a --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxorganization/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_dhxorganization + 集团对接主数据平台 + 20241223 + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring-node.xml b/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring-node.xml new file mode 100644 index 0000000..3381ac6 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring-node.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring.xml b/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring.xml new file mode 100644 index 0000000..106ec40 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_dhxorganization/spring/spring.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_mainorganization/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/src_mainorganization/pluginCfg.xml new file mode 100644 index 0000000..2b84c93 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_mainorganization/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_mainorganization + 稻花香主数据同步 + 20250418 + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-dao.xml b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-dao.xml new file mode 100644 index 0000000..c7c6ab0 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-dao.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-service.xml b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-service.xml new file mode 100644 index 0000000..5e4f040 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-service.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_membermanage/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/src_membermanage/pluginCfg.xml new file mode 100644 index 0000000..05e82ba --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_membermanage/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_membermanage + 主数据平台人员集成管理 + 20250310 + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-membermanage.xml b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-membermanage.xml new file mode 100644 index 0000000..be81014 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-membermanage.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml new file mode 100644 index 0000000..76bc3f7 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_organizationInitialization/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/pluginCfg.xml new file mode 100644 index 0000000..ea4905d --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_organizationInitialization + 稻花香人员档案初始化 + 20241126 + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-dao.xml b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-dao.xml new file mode 100644 index 0000000..c654491 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-dao.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-quartz.xml b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-quartz.xml new file mode 100644 index 0000000..8e4f5a3 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring-quartz.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring.xml b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring.xml new file mode 100644 index 0000000..59b51cd --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/src_organizationInitialization/spring/spring.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/com/seeyon/apps/daohuaxiangSys/chushihua/quartz/HsDataSyncQuartz.java b/src/com/seeyon/apps/daohuaxiangSys/chushihua/quartz/HsDataSyncQuartz.java index 6820fa8..b8f67c2 100644 --- a/src/com/seeyon/apps/daohuaxiangSys/chushihua/quartz/HsDataSyncQuartz.java +++ b/src/com/seeyon/apps/daohuaxiangSys/chushihua/quartz/HsDataSyncQuartz.java @@ -1,21 +1,15 @@ package com.seeyon.apps.daohuaxiangSys.chushihua.quartz; -import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.common.config.ICstConfigApi; import com.seeyon.apps.common.plugin.vo.ConfigVo; -import com.seeyon.apps.common.util.StringKit; -import com.seeyon.apps.common.workflow.constants.WorkFlowType; -import com.seeyon.apps.common.workflow.parser.FormParseFactory; import com.seeyon.apps.common.workflow.util.FormDataBeanUtil; import com.seeyon.apps.daohuaxiangSys.chushihua.constants.HsDataSyncConstants; import com.seeyon.apps.daohuaxiangSys.chushihua.vo.HsDataVo; import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiNewUtil; -import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.InterfaceListUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.PropKit; -import com.seeyon.apps.ext.po.CstWorkFlowRequestTemplate; import com.seeyon.apps.ext.quartz.AbstractQuartzTask; import com.seeyon.apps.ext.workflow.manager.CstWorkFlowTemplateManager; import com.seeyon.apps.ext.workflow.vo.FormDataVo; @@ -25,25 +19,18 @@ import com.seeyon.cap4.form.bean.FormBean; import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.SystemEnvironment; -import com.seeyon.ctp.common.exceptions.BusinessException; import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; import com.seeyon.ctp.common.po.filemanager.Attachment; -import com.seeyon.ctp.common.po.template.CtpTemplate; import com.seeyon.ctp.common.template.manager.TemplateManager; import com.seeyon.ctp.organization.bo.V3xOrgMember; import com.seeyon.ctp.organization.manager.OrgManager; -import com.seeyon.ctp.organization.manager.OrgManagerDirect; -import com.seeyon.ctp.util.DateUtil; import com.seeyon.ctp.util.JDBCAgent; -import com.seeyon.ctp.util.Strings; -import com.seeyon.ctp.util.json.JSONUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.songjian.utils.json.JSONArray; import javax.inject.Inject; import java.io.IOException; -import java.sql.SQLException; import java.util.*; import java.util.stream.Collectors; diff --git a/src/com/seeyon/apps/daohuaxiangSys/jkts/node/NewTongYongNode.java b/src/com/seeyon/apps/daohuaxiangSys/jkts/node/NewTongYongNode.java index 09777c3..f2f67b3 100644 --- a/src/com/seeyon/apps/daohuaxiangSys/jkts/node/NewTongYongNode.java +++ b/src/com/seeyon/apps/daohuaxiangSys/jkts/node/NewTongYongNode.java @@ -5,7 +5,6 @@ import com.seeyon.apps.common.workflow.constants.WorkFlowType; import com.seeyon.apps.common.workflow.node.ACommonSuperNode; import com.seeyon.apps.daohuaxiangSys.jkts.constants.DaohuaxiangConstants; import com.seeyon.apps.daohuaxiangSys.jkts.service.NewTongYongService; -import com.seeyon.apps.daohuaxiangSys.jkts.service.TongYongService; import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.cap4.form.bean.FormDataMasterBean; diff --git a/src/com/seeyon/apps/daohuaxiangSys/jkts/service/NewTongYongService.java b/src/com/seeyon/apps/daohuaxiangSys/jkts/service/NewTongYongService.java index b56654c..95a3596 100644 --- a/src/com/seeyon/apps/daohuaxiangSys/jkts/service/NewTongYongService.java +++ b/src/com/seeyon/apps/daohuaxiangSys/jkts/service/NewTongYongService.java @@ -3,7 +3,6 @@ package com.seeyon.apps.daohuaxiangSys.jkts.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiNewUtil; -import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.InterfaceListUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.PropKit; import com.seeyon.apps.ext.workflow.vo.FormDataVo; diff --git a/src/com/seeyon/apps/daohuaxiangSys/jkts/service/TongYongService.java b/src/com/seeyon/apps/daohuaxiangSys/jkts/service/TongYongService.java index 8b55c75..6c0cc39 100644 --- a/src/com/seeyon/apps/daohuaxiangSys/jkts/service/TongYongService.java +++ b/src/com/seeyon/apps/daohuaxiangSys/jkts/service/TongYongService.java @@ -2,12 +2,10 @@ package com.seeyon.apps.daohuaxiangSys.jkts.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiNewUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.FanWeiUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.InterfaceListUtil; import com.seeyon.apps.daohuaxiangSys.jkts.util.PropKit; import com.seeyon.apps.ext.workflow.vo.FormDataVo; -import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.SystemEnvironment; import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; diff --git a/src/com/seeyon/apps/qrCodeForm/QrCodeFormPluginInitializer.java b/src/com/seeyon/apps/qrCodeForm/QrCodeFormPluginInitializer.java index 49755c4..215a624 100644 --- a/src/com/seeyon/apps/qrCodeForm/QrCodeFormPluginInitializer.java +++ b/src/com/seeyon/apps/qrCodeForm/QrCodeFormPluginInitializer.java @@ -2,7 +2,6 @@ package com.seeyon.apps.qrCodeForm; import com.seeyon.apps.qrCodeForm.util.InitQrCodeFormUitl; import com.seeyon.ctp.common.AbstractSystemInitializer; -import com.seeyon.ctp.common.exceptions.BusinessException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/src/com/seeyon/apps/qrCodeForm/constant/Constants.java b/src/com/seeyon/apps/qrCodeForm/constant/Constants.java index d065422..53852b8 100644 --- a/src/com/seeyon/apps/qrCodeForm/constant/Constants.java +++ b/src/com/seeyon/apps/qrCodeForm/constant/Constants.java @@ -1,7 +1,5 @@ package com.seeyon.apps.qrCodeForm.constant; -import com.seeyon.ctp.common.AppContext; - public class Constants { //模拟移动端登录认证方式 diff --git a/src/com/seeyon/apps/qrCodeForm/controller/QrCodeFormController.java b/src/com/seeyon/apps/qrCodeForm/controller/QrCodeFormController.java index fb4cbb3..1572538 100644 --- a/src/com/seeyon/apps/qrCodeForm/controller/QrCodeFormController.java +++ b/src/com/seeyon/apps/qrCodeForm/controller/QrCodeFormController.java @@ -10,7 +10,6 @@ import com.seeyon.ctp.common.SystemEnvironment; import com.seeyon.ctp.common.constants.ProductEditionEnum; import com.seeyon.ctp.common.controller.BaseController; import com.seeyon.ctp.common.flag.SysFlag; -import com.seeyon.ctp.common.formula.FormulaUtil; import com.seeyon.ctp.common.log.CtpLogFactory; import com.seeyon.ctp.organization.bo.V3xOrgMember; import com.seeyon.ctp.organization.manager.OrgManager; diff --git a/src/com/seeyon/apps/qrCodeForm/manager/QrCodeFormManagerImpl.java b/src/com/seeyon/apps/qrCodeForm/manager/QrCodeFormManagerImpl.java index d7e633e..ad8ab3b 100644 --- a/src/com/seeyon/apps/qrCodeForm/manager/QrCodeFormManagerImpl.java +++ b/src/com/seeyon/apps/qrCodeForm/manager/QrCodeFormManagerImpl.java @@ -1,12 +1,9 @@ package com.seeyon.apps.qrCodeForm.manager; -import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.common.config.ICstConfigApi; import com.seeyon.apps.qrCodeForm.constant.Constants; import com.seeyon.apps.qrCodeForm.constant.QrCodeFormConstants; -import com.seeyon.apps.qrCodeForm.constant.SupportTypeEnum; import com.seeyon.apps.weixin.manager.WechatUserManager; -import com.seeyon.apps.weixin.po.WechatUser; import com.seeyon.cap4.form.api.FormApi4Cap4; import com.seeyon.cap4.form.modules.business.BusinessSourceTypeManager; import com.seeyon.cap4.form.modules.business.FormAppBO; @@ -16,10 +13,8 @@ import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.SystemEnvironment; import com.seeyon.ctp.common.exceptions.BusinessException; import com.seeyon.ctp.common.log.CtpLogFactory; -import com.seeyon.ctp.organization.bo.V3xOrgMember; import com.seeyon.ctp.organization.manager.OrgManager; import com.seeyon.ctp.util.FlipInfo; -import com.seeyon.ctp.util.HttpClientUtil; import com.seeyon.ctp.util.ParamUtil; import com.seeyon.ctp.util.Strings; import com.seeyon.ctp.util.annotation.AjaxAccess; diff --git a/src/com/seeyon/apps/qrCodeForm/sso/WechatQRHandShake.java b/src/com/seeyon/apps/qrCodeForm/sso/WechatQRHandShake.java index 2cc5c6c..0d8b0da 100644 --- a/src/com/seeyon/apps/qrCodeForm/sso/WechatQRHandShake.java +++ b/src/com/seeyon/apps/qrCodeForm/sso/WechatQRHandShake.java @@ -10,7 +10,6 @@ import com.seeyon.ctp.organization.manager.OrgManager; import com.seeyon.ctp.portal.sso.SSOLoginContext; import com.seeyon.ctp.portal.sso.SSOLoginHandshakeAbstract; import com.seeyon.ctp.util.HttpClientUtil; -import com.seeyon.ctp.util.Strings; import com.seeyon.ctp.util.annotation.Inject; import org.apache.commons.logging.Log; import org.springframework.beans.factory.annotation.Autowired; @@ -37,7 +36,7 @@ public class WechatQRHandShake extends SSOLoginHandshakeAbstract { @Inject public WechatUserManager wechatUserManager; @Autowired - private OrgManager orgManager; + private OrgManager orgManager; @Override public String handshake(String s) { log.info("--进入企业微信回调接口!"); diff --git a/src/com/seeyon/apps/qrCodeForm/util/InitQrCodeFormUitl.java b/src/com/seeyon/apps/qrCodeForm/util/InitQrCodeFormUitl.java index 2f4c7bc..d01c080 100644 --- a/src/com/seeyon/apps/qrCodeForm/util/InitQrCodeFormUitl.java +++ b/src/com/seeyon/apps/qrCodeForm/util/InitQrCodeFormUitl.java @@ -1,20 +1,14 @@ package com.seeyon.apps.qrCodeForm.util; import com.seeyon.ctp.common.AppContext; -import com.seeyon.ctp.common.exceptions.BusinessException; -import com.seeyon.ctp.privilege.bo.PrivMenuBO; import com.seeyon.ctp.privilege.enums.PrivMenuTypeEnums; import com.seeyon.ctp.privilege.manager.PrivilegeMenuManager; import com.seeyon.ctp.privilege.po.PrivMenu; import com.seeyon.ctp.util.DBAgent; -import com.seeyon.ctp.util.DateUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.List; diff --git a/src/com/seeyon/apps/src_dhxbacklog/DhxBacklogPluginApi.java b/src/com/seeyon/apps/src_dhxbacklog/DhxBacklogPluginApi.java new file mode 100644 index 0000000..48ee651 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxbacklog/DhxBacklogPluginApi.java @@ -0,0 +1,47 @@ +package com.seeyon.apps.src_dhxbacklog; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_dhxbacklog.constanst.DhxFlowConstants; + +import java.util.Map; + +public class DhxBacklogPluginApi extends APluginInfoApi { + public DhxBacklogPluginApi() { + } + + public String getPluginId() { + System.out.println(DhxFlowConstants.getPluginId()); + return DhxFlowConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "集团组织架构同步管理"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + DhxFlowConstants[] var2 = DhxFlowConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + DhxFlowConstants value = var2[var4]; + if (value != DhxFlowConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } + + public void registerCustomEvent(Map eventAndNodes) { + eventAndNodes.put("propertyDispose", "集团组织架构同步管理"); + } +} + diff --git a/src/com/seeyon/apps/src_dhxbacklog/constanst/DhxFlowConstants.java b/src/com/seeyon/apps/src_dhxbacklog/constanst/DhxFlowConstants.java new file mode 100644 index 0000000..0390228 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxbacklog/constanst/DhxFlowConstants.java @@ -0,0 +1,34 @@ +package com.seeyon.apps.src_dhxbacklog.constanst; + +public enum DhxFlowConstants { + + plugin("src_dhxbacklog","插件ID"), + flowUrl("http://10.0.1.56/seeyon","流程平台URL"), + TokenUrl("/rest/token/","token地址"), + flowRestUsername("gongwenpush","流程平台restname"), + flowRestPassword("2376d7fc-1664-4fb6-8dec-66356935ddb0","流程平台restpassword"), + dhxflowssourl("/login/sso?from=dhxflowsso&ticket=", "PC单点登录地址"), + dhxflowssoh5url("/H5/collaboration/index.html?token=", "H5单点登录地址"); + + + DhxFlowConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + private String defaultValue; + private String description; + + public String getDefaultValue() { + return defaultValue; + } + + public String getDescription() { + return description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java b/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java new file mode 100644 index 0000000..ea6d625 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java @@ -0,0 +1,82 @@ +package com.seeyon.apps.src_dhxbacklog.sso; + +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_dhxbacklog.constanst.DhxFlowConstants; +import com.seeyon.apps.src_dhxbacklog.util.GetToken; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.controller.BaseController; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.annotation.Inject; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.Date; + +public class DhxFlowWaitHandlesso extends BaseController { + + @Inject + private ICstConfigApi cstConfigApi; + + private OrgManager orgManager; + public void setOrgManager(OrgManager orgManager) {this.orgManager = orgManager; } + public OrgManager getOrgManager() { + if (orgManager == null) {orgManager = (OrgManager) AppContext.getBean("orgManager");}return orgManager; + } + + public ConfigVo getDhxBacklogConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + public String getPluginId() { + return DhxFlowConstants.getPluginId(); + } + + public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { + System.out.println("123123123123123"); + ConfigVo configVo = getDhxBacklogConfig(); + ModelAndView mv = new ModelAndView(); +// 根据当前账号获取流程平台账号 + String userLoginName = AppContext.currentUserLoginName(); +// V3xOrgMember v3xOrgMember = orgManager.getMemberById(userId); +// if(v3xOrgMember==null){ +// mv.setViewName("跳转失败"); // 设置视图名称 +// mv.addObject("message", "请检查登录名数据绑定!"); // 添加模型数据 +// return mv; +// } +// 获取当前绑定人员登录名 +// String changleLoginName = users.get(0).get("changleLoginName"); + String salt = "-"; + Date date = new Date(); + String ticket = userLoginName+salt+date.getTime(); + String toUrl = request.getParameter("tourl"); + String type = request.getParameter("type"); + String toEncodeUrl = URLEncoder.encode(toUrl, "UTF-8"); + + String pathUrl = configVo.getParamVal(DhxFlowConstants.flowUrl.name())+ + configVo.getParamVal(DhxFlowConstants.dhxflowssourl.name())+ticket+"&tourl="+toEncodeUrl; +// 判断登录是否移动端 + if("H5".equals(type)){ +// 长乐rest用户名 + String changleRestUsername = configVo.getParamVal(DhxFlowConstants.flowRestUsername.name()); +// 长乐rest密码 + String changleRestPassword = configVo.getParamVal(DhxFlowConstants.flowRestPassword.name()); +// 长乐获取tokenUrl + String url = configVo.getParamVal(DhxFlowConstants.flowUrl.name())+ + configVo.getParamVal(DhxFlowConstants.TokenUrl.name()); +// 调用接口获取TOKEN信息 + String token = GetToken.changleToken(url,changleRestUsername,changleRestPassword,userLoginName); + + pathUrl = configVo.getParamVal(DhxFlowConstants.flowUrl.name())+ + configVo.getParamVal(DhxFlowConstants.dhxflowssoh5url.name())+token+"&html="+toEncodeUrl+"&loginName="+userLoginName; + } + System.out.println(pathUrl); + response.sendRedirect(pathUrl); + return null; + + } + + +} diff --git a/src/com/seeyon/apps/src_dhxbacklog/util/GetToken.java b/src/com/seeyon/apps/src_dhxbacklog/util/GetToken.java new file mode 100644 index 0000000..ea546c4 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxbacklog/util/GetToken.java @@ -0,0 +1,23 @@ +package com.seeyon.apps.src_dhxbacklog.util; + +import com.alibaba.fastjson.JSON; + +public class GetToken { + public static String changleToken(String changleURL , String restName,String restPassword,String loginName){ +// String url = "http://127.0.0.1/seeyon/rest/token/" + restName + "/" + restPassword + "?loginName=" + loginName; + String url = changleURL + restName + "/" + restPassword + "?loginName=" + loginName; + + String msg = HttpRequestUtils.httpGet(url); + + String token = null; + if (msg.length()>70){ + com.alibaba.fastjson.JSONObject object = JSON.parseObject(msg); + Object id = object.get("id"); + token = id.toString(); + }else { + token = msg; + } + + return token; + } +} diff --git a/src/com/seeyon/apps/src_dhxbacklog/util/HttpRequestUtils.java b/src/com/seeyon/apps/src_dhxbacklog/util/HttpRequestUtils.java new file mode 100644 index 0000000..e708e69 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxbacklog/util/HttpRequestUtils.java @@ -0,0 +1,241 @@ +package com.seeyon.apps.src_dhxbacklog.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLDecoder; +import java.util.Map; +import java.util.Set; + +public class HttpRequestUtils { + /** + * post请求 + * + * @param url + * url地址 + * @param jsonParam + * 参数 + * @param needResponse + * 需要返回结果 + * @return + */ + public static String httpPost(String url, JSONObject jsonParam, + boolean needResponse) { + // post请求返回结果 + DefaultHttpClient httpClient = new DefaultHttpClient(); + String jsonResult = null; + HttpPost method = new HttpPost(url); + try { + if (null != jsonParam) { + // 解决中文乱码问题 + StringEntity entity = new StringEntity(jsonParam.toString(), + "utf-8"); + entity.setContentEncoding("UTF-8"); + entity.setContentType("application/json"); + method.setEntity(entity); + } + HttpResponse result = httpClient.execute(method); + url = URLDecoder.decode(url, "UTF-8"); + /** 请求发送成功,并得到响应 **/ + if (result.getStatusLine().getStatusCode() == 200) { + String str = ""; + try { + /** 读取服务器返回过来的json字符串数据 **/ + str = EntityUtils.toString(result.getEntity()); + if (!needResponse) { + return null; + } + /** 把json字符串转换成json对象 **/ + jsonResult = str; + } catch (Exception e) { + System.out.println("post请求提交失败:" + url); + } + } + } catch (IOException e) { + System.out.println("post请求提交失败:" + url); + } + return jsonResult; + } + + /** + * 发送get请求 + * + * @param url + * 路径 + * @return + */ + public static String httpGet(String url) { + // get请求返回结果 + JSONObject jsonObject = null; + String strResult = ""; + try { + DefaultHttpClient client = new DefaultHttpClient(); + // 发送get请求 + HttpGet request = new HttpGet(url); + HttpResponse response = client.execute(request); + /** 请求发送成功,并得到响应 **/ + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + /** 读取服务器返回过来的json字符串数据 **/ + strResult = EntityUtils.toString(response.getEntity()); + /** 把json字符串转换成json对象 **/ + url = URLDecoder.decode(url, "UTF-8"); + } else { + System.out.println("get请求提交失败:" + url); + } + } catch (IOException e) { + System.out.println("get请求提交失败:" + url); + } + return strResult; + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url + * 发送请求的 URL + * @param param + * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String sendPost(String url, JSONObject param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + StringEntity entity = new StringEntity(param.toString(), "utf-8"); + // 发送请求参数 + out.print(entity); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result; + } + + public static String doPost(String url, Map params, + String charset) { + StringBuffer response = new StringBuffer(); + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + // 设置Http Post数据 + method.setRequestHeader("Content-Type", + "application/x-www-form-urlencoded;charset=" + charset); + if (params != null) { + Set keySet = params.keySet(); + NameValuePair[] param = new NameValuePair[keySet.size()]; + int i = 0; + for (String key : keySet) { + param[i] = new NameValuePair(key, params.get(key)); + i++; + } + method.setRequestBody(param); + } + InputStream responseBodyStream = null; + InputStreamReader streamReader = null; + BufferedReader reader = null; + try { + client.executeMethod(method); + if (method.getStatusCode() == HttpStatus.SC_OK) { + responseBodyStream = method.getResponseBodyAsStream(); + streamReader = new InputStreamReader(responseBodyStream, + charset); + reader = new BufferedReader(streamReader); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + } + } catch (IOException e) { + } finally { + try { + responseBodyStream.close(); + streamReader.close(); + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + method.releaseConnection(); + } + return response.toString(); + } + + public static String transport(String url, String message) { + StringBuffer sb = new StringBuffer(); + try { + URL urls = new URL(url); + HttpURLConnection uc = (HttpURLConnection) urls.openConnection(); + uc.setRequestMethod("POST"); + uc.setRequestProperty("content-type", + "application/x-www-form-urlencoded"); + uc.setRequestProperty("charset", "UTF-8"); + uc.setDoOutput(true); + uc.setDoInput(true); + uc.setReadTimeout(10000); + uc.setConnectTimeout(10000); + OutputStream os = uc.getOutputStream(); + DataOutputStream dos = new DataOutputStream(os); + dos.write(message.getBytes("utf-8")); + dos.flush(); + os.close(); + BufferedReader in = new BufferedReader(new InputStreamReader( + uc.getInputStream(), "utf-8")); + String readLine = ""; + while ((readLine = in.readLine()) != null) { + sb.append(readLine); + } + in.close(); + } catch (Exception e) { + } + return sb.toString(); + } + +} + diff --git a/src/com/seeyon/apps/src_dhxorganization/DhxPluginApi.java b/src/com/seeyon/apps/src_dhxorganization/DhxPluginApi.java new file mode 100644 index 0000000..67e333e --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/DhxPluginApi.java @@ -0,0 +1,46 @@ +package com.seeyon.apps.src_dhxorganization; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_dhxorganization.constants.DhxConstants; + + +public class DhxPluginApi extends APluginInfoApi { + public DhxPluginApi() { + } + + public String getPluginId() { + System.out.println(DhxConstants.getPluginId()); + return DhxConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "U8C集成管理"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + DhxConstants[] var2 = DhxConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + DhxConstants value = var2[var4]; + if (value != DhxConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } + +// public void registerCustomEvent(Map eventAndNodes) { +// eventAndNodes.put("propertyDispose", "资产管理待办推送"); +// } +} + diff --git a/src/com/seeyon/apps/src_dhxorganization/archive/ArchiveCommonNode.java b/src/com/seeyon/apps/src_dhxorganization/archive/ArchiveCommonNode.java new file mode 100644 index 0000000..5d37ed2 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/archive/ArchiveCommonNode.java @@ -0,0 +1,106 @@ +package com.seeyon.apps.src_dhxorganization.archive; + +import cn.hutool.log.Log; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_dhxorganization.util.Cap4ReturnUtil; +import com.seeyon.apps.src_dhxorganization.util.DhxHttpUtil; +import com.seeyon.apps.src_dhxorganization.util.ParamUtil; +import com.seeyon.apps.src_dhxorganization.constants.DhxConstants; +import com.seeyon.apps.src_dhxorganization.vo.DhxResponse; +import com.seeyon.cap4.form.api.FormDataApi4Cap4; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; + +public abstract class ArchiveCommonNode extends ACommonSuperNode { + + private static Log log = Log.get(ArchiveCommonNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getPluginId() { + return DhxConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getU8cConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + protected FormDataApi4Cap4 formDataApi4Cap4; + + public void setFormDataApi4Cap4(FormDataApi4Cap4 formDataApi4Cap4) { + this.formDataApi4Cap4 = formDataApi4Cap4; + } + + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + SuperNodeContext context = new SuperNodeContext(); + System.out.println("开始处理单据"+getNodeId()); + ParamUtil paramUtil = new ParamUtil(); + String param = paramUtil.param(request,getMethod(),formDataVo); + Cap4ReturnUtil cap4ReturnUtil = new Cap4ReturnUtil(); + try { + FieldDataVo fhjg = formDataVo.getFieldData("U8C-返回结果"); + String value = fhjg.getStringValue(); + if(value.startsWith("推送U8C成功")) { + return context.success("跳过:" + value); + } + } catch (Exception e) { + context.setException(true); + context.back("处理异常:OA跳过处理异常:" + e.getMessage()); + formDataVo.getNewFieldDataMap().put("U8C-返回结果", "处理异常:OA跳过处理异常:" + e.getMessage()); + } + ConfigVo configVo = getU8cConfig(); + context.setNeedSave(true); + String url = configVo.getParamVal(DhxConstants.test.name()); + url += getMethod(); + context.setRequest(param); + context.setUrl(url); + try { + String u8cSystem = configVo.getParamVal(DhxConstants.test.name()); + log.info(param); + String response = DhxHttpUtil.doPost(url, param); + System.out.println(response); + context.setResponse(response); + DhxResponse u8cResponse = DhxHttpUtil.parseResponse(response); + if(u8cResponse.isSuccess()) { + cap4ReturnUtil.setParamReturn(getMethod(),u8cResponse,formDataVo,getNodeId()); + System.out.println("参数处理完成"+u8cResponse); + log.info(u8cResponse.getData()); + System.out.println("推送成功显示"+u8cResponse.getStatus()); + context.success("推送U8C成功:" + u8cResponse.getStatus(), false); + formDataVo.getNewFieldDataMap().put("返回结果", "推送成功:" + u8cResponse.getStatus()); + + } else { + context.setErrMsg(u8cResponse.getMsg()); + context.back("推送U8C失败:" + u8cResponse.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "推送失败:" + u8cResponse.getMsg()); + } + } catch (Exception e) { + context.setException(true); + context.back("推送U8C失败:OA处理异常:" + e.getMessage()); + formDataVo.getNewFieldDataMap().put("返回结果", "推送失败:OA处理异常" + e.getMessage()); + } + return context; + } + + + public abstract String getMethod(); + +} diff --git a/src/com/seeyon/apps/src_dhxorganization/archive/node/UpdateHireFilesNode.java b/src/com/seeyon/apps/src_dhxorganization/archive/node/UpdateHireFilesNode.java new file mode 100644 index 0000000..cf4d70f --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/archive/node/UpdateHireFilesNode.java @@ -0,0 +1,22 @@ +package com.seeyon.apps.src_dhxorganization.archive.node; + +import com.seeyon.apps.src_dhxorganization.archive.ArchiveCommonNode; + +public class UpdateHireFilesNode extends ArchiveCommonNode { + + + @Override + public String getMethod() { + return "/seeyon/rest/cap4/form/soap/batch-update"; + } + + @Override + public String getNodeId() { + return "UpdateHireFilesNode"; + } + + @Override + public String getNodeName() { + return "员工录用审批保存人才库信息"; + } +} diff --git a/src/com/seeyon/apps/src_dhxorganization/constants/DhxConstants.java b/src/com/seeyon/apps/src_dhxorganization/constants/DhxConstants.java new file mode 100644 index 0000000..1bc9e51 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/constants/DhxConstants.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_dhxorganization.constants; + +public enum DhxConstants { + + + plugin("ydctu8c","插件ID"), + test("test","test"); + + DhxConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + private String defaultValue; + private String description; + + public String getDefaultValue() { + return defaultValue; + } + + public String getDescription() { + return description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/src/com/seeyon/apps/src_dhxorganization/member/MemberCommonNode.java b/src/com/seeyon/apps/src_dhxorganization/member/MemberCommonNode.java new file mode 100644 index 0000000..51a6461 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/member/MemberCommonNode.java @@ -0,0 +1,107 @@ +package com.seeyon.apps.src_dhxorganization.member; + +import cn.hutool.log.Log; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_dhxorganization.util.Cap4ReturnUtil; +import com.seeyon.apps.src_dhxorganization.util.DhxHttpUtil; +import com.seeyon.apps.src_dhxorganization.util.ParamUtil; +import com.seeyon.apps.src_dhxorganization.constants.DhxConstants; +import com.seeyon.apps.src_dhxorganization.vo.DhxResponse; +import com.seeyon.cap4.form.api.FormDataApi4Cap4; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; + +public abstract class MemberCommonNode extends ACommonSuperNode { + + + private static Log log = Log.get(MemberCommonNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getPluginId() { + return DhxConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getU8cConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + protected FormDataApi4Cap4 formDataApi4Cap4; + + public void setFormDataApi4Cap4(FormDataApi4Cap4 formDataApi4Cap4) { + this.formDataApi4Cap4 = formDataApi4Cap4; + } + + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + SuperNodeContext context = new SuperNodeContext(); + System.out.println("开始处理单据"+getNodeId()); + ParamUtil paramUtil = new ParamUtil(); + String param = paramUtil.param(request,getMethod(),formDataVo); + Cap4ReturnUtil cap4ReturnUtil = new Cap4ReturnUtil(); + try { + FieldDataVo fhjg = formDataVo.getFieldData("U8C-返回结果"); + String value = fhjg.getStringValue(); + if(value.startsWith("推送U8C成功")) { + return context.success("跳过:" + value); + } + } catch (Exception e) { + context.setException(true); + context.back("处理异常:OA跳过处理异常:" + e.getMessage()); + formDataVo.getNewFieldDataMap().put("U8C-返回结果", "处理异常:OA跳过处理异常:" + e.getMessage()); + } + ConfigVo configVo = getU8cConfig(); + context.setNeedSave(true); + String url = configVo.getParamVal(DhxConstants.test.name()); + url += getMethod(); + context.setRequest(param); + context.setUrl(url); + try { + String u8cSystem = configVo.getParamVal(DhxConstants.test.name()); + log.info(param); + String response = DhxHttpUtil.doPost(url, param); + System.out.println(response); + context.setResponse(response); + DhxResponse u8cResponse = DhxHttpUtil.parseResponse(response); + if(u8cResponse.isSuccess()) { + cap4ReturnUtil.setParamReturn(getMethod(),u8cResponse,formDataVo,getNodeId()); + System.out.println("参数处理完成"+u8cResponse); + log.info(u8cResponse.getData()); + System.out.println("推送成功显示"+u8cResponse.getStatus()); + context.success("推送U8C成功:" + u8cResponse.getStatus(), false); + formDataVo.getNewFieldDataMap().put("返回结果", "推送成功:" + u8cResponse.getStatus()); + + } else { + context.setErrMsg(u8cResponse.getMsg()); + context.back("推送U8C失败:" + u8cResponse.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "推送失败:" + u8cResponse.getMsg()); + } + } catch (Exception e) { + context.setException(true); + context.back("推送U8C失败:OA处理异常:" + e.getMessage()); + formDataVo.getNewFieldDataMap().put("返回结果", "推送失败:OA处理异常" + e.getMessage()); + } + return context; + } + + + public abstract String getMethod(); + +} diff --git a/src/com/seeyon/apps/src_dhxorganization/util/Cap4ReturnUtil.java b/src/com/seeyon/apps/src_dhxorganization/util/Cap4ReturnUtil.java new file mode 100644 index 0000000..adbc633 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/util/Cap4ReturnUtil.java @@ -0,0 +1,17 @@ +package com.seeyon.apps.src_dhxorganization.util; + + +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.src_dhxorganization.vo.DhxResponse; +import com.seeyon.ctp.common.exceptions.BusinessException; + + +public class Cap4ReturnUtil { + + public void setParamReturn(String method, DhxResponse dhxResponse, FormDataVo formDataVo, String nodeId) throws BusinessException, NoSuchFieldException { + + + } + + +} diff --git a/src/com/seeyon/apps/src_dhxorganization/util/DhxHttpUtil.java b/src/com/seeyon/apps/src_dhxorganization/util/DhxHttpUtil.java new file mode 100644 index 0000000..4bf7b24 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/util/DhxHttpUtil.java @@ -0,0 +1,49 @@ +package com.seeyon.apps.src_dhxorganization.util; + +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.src_dhxorganization.vo.DhxResponse; +import com.seeyon.ctp.util.json.JSONUtil; + +/** + * 功能描述:
+ *
+ *
+ * 
+ * + * @Author: HuangZhengguo + * @Date: 2024/4/28 + */ +public class DhxHttpUtil { + + private DhxHttpUtil() { + + } + + public static String doPost(String url, String body) throws Exception { + + return HttpRequest.post(url).header("accept", "*/*") + .header("connection", "") + .body(body).execute().body(); + } + + public static DhxResponse parseResponse(String response) throws Exception { + try { + JSONObject object = JSONUtil.parseJSONString(response, JSONObject.class); + return new DhxResponse(object); + } catch (Exception e) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("Status", "0"); + jsonObject.put("Msg", "解析json异常"); + jsonObject.put("Data", response); + return new DhxResponse(jsonObject); + } + } + + + + public static void main(String[] args) { + String url = ""; + } + +} diff --git a/src/com/seeyon/apps/src_dhxorganization/util/ParamUtil.java b/src/com/seeyon/apps/src_dhxorganization/util/ParamUtil.java new file mode 100644 index 0000000..65f9819 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/util/ParamUtil.java @@ -0,0 +1,10 @@ +package com.seeyon.apps.src_dhxorganization.util; + +import com.seeyon.apps.ext.workflow.vo.FormDataVo; + +public class ParamUtil { + + public String param(String request, String method , FormDataVo formDataVo){ + return ""; + } +} diff --git a/src/com/seeyon/apps/src_dhxorganization/vo/DhxResponse.java b/src/com/seeyon/apps/src_dhxorganization/vo/DhxResponse.java new file mode 100644 index 0000000..e60e0a6 --- /dev/null +++ b/src/com/seeyon/apps/src_dhxorganization/vo/DhxResponse.java @@ -0,0 +1,76 @@ +package com.seeyon.apps.src_dhxorganization.vo; + +import com.alibaba.fastjson.JSONObject; + +/** + * 功能描述:
+ *
+ *
+ * 
+ * + * @Author: HuangZhengguo + * @Date: 2024/4/28 + */ +public class DhxResponse { + + private boolean success; + private int status; + private String msg; + private String data; + + + public DhxResponse(JSONObject object) { + if(object.containsKey("Status")) { + this.status = object.getInteger("Status"); + } else { + this.status = object.getString("status").equals("success")?1:2; + } + this.success = (1 == status); + if(object.containsKey("Msg")) { + this.msg = object.getString("Msg"); + } else { + this.msg = object.getString("errormsg"); + } + if(object.containsKey("Data")) { + this.data = object.getString("Data"); + } else { + this.data = object.getString("data"); + } + } + + public boolean isSuccess() { + return success; + } + + public DhxResponse setSuccess(boolean success) { + this.success = success; + return this; + } + + public int getStatus() { + return status; + } + + public DhxResponse setStatus(int status) { + this.status = status; + return this; + } + + public String getMsg() { + return msg; + } + + public DhxResponse setMsg(String msg) { + this.msg = msg; + return this; + } + + public String getData() { + return data; + } + + public DhxResponse setData(String data) { + this.data = data; + return this; + } +} diff --git a/src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java b/src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java index 0a0cd39..d0aa41f 100644 --- a/src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java +++ b/src/com/seeyon/apps/src_dingding/ctrl/StartTaskController.java @@ -6,15 +6,15 @@ import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.springframework.web.servlet.ModelAndView; - -import com.seeyon.apps.src_dingding.service.DingdingService; -import com.seeyon.apps.src_dingding.task.DingdingTask; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.controller.BaseController; import com.seeyon.ctp.common.exceptions.BusinessException; import com.seeyon.ctp.common.quartz.QuartzHolder; import com.seeyon.ctp.util.annotation.NeedlessCheckLogin; +import org.springframework.web.servlet.ModelAndView; + +import com.seeyon.apps.src_dingding.service.DingdingService; +import com.seeyon.apps.src_dingding.task.DingdingTask; import com.taobao.api.ApiException; /** diff --git a/src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java b/src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java index 1dacd7a..33bdaa4 100644 --- a/src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java +++ b/src/com/seeyon/apps/src_dingding/dao/DingdingDaoImpl.java @@ -11,14 +11,14 @@ import java.util.Map; import com.seeyon.apps.src_dingding.vo.AttendanceVo; import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.util.JDBCAgent; +import com.seeyon.ctp.util.UUIDLong; import nc.vo.jcom.lang.StringUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.seeyon.apps.src_dingding.util.BaseUtil; -import com.seeyon.ctp.common.exceptions.BusinessException; -import com.seeyon.ctp.util.JDBCAgent; -import com.seeyon.ctp.util.UUIDLong; public class DingdingDaoImpl extends BaseUtil implements IDingdingDao{ diff --git a/src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java b/src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java index 8962571..ce7e4f2 100644 --- a/src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java +++ b/src/com/seeyon/apps/src_dingding/dao/IDingdingDao.java @@ -7,7 +7,6 @@ import java.util.Map; import com.seeyon.apps.src_dingding.vo.AttendanceVo; import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo; import com.seeyon.ctp.common.exceptions.BusinessException; -import com.seeyon.ctp.organization.bo.V3xOrgMember; public interface IDingdingDao { @@ -40,7 +39,7 @@ public interface IDingdingDao { * @throws BusinessException * @throws SQLException */ - public Map getdeptByPathName(String path,String name)throws BusinessException, SQLException; + public Map getdeptByPathName(String path,String name)throws BusinessException, SQLException, BusinessException; /** * 查询部门对照表中所有的部门信息 diff --git a/src/com/seeyon/apps/src_dingding/service/DingdingService.java b/src/com/seeyon/apps/src_dingding/service/DingdingService.java index e023e5c..e97a85e 100644 --- a/src/com/seeyon/apps/src_dingding/service/DingdingService.java +++ b/src/com/seeyon/apps/src_dingding/service/DingdingService.java @@ -10,8 +10,15 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + import com.seeyon.apps.src_dingding.vo.AttendanceVo; import com.seeyon.apps.src_dingding.vo.CheckOnWorkAttendanceVo; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.organization.bo.V3xOrgAccount; +import com.seeyon.ctp.organization.bo.V3xOrgMember; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.services.ServiceException; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -21,12 +28,6 @@ import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.src_dingding.dao.IDingdingDao; import com.seeyon.apps.src_dingding.util.DingtalkUtil; import com.seeyon.apps.src_dingding.util.FormExportUtil; -import com.seeyon.ctp.common.AppContext; -import com.seeyon.ctp.common.exceptions.BusinessException; -import com.seeyon.ctp.organization.bo.V3xOrgAccount; -import com.seeyon.ctp.organization.bo.V3xOrgMember; -import com.seeyon.ctp.organization.manager.OrgManager; -import com.seeyon.ctp.services.ServiceException; import com.seeyon.v3x.services.form.FormFactory; import com.seeyon.v3x.services.form.bean.FormExport; import com.seeyon.v3x.services.form.bean.SubordinateFormExport; diff --git a/src/com/seeyon/apps/src_dingding/task/DingdingTask.java b/src/com/seeyon/apps/src_dingding/task/DingdingTask.java index 80480a1..9f9faea 100644 --- a/src/com/seeyon/apps/src_dingding/task/DingdingTask.java +++ b/src/com/seeyon/apps/src_dingding/task/DingdingTask.java @@ -1,26 +1,20 @@ package com.seeyon.apps.src_dingding.task; -import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.quartz.QuartzHolder; +import com.seeyon.ctp.common.quartz.QuartzJob; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.src_dingding.service.DingdingService; -import com.seeyon.ctp.common.AppContext; //import com.seeyon.apps.src_automatic.task.PushAuCardTask; //import com.seeyon.apps.src_bill_detail.manager.PushZcService; -import com.seeyon.ctp.common.quartz.QuartzHolder; -import com.seeyon.ctp.common.quartz.QuartzJob; -import com.seeyon.ctp.util.SDFCoder; -import com.seeyon.ctp.util.UUIDLong; -import com.seeyon.ctp.util.json.JSONUtil; + /** * 自动计算任务 diff --git a/src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java b/src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java index 431aa1d..cf212aa 100644 --- a/src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java +++ b/src/com/seeyon/apps/src_dingding/util/DingtalkUtil.java @@ -122,6 +122,6 @@ public class DingtalkUtil { } JSONObject json = JSONObject.parseObject(result); return json; - } + } diff --git a/src/com/seeyon/apps/src_dingding/util/TimeUtil.java b/src/com/seeyon/apps/src_dingding/util/TimeUtil.java index 4a14e50..e205ac5 100644 --- a/src/com/seeyon/apps/src_dingding/util/TimeUtil.java +++ b/src/com/seeyon/apps/src_dingding/util/TimeUtil.java @@ -1,26 +1,21 @@ package com.seeyon.apps.src_dingding.util; -import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; import com.seeyon.ctp.common.exceptions.BusinessException; -import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; import com.seeyon.ctp.util.JDBCAgent; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + public class TimeUtil { private EnumManager enumManagerNew; public EnumManager getEnumManager() { if (this.enumManagerNew == null) { - this.enumManagerNew = ((EnumManager)AppContext.getBean("enumManagerNew")); + this.enumManagerNew = ((EnumManager) AppContext.getBean("enumManagerNew")); } return enumManagerNew; } diff --git a/src/com/seeyon/apps/src_mainorganization/bo/ReceiveOrgMemberResponse.java b/src/com/seeyon/apps/src_mainorganization/bo/ReceiveOrgMemberResponse.java new file mode 100644 index 0000000..e2a31e2 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/bo/ReceiveOrgMemberResponse.java @@ -0,0 +1,56 @@ +package com.seeyon.apps.src_mainorganization.bo; + +import com.alibaba.fastjson.JSONObject; + +public class ReceiveOrgMemberResponse { + + private boolean success; + private int status; + private String msg; + private String data; + public ReceiveOrgMemberResponse() {} + public ReceiveOrgMemberResponse(JSONObject object) { + + this.status = object.getString("status").equals("1")?1:2; + this.success = (1 == status); + this.msg = object.getString("msg"); + this.data = object.getString("data"); + } + + public boolean isSuccess() { + return success; + } + + public ReceiveOrgMemberResponse setSuccess(boolean success) { + this.success = success; + return this; + } + + public int getStatus() { + return status; + } + + public ReceiveOrgMemberResponse setStatus(int status) { + this.status = status; + return this; + } + + public String getMsg() { + return msg; + } + + public ReceiveOrgMemberResponse setMsg(String msg) { + this.msg = msg; + return this; + } + + public String getData() { + return data; + } + + public ReceiveOrgMemberResponse setData(String data) { + this.data = data; + return this; + } + +} diff --git a/src/com/seeyon/apps/src_mainorganization/dao/ISrcEnumDao.java b/src/com/seeyon/apps/src_mainorganization/dao/ISrcEnumDao.java new file mode 100644 index 0000000..cb72dd1 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/dao/ISrcEnumDao.java @@ -0,0 +1,9 @@ +package com.seeyon.apps.src_mainorganization.dao; + +public interface ISrcEnumDao { + + public String getEnumByExtAttr(String extAttrName); + + public String getEnumItemByRefEnumIdValue(String refEnumId, String enumValue); + +} diff --git a/src/com/seeyon/apps/src_mainorganization/dao/ISrcMemberDao.java b/src/com/seeyon/apps/src_mainorganization/dao/ISrcMemberDao.java new file mode 100644 index 0000000..7da8c9e --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/dao/ISrcMemberDao.java @@ -0,0 +1,7 @@ +package com.seeyon.apps.src_mainorganization.dao; + +public interface ISrcMemberDao { + + public String getMemberMaxSortId(); + +} diff --git a/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcEnumDaoImpl.java b/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcEnumDaoImpl.java new file mode 100644 index 0000000..6c8f9a5 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcEnumDaoImpl.java @@ -0,0 +1,74 @@ +package com.seeyon.apps.src_mainorganization.dao.impl; + +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.src_mainorganization.dao.ISrcEnumDao; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.util.JDBCAgent; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class SrcEnumDaoImpl implements ISrcEnumDao { + + private String getEnumByExtAttr = "select label,name,alias,column_rule from ctp_metadata_column where name = ?"; + private String getEnumItemByRefEnumIdValue = "select id,ref_enumid,showvalue,enumvalue from ctp_enum_item where ref_enumid = ? and enumvalue = ?"; + + @Override + public String getEnumByExtAttr(String extAttrName) { + JDBCAgent agent = new JDBCAgent(); + String enumId = ""; + try { + StringBuilder sql = new StringBuilder(this.getEnumByExtAttr); + List p = new ArrayList(); + p.add(extAttrName); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + if(list.size()>0){ + Map map = (Map) list.get(0); + String columnRule = map.get("column_rule").toString(); + JSONObject column = JSONObject.parseObject(columnRule); + enumId = column.getString("codeId"); + } + } catch (BusinessException var13) { + var13.printStackTrace(); + } catch (SQLException var14) { + var14.printStackTrace(); + } finally { + if (agent != null) { + agent.close(); + } + } + return enumId; + } + + @Override + public String getEnumItemByRefEnumIdValue(String refEnumId,String enumValue) { + JDBCAgent agent = new JDBCAgent(); + String enumItemId = ""; + try { + StringBuilder sql = new StringBuilder(this.getEnumItemByRefEnumIdValue); + List p = new ArrayList(); + p.add(refEnumId); + p.add(enumValue); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + if(list.size()>0){ + enumItemId = list.get(0).get("id").toString(); + } + } catch (BusinessException var13) { + var13.printStackTrace(); + } catch (SQLException var14) { + var14.printStackTrace(); + } finally { + if (agent != null) { + agent.close(); + } + } + return enumItemId; + } + + + +} diff --git a/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcMemberDaoImpl.java b/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcMemberDaoImpl.java new file mode 100644 index 0000000..2afd90b --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/dao/impl/SrcMemberDaoImpl.java @@ -0,0 +1,41 @@ +package com.seeyon.apps.src_mainorganization.dao.impl; + +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.src_mainorganization.dao.ISrcMemberDao; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.util.JDBCAgent; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class SrcMemberDaoImpl implements ISrcMemberDao { + + private String getMemberMaxSortId = "select max(sort_id) as max_sort_id from org_member "; + + @Override + public String getMemberMaxSortId() { + JDBCAgent agent = new JDBCAgent(); + String sortId = ""; + try { + StringBuilder sql = new StringBuilder(this.getMemberMaxSortId); + List p = new ArrayList(); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + if(list.size()>0){ + Map map = (Map) list.get(0); + sortId = map.get("max_sort_id").toString(); + } + } catch (BusinessException var13) { + var13.printStackTrace(); + } catch (SQLException var14) { + var14.printStackTrace(); + } finally { + if (agent != null) { + agent.close(); + } + } + return sortId; + } +} diff --git a/src/com/seeyon/apps/src_mainorganization/service/IReceiveOrgMemberService.java b/src/com/seeyon/apps/src_mainorganization/service/IReceiveOrgMemberService.java new file mode 100644 index 0000000..5dd9830 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/service/IReceiveOrgMemberService.java @@ -0,0 +1,27 @@ +package com.seeyon.apps.src_mainorganization.service; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.seeyon.apps.src_mainorganization.bo.ReceiveOrgMemberResponse; +import com.seeyon.ctp.common.exceptions.BusinessException; + +import java.text.ParseException; + +public interface IReceiveOrgMemberService { + + /** + * 调用接口保存人员到组织架构平台 + * @param memberParam + * @return + */ + public ReceiveOrgMemberResponse saveMemberMain(JSONObject memberParam) throws BusinessException, ParseException, JsonProcessingException; + + /** + * 调用接口更新人员到组织架构平台 + * @param memberParam + * @return + */ + public ReceiveOrgMemberResponse updateMemberMain(JSONObject memberParam) throws BusinessException, ParseException, JsonProcessingException; + + +} diff --git a/src/com/seeyon/apps/src_mainorganization/service/impl/ReceiveOrgMemberServiceImpl.java b/src/com/seeyon/apps/src_mainorganization/service/impl/ReceiveOrgMemberServiceImpl.java new file mode 100644 index 0000000..41639df --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/service/impl/ReceiveOrgMemberServiceImpl.java @@ -0,0 +1,612 @@ +package com.seeyon.apps.src_mainorganization.service.impl; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.seeyon.apps.addressbook.manager.AddressBookCustomerFieldInfoManager; +import com.seeyon.apps.addressbook.po.AddressBook; +import com.seeyon.apps.src_mainorganization.bo.ReceiveOrgMemberResponse; +import com.seeyon.apps.src_mainorganization.dao.ISrcEnumDao; +import com.seeyon.apps.src_mainorganization.dao.ISrcMemberDao; +import com.seeyon.apps.src_mainorganization.service.IReceiveOrgMemberService; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.organization.bo.*; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.organization.manager.OrgManagerDirect; +import www.seeyon.com.utils.StringUtil; + +import javax.inject.Inject; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class ReceiveOrgMemberServiceImpl implements IReceiveOrgMemberService { + + private static Log log = Log.get(ReceiveOrgMemberServiceImpl.class); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Inject + private AddressBookCustomerFieldInfoManager addressBookCustomerFieldInfoManager; + @Inject + private ISrcEnumDao srcEnumDao; + @Inject + private ISrcMemberDao srcMemberDao; + @Inject + private OrgManagerDirect orgManagerDirect; + @Inject + private OrgManager orgManager; + + @Override + public ReceiveOrgMemberResponse saveMemberMain(JSONObject memberParam) throws BusinessException, ParseException, JsonProcessingException { + V3xOrgMember member = new V3xOrgMember(); +// 创建人员ID + if(StringUtil.isNotEmpty(memberParam.getString("id"))){ + member.setId(memberParam.getLong("id")); + }else{ + member.setIdIfNew(); + } + member.setName(memberParam.getString("name")); + member.setCode(memberParam.getString("code")); + member.setTelNumber(memberParam.getString("telNumber")); + String birthday = memberParam.getString("birthday"); + if(StringUtil.isNotEmpty(birthday)){ + member.setProperty("birthday",sdf.parse(birthday)); + } + String hiredate = memberParam.getString("hiredate"); + if(StringUtil.isNotEmpty(hiredate)){ + member.setProperty("hiredate",sdf.parse(hiredate)); + } + String gender = memberParam.getString("gender"); + member.setProperty("gender",gender); + + V3xOrgPrincipal v3xOrgPrincipal = new V3xOrgPrincipal(); + v3xOrgPrincipal.setLoginName(memberParam.getString("loginName")); + v3xOrgPrincipal.setMemberId(member.getId()); + v3xOrgPrincipal.setPassword("123456"); + member.setV3xOrgPrincipal(v3xOrgPrincipal); + + member.setOrgLevelId(memberParam.getLongValue("orgLevelId")); + member.setOrgDepartmentId(memberParam.getLongValue("orgDepartmentId")); + member.setOrgPostId(memberParam.getLongValue("orgPostId")); + member.setOrgAccountId(memberParam.getLongValue("orgAccountId")); + // 排序号 +// member.setSortId(1L); +// 查询当前环境最大排序号 + String sortId = memberParam.getString("sortId"); + if(StringUtil.isNotEmpty(sortId)){ + member.setSortId(Long.parseLong(sortId)); + }else{ + String maxSortId = srcMemberDao.getMemberMaxSortId(); + if(StringUtil.isNotEmpty(maxSortId)){ + member.setSortId(Long.parseLong(maxSortId)+1); + }else{ + member.setSortId(-1l); + } + } + System.out.println("当前人员执行过程中的排序号为"+member.getSortId()); + AddressBook addressBook = new AddressBook(); + addressBook = setAddressBooks(addressBook,memberParam); + addressBook.setMemberId(member.getId()); + addressBook.setIdIfNew(); + addressBookCustomerFieldInfoManager.addAddressBook(addressBook); + OrganizationMessage mes = orgManagerDirect.addMember(member); + + JSONObject jsonObject = new JSONObject(); + if(mes.isSuccess()) { + List successMsgs = mes.getSuccessMsgs(); + OrganizationMessage.OrgMessage successMsg =successMsgs.get(0); + V3xOrgEntity v3xOrgEntity = successMsg.getEnt(); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + // 将对象转换为JSON字符串 + String json = objectMapper.writeValueAsString(v3xOrgEntity); + long memberId = v3xOrgEntity.getId(); + log.info("人员添加成功"+v3xOrgEntity.getName()+":"+v3xOrgEntity.getId()); + jsonObject.put("status","1"); + jsonObject.put("msg","创建成功:"+memberId); + jsonObject.put("data",json); + + }else { + log.info("人员添加失败"+mes.getErrorMsgInfos().get(0).getMsgInfo()); + jsonObject.put("status","2"); + jsonObject.put("msg","添加失败"+mes.getErrorMsgInfos().get(0).getMsgInfo()); + jsonObject.put("data",""); + } + ReceiveOrgMemberResponse receiveOrgMemberResponse = new ReceiveOrgMemberResponse(jsonObject); + return receiveOrgMemberResponse; + } + + + @Override + public ReceiveOrgMemberResponse updateMemberMain(JSONObject memberParam) throws BusinessException, ParseException, JsonProcessingException { + String memberId = memberParam.getString("id"); + +// 根据ID查询人员信息 + V3xOrgMember member = orgManager.getMemberById(Long.parseLong(memberId)); +// 判断是否修改名称 + if(StringUtil.isNotEmpty(memberParam.getString("name"))){ + member.setName(memberParam.getString("name")); + } +// 判断是否修改编号 + if(StringUtil.isNotEmpty(memberParam.getString("code"))){ + member.setCode(memberParam.getString("code")); + } +// 判断是否修改手机号 + if(StringUtil.isNotEmpty(memberParam.getString("telNumber"))){ + member.setTelNumber(memberParam.getString("telNumber")); + } +// 判断是否修改生日 + String birthday = memberParam.getString("birthday"); + if(StringUtil.isNotEmpty(birthday)){ + member.setProperty("birthday",sdf.parse(birthday)); + } +// 判断是否修改性别 + if(StringUtil.isNotEmpty(memberParam.getString("gender"))){ + member.setProperty("gender",memberParam.getString("gender")); + } +// 判断是否修改账号 + if(StringUtil.isNotEmpty(memberParam.getString("loginName"))){ + V3xOrgPrincipal v3xOrgPrincipal = new V3xOrgPrincipal(); + v3xOrgPrincipal.setLoginName(memberParam.getString("loginName")); + v3xOrgPrincipal.setMemberId(member.getId()); + v3xOrgPrincipal.setPassword("123456"); + member.setV3xOrgPrincipal(v3xOrgPrincipal); + } +// 判断组织架构信息是否修改 + if(memberParam.getLongValue("orgLevelId")!=0){ + member.setOrgLevelId(memberParam.getLongValue("orgLevelId")); + } + if(memberParam.getLongValue("orgDepartmentId")!=0){ + member.setOrgDepartmentId(memberParam.getLongValue("orgDepartmentId")); + } + if(memberParam.getLongValue("orgPostId")!=0){ + member.setOrgPostId(memberParam.getLongValue("orgPostId")); + } + if(memberParam.getLongValue("orgAccountId")!=0){ + member.setOrgAccountId(memberParam.getLongValue("orgAccountId")); + } +// 判断是否修改人员状态 + if(StringUtil.isNotEmpty(memberParam.getString("state"))){ + member.setState(memberParam.getInteger("state")); + } +// 判断是否修改启用状态 + if(StringUtil.isNotEmpty(memberParam.getString("enabled"))){ + member.setEnabled(memberParam.getBooleanValue("enabled")); + } +// 判断是否修改删除状态 + if(StringUtil.isNotEmpty(memberParam.getString("isDeleted"))){ + member.setIsDeleted(memberParam.getBooleanValue("isDeleted")); + } +// 判断是否修改类型 + if(StringUtil.isNotEmpty(memberParam.getString("type"))){ + member.setType(memberParam.getInteger("type")); + } +// 判断是否同步副岗 + JSONArray secondPosts = memberParam.getJSONArray("second_post"); + if(secondPosts!=null){ + if(secondPosts.size()>0){ + List memberPosts = new ArrayList(); + for(int i = 0 ; i < secondPosts.size(); i++){ + JSONObject secondPost = secondPosts.getJSONObject(i); + MemberPost memberPost = new MemberPost(); + memberPost.setPostId(secondPost.getLongValue("postId")); + memberPost.setOrgAccountId(secondPost.getLongValue("orgAccountId")); + memberPost.setDepId(secondPost.getLongValue("deptId")); + memberPost.setMemberId(secondPost.getLongValue("memberId")); + memberPosts.add(memberPost); + } + member.setSecond_post(memberPosts); + } + } + + // 排序号 +// member.setSortId(1L); + String sortId = memberParam.getString("sortId"); + if(StringUtil.isNotEmpty(sortId)){ + member.setSortId(Long.parseLong(sortId)); + } + AddressBook addressBook = addressBookCustomerFieldInfoManager.getByMemberId(Long.parseLong(memberId)); + addressBook = setAddressBooks(addressBook,memberParam); + addressBookCustomerFieldInfoManager.updateAddressBook(addressBook); + OrganizationMessage mes = orgManagerDirect.updateMember(member); + + JSONObject jsonObject = new JSONObject(); + if(mes.isSuccess()) { + List successMsgs = mes.getSuccessMsgs(); + OrganizationMessage.OrgMessage successMsg =successMsgs.get(0); + V3xOrgEntity v3xOrgEntity = successMsg.getEnt(); + log.info("人员修改成功"+v3xOrgEntity.getName()+":"+v3xOrgEntity.getId()); + jsonObject.put("status","1"); + jsonObject.put("msg","修改成功:"+memberId); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + // 将对象转换为JSON字符串 + String json = objectMapper.writeValueAsString(v3xOrgEntity); + jsonObject.put("data",json); + }else { + log.info("人员修改失败"+mes.getErrorMsgInfos().get(0).getMsgInfo()); + jsonObject.put("status","2"); + jsonObject.put("msg","修改失败:"+mes.getErrorMsgInfos().get(0).getMsgInfo()); + jsonObject.put("data",""); + } + ReceiveOrgMemberResponse receiveOrgMemberResponse = new ReceiveOrgMemberResponse(jsonObject); + return receiveOrgMemberResponse; + } + + private AddressBook setAddressBooks(AddressBook addressBook, JSONObject memberParam) throws ParseException { + for (Map.Entry entry : memberParam.entrySet()) { + switch (entry.getKey()){ + case "EXT_ATTR_1":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr1(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_2":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr2(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_3":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr3(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_4":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr4(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_5":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr5(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_6":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr6(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_7":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr7(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_8":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr8(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_9":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr9(entry.getValue().toString()); + } + }case "EXT_ATTR_10":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr10(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_11":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr11(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_12":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr12(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_13":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr13(Double.parseDouble(entry.getValue().toString())); + } + }case "EXT_ATTR_14":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr14(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_15":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr15(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_16":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr16(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_17":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr17(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_18":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr18(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_19":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr19(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_20":{ + if( entry.getValue() instanceof Double){ + addressBook.setExtAttr20(Double.parseDouble(entry.getValue().toString())); + } + break; + }case "EXT_ATTR_21":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr21(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_22":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr22(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_23":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr23(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_24":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr24(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_25":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr25(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_26":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr26(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_27":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr27(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_28":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr28(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_29":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr29(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_30":{ + if(entry.getValue()!=null){ + if(isValidDate(entry.getValue().toString())){ + addressBook.setExtAttr30(sdf.parse(entry.getValue().toString())); + } + } + break; + }case "EXT_ATTR_31":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_31"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr31(enumItemId); + } + break; + }case "EXT_ATTR_32":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_32"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr32(enumItemId); + } + break; + }case "EXT_ATTR_33":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_33"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr33(enumItemId); + } + break; + }case "EXT_ATTR_34":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_34"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr34(enumItemId); + } + break; + }case "EXT_ATTR_35":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_35"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr35(enumItemId); + } + break; + }case "EXT_ATTR_36":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_36"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr36(enumItemId); + } + break; + }case "EXT_ATTR_37":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_37"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr37(enumItemId); + } + break; + }case "EXT_ATTR_38":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_38"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr38(enumItemId); + } + break; + }case "EXT_ATTR_39":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_39"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr39(enumItemId); + } + break; + }case "EXT_ATTR_40":{ + if(entry.getValue()!=null){ + String enumId = srcEnumDao.getEnumByExtAttr("EXT_ATTR_40"); + String enumItemId = srcEnumDao.getEnumItemByRefEnumIdValue(enumId,entry.getValue().toString()); + addressBook.setExtAttr40(enumItemId); + } + break; + }case "EXT_ATTR_41":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr41(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_42":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr42(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_43":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr43(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_44":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr44(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_45":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr45(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_46":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr46(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_47":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr47(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_48":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr48(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_49":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr49(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_50":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr50(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_51":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr51(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_52":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr52(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_53":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr53(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_54":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr54(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_55":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr55(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_56":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr56(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_57":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr57(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_58":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr58(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_59":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr59(entry.getValue().toString()); + } + break; + }case "EXT_ATTR_60":{ + if(entry.getValue()!=null){ + addressBook.setExtAttr60(entry.getValue().toString()); + } + break; + } + } + } + return addressBook; + } + + + + public static boolean isValidDate(String dateStr) { + List formats = Arrays.asList( + "yyyy-MM-dd", "dd/MM/yyyy", "MM/dd/yyyy", + "yyyyMMdd", "yyyy年MM月dd日", "dd-MMM-yyyy" + ); + + for (String format : formats) { + try { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); + LocalDate.parse(dateStr, formatter); + return true; + } catch (DateTimeParseException e) { + // 继续尝试下一个格式 + } + } + return false; + } + +} diff --git a/src/com/seeyon/apps/src_membermanage/MemberManageCommonNode.java b/src/com/seeyon/apps/src_membermanage/MemberManageCommonNode.java new file mode 100644 index 0000000..13e9e06 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/MemberManageCommonNode.java @@ -0,0 +1,279 @@ +package com.seeyon.apps.src_membermanage; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ParamUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +public abstract class MemberManageCommonNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberManageCommonNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + ParamUtil paramUtil = new ParamUtil(); +// 判断是否已经推送成功 + FieldDataVo fhjg = formDataVo.getFieldData("返回结果"); + String fhvalue = fhjg.getStringValue(); + if(fhvalue.contains("成功")) { + return context.success("跳过:" + fhvalue); + } +// 判断当前结果请求是否为新增 + JSONObject requestJson = JSONObject.parseObject(request); + String addOrUpdate = requestJson.getString("addOrUpdate"); + + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + switch (addOrUpdate){ + case "add":{ + System.out.println("新增"); + String param = paramUtil.formAddParam(request,formDataVo,getNodeId(),configVo); + log.info(param); + context.setRequest(param); +// 获取调用接口路径 + String formmainAddUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-add?token="+mainToken; + JSONObject res = ProtUtil.doPost(param,formmainAddUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表创建完成,返回结果为"+resDatastr); + context.success("档案表创建完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表创建失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建失败:创建异常:"+entry.getValue()); + } + } + }else{ + context.back("档案表创建失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建失败:修改异常:"+mmr.getMsg()); + } + break;} + case "update":{ + System.out.println("修改"); + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",requestJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = requestJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = formDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + String param = paramUtil.formUpdateParam(request,formDataVo,getNodeId(),configVo,formmainUpdate); + context.setRequest(param); + log.info(param); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param,formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + if("MemberEntryTalentsNode".equals(getNodeId()) || "MemberSystemAccountClosureTalentsNode".equals(getNodeId())){ + + }else{ + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + } + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + if(!"MemberEntryTalentsNode".equals(getNodeId()) ){ + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + } + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + if(!"MemberEntryTalentsNode".equals(getNodeId()) ){ + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + } + }else{ +// context.back("没有查询到需要修改的数据,请检查唯一值是否正确"); +// if(!"MemberEntryTalentsNode".equals(getNodeId()) ){ +// formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,请检查唯一值是否正确"); +// } + context.success("没有查询到需要修改的数据,跳过处理"); + if(!"MemberEntryTalentsNode".equals(getNodeId()) ){ + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,请检查唯一值是否正确"); + } + } + break;} + case "addOrUpdate":{ + System.out.println("新增和修改"); +// 查询当前信息是否已经存在,设置请求参数 + JSONObject isExistParam = new JSONObject(); + isExistParam.put("formCode",requestJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = requestJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = formDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; +// 查询当前数据是否存在 + String formmainId = ProtUtil.doGet(isExistUrl,isExistParam); + JSONObject formmainIdjson = JSONObject.parseObject(formmainId); + JSONObject formmainIdData = formmainIdjson.getJSONObject("data"); + String formmain = formmainIdData.getString("id"); + if(StringUtil.isNotEmpty(formmain)){ +// 当前数据已经存在执行修改逻辑 + String param = paramUtil.formUpdateParam(request,formDataVo,getNodeId(),configVo,formmain); + context.setRequest(param); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param,formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ +// 当前数据不存在执行新增逻辑 + String param = paramUtil.formAddParam(request,formDataVo,getNodeId(),configVo); + context.setRequest(param); + log.info(param); +// 获取调用接口路径 + String formmainAddUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-add?token="+mainToken; + JSONObject res = ProtUtil.doPost(param,formmainAddUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表创建完成,返回结果为"+resDatastr); + context.success("档案表创建完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表创建失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建失败:创建异常:"+entry.getValue()); + } + } + }else{ + context.back("档案表创建失败:创建异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表创建失败:创建异常:"+mmr.getMsg()); + } + } + break;} + default: + System.out.println("参数设置错误,请设置模板是否为新增或者修改"); + } + return context; + } + + public abstract String getMethod(); + public abstract String getRequestType(); + + + + + + +} diff --git a/src/com/seeyon/apps/src_membermanage/MemberManagePluginApi.java b/src/com/seeyon/apps/src_membermanage/MemberManagePluginApi.java new file mode 100644 index 0000000..2768635 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/MemberManagePluginApi.java @@ -0,0 +1,42 @@ +package com.seeyon.apps.src_membermanage; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; + +public class MemberManagePluginApi extends APluginInfoApi { + + public MemberManagePluginApi(){ + } + + public String getPluginId() { + System.out.println(MemberManageConstants.getPluginId()); + return MemberManageConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "主数据平台人员集成管理"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + MemberManageConstants[] var2 = MemberManageConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + MemberManageConstants value = var2[var4]; + if (value != MemberManageConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } + +} diff --git a/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java b/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java new file mode 100644 index 0000000..01e01d0 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java @@ -0,0 +1,164 @@ +package com.seeyon.apps.src_membermanage; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.OrganizationParamUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import www.seeyon.com.utils.StringUtil; + +//人员组织架构控制抽象类 +public abstract class MemberOrganizationCommonNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberOrganizationCommonNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事组织架构处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + OrganizationParamUtil organizationParamUtil = new OrganizationParamUtil(); + + FieldDataVo fhjg = formDataVo.getFieldData("组织返回结果"); + String fhvalue = fhjg.getStringValue(); + if(fhvalue.contains("完成")) { + return context.success("跳过:" + fhvalue); + } +// 判断当前结果请求是否为新增 + JSONObject requestJson = JSONObject.parseObject(request); + String addOrUpdate = requestJson.getString("addOrUpdate"); + + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + + switch (addOrUpdate){ + case "add":{ + System.out.println("新增"); + String param = organizationParamUtil.organizationAddParam(request,formDataVo,getNodeId(),configVo); + log.info(param); + context.setRequest(param); +// 获取调用接口路径 + String memberOrganizationAddUrl = mainUrl+"/seeyon/rest/orgMember/saveMemberMain?token="+mainToken; + JSONObject res = ProtUtil.doPost(param,memberOrganizationAddUrl); + log.info(res.toString()); + context.setResponse(res.toString()); +// MemberOrganizationResponse mor = new MemberOrganizationResponse(res); +// String resDatastr = mor.getData(); + JSONObject resDatastr = res.getJSONObject("data"); +// resDatastr = "{'param':'"+resDatastr+"'}"; +// JSONObject resDatajson = JSONObject.parseObject(resDatastr); +// JSONArray successMsgs = resDatajson.getJSONArray("param"); +// JSONObject successMsg = successMsgs.getJSONObject(0); + if(res.getInteger("code")==0){ +// JSONObject ent = successMsg.getJSONObject("ent"); + log.info("人员组织架构创建完成,人员名称为"+resDatastr.getString("name")+",ID为"+resDatastr.getString("id")); + context.success("人员组织架构创建完成,人员名称为"+resDatastr.getString("name"),false); + if("MemberEntryOrganizationNode".equals(getNodeId())|| "AccountOpeningOrganizationNode".equals(getNodeId())){ + formDataVo.getNewFieldDataMap().put("组织架构姓名", resDatastr.getString("id")); + } + formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构创建完成:人员名称为"+resDatastr.getString("name")); + }else{ +// JSONObject ent = successMsg.getJSONObject("ent"); +// String msgInfo = successMsg.getString("msgInfo"); + String message = res.getString("message"); +// 判断当前参数是否存在问题 + String msg = "人员组织架构创建失败:"+message; + + context.back(msg); + formDataVo.getNewFieldDataMap().put("组织返回结果", msg); + context.setErrMsg(msg); + } + break; + } + case "update":{ + System.out.println("修改"); + String param = organizationParamUtil.organizationUpdateParam(request,formDataVo,getNodeId(),configVo); + log.info(param); + context.setRequest(param); +// 查询当前人员是否存在 + JSONObject paramjson = JSONObject.parseObject(param); + String memberId = paramjson.getString("id"); +// memberId = "4176737357362384888"; + String isExistUpdateUrl = mainUrl+"/seeyon/rest/orgMember/"+memberId+"?token="+mainToken; + String isExistUpdate = ProtUtil.doGet(isExistUpdateUrl,new JSONObject()); +// 判断当前人员是否存在 + if(StringUtil.isNotEmpty(isExistUpdate)&&!"null".equals(isExistUpdate)){ +// 如果存在则执行修改操作 + String memberOrganizationUpdateUrl = mainUrl+"/seeyon/rest/orgMember/updateMemberMain?token="+mainToken; + JSONObject res = ProtUtil.doPost(param,memberOrganizationUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); +// JSONObject resjson = JSONObject.parseObject(res); +// MemberOrganizationResponse mor = new MemberOrganizationResponse(res); + if(res.getInteger("code")==0){ + String resDatastr = res.getString("data"); + JSONObject resDatajson = JSONObject.parseObject(resDatastr); + log.info("人员组织架构修改完成:人员名称为"+resDatajson.getString("name")+",ID为"+resDatajson.getString("id")); + context.success("人员组织架构修改完成:人员名称为"+resDatajson.getString("name"),false); + formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改完成:人员名称为"+resDatajson.getString("name")); + }else{ + String message = res.getString("message"); + log.info("人员组织架构修改失败:"+message); + context.back("人员组织架构修改失败:"+message); + formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改失败:"+message); + context.setErrMsg(message); + } + }else{ +// 如果不存在则返回报错信息 + log.info("人员组织架构修改失败:当前人员未查询到组织架构数据,请检查。"); + context.back("人员组织架构修改失败:当前人员未查询到组织架构数据,请检查。"); + context.setErrMsg("人员组织架构修改失败:当前人员未查询到组织架构数据,请检查。"); + formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改失败:当前人员未查询到组织架构数据,请检查。"); + } + break; + } + } + Thread.sleep(5000); + return context; + } + + public abstract String getMethod(); + public abstract String getRequestType(); + + + + + + +} diff --git a/src/com/seeyon/apps/src_membermanage/constants/MemberManageConstants.java b/src/com/seeyon/apps/src_membermanage/constants/MemberManageConstants.java new file mode 100644 index 0000000..409855b --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/constants/MemberManageConstants.java @@ -0,0 +1,38 @@ +package com.seeyon.apps.src_membermanage.constants; + +public enum MemberManageConstants { + + plugin("src_membermanage","插件ID"), + dowUrl("http://127.0.0.1:8888/seeyon/rest/attachment/file","附件下载路径"), + uploadUrl("http://127.0.0.1:8888/seeyon/rest/attachment","主数据平台上传接口"), + getTokenUrl("http://127.0.0.1:8888/seeyon/rest/token", "集团TOKEN接口路径"), + restUserName("shenxian", "集团REST用户名"), + restPassword("ccfa57fe-cf2f-4d26-a24c-a0801a431168", "集团REST密码"), + loginName("shenxian", "集团管理员登录名"), + getzsjTokenUrl("http://127.0.0.1:8888/seeyon/rest/token", "主数据TOKEN接口路径"), + restzsjUserName("shenxian", "主数据REST用户名"), + restzsjPassword("ccfa57fe-cf2f-4d26-a24c-a0801a431168", "主数据REST密码"), + zsjloginName("shenxian", "主数据管理员账号"), + mainUrl("http://10.0.1.55","主数据平台ip端口"); + + MemberManageConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + private String defaultValue; + private String description; + + public String getDefaultValue() { + return defaultValue; + } + + public String getDescription() { + return description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/src/com/seeyon/apps/src_membermanage/node/AccountOpeningNode.java b/src/com/seeyon/apps/src_membermanage/node/AccountOpeningNode.java new file mode 100644 index 0000000..b3e05e2 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/AccountOpeningNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class AccountOpeningNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "AccountOpeningNode"; + } + + @Override + public String getNodeName() { + return "账号开启新增档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/AccountOpeningOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/AccountOpeningOrganizationNode.java new file mode 100644 index 0000000..e8fc737 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/AccountOpeningOrganizationNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class AccountOpeningOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "AccountOpeningOrganizationNode"; + } + + @Override + public String getNodeName() { + return "账号开启新增组织架构超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureNode.java new file mode 100644 index 0000000..0b36bda --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureNode.java @@ -0,0 +1,219 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberAccountClosureNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberAccountClosureOrganizationNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "MemberAccountClosureNode"; + } + + @Override + public String getNodeName() { + return "人员账号批量关闭修改档案表超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String enumFields = paramJson.getString("enumFields"); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + if(enumFields.contains(entry.getKey())){ + String subFieldDataDb = subFieldDataVo.getStringValue(); + jsonObject.put("showValue",subFieldDataDb); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + } + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + if(enumFields.contains(entry.getKey())){ + String subFieldDataDb = subFieldDataVo.getStringValue(); + jsonObject.put("value",subFieldDataDb); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureOrganizationNode.java new file mode 100644 index 0000000..43db083 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureOrganizationNode.java @@ -0,0 +1,147 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgMember; +import com.seeyon.ctp.organization.manager.OrgManager; + +import javax.inject.Inject; +import java.util.List; +import java.util.Map; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberAccountClosureOrganizationNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberAccountClosureOrganizationNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + @Override + public String getNodeId() { + return "MemberAccountClosureOrganizationNode"; + } + + @Override + public String getNodeName() { + return "人员账号批量关闭修改组织架构超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事组织机构处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + + JSONObject req = JSONObject.parseObject(request); + JSONArray subTables = req.getJSONArray("subTable"); + int isSuccess = 0; + String ret = ""; + Map> subFormDataVoMap = formDataVo.getSubFormMap(); + String subTableName = req.getString("subTableName"); + List subFormDataVos = subFormDataVoMap.get(subTableName); + for(int i = 0 ; i < subTables.size() ; i++){ + JSONObject subTable = subTables.getJSONObject(i); + FormDataVo subFormDataVo = subFormDataVos.get(i); +// 查询当前人员是否存在 + String memberIdName = subTable.getString("id"); + FieldDataVo memberField = subFormDataVo.getFieldData(memberIdName); + String memberId = memberField.getDbValue().toString(); + String accountIdName = subTable.getString("orgAccountId"); + FieldDataVo accountField = subFormDataVo.getFieldData(accountIdName); + String accountId = accountField.getDbValue().toString(); + subTable.put("orgAccountId",accountId); + V3xOrgMember v3xOrgMember = orgManager.getMemberById(Long.parseLong(memberId)); + String isExistUpdateUrl = mainUrl+"/seeyon/rest/orgMember/"+memberId+"?token="+mainToken; + String memberstr = ProtUtil.doGet(isExistUpdateUrl, new JSONObject()); + if(!"null".equals(memberstr)){ + isSuccess++; +// 当前人员已存在 + JSONObject memberjson = JSONObject.parseObject(memberstr); + if(memberjson.getBooleanValue("isDeleted")){ +// 当前人员已经删除 + ret = ret+memberjson.getString("name")+"已经删除,无法修改;"; + }else{ +// 当前人员存在,执行修改 + subTable.put("id",memberId); + String memberOrganizationUpdateUrl = mainUrl+"/seeyon/rest/orgMember/updateMemberMain?token="+mainToken; +// String res = ProtUtil.httpPutRaw(memberOrganizationUpdateUrl,subTable.toString(),new HashMap<>(),null); + JSONObject res = ProtUtil.doPost(subTable.toString(),memberOrganizationUpdateUrl); + log.info(res.toString()); +// JSONObject resjson = JSONObject.parseObject(res); +// MemberOrganizationResponse mor = new MemberOrganizationResponse(resjson); +// String resDatastr = mor.getData(); +// resDatastr = "{'param':'"+resDatastr+"'}"; +// JSONObject resDatajson = JSONObject.parseObject(resDatastr); +// JSONArray successMsgs = resDatajson.getJSONArray("param"); +// JSONObject successMsg = successMsgs.getJSONObject(0); + if(res.getInteger("code")==0){ + JSONObject data = res.getJSONObject("data"); + ret+=data.getString("name")+"修改成功"; + log.info("人员组织架构修改完成:人员名称为"+data.getString("name")+",ID为"+data.getString("id")); +// context.success("人员组织架构修改完成:人员名称为"+ent.getString("name"),false); +// formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改完成:人员名称为"+ent.getString("name")); + }else{ + isSuccess--; + String message = res.getString("message"); +// JSONObject ent = successMsg.getJSONObject("ent"); +// String msgInfo = successMsg.getString("msgInfo"); + ret+=memberjson.getString("name")+"修改失败"+message; + log.info("人员组织架构修改失败:人员名称为"+memberjson.getString("name")+",ID为"+memberjson.getString("id")+message); +// context.back("人员组织架构修改失败:人员名称为"+ent.getString("name")+","+msgInfo); +// formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改失败:人员名称为"+ent.getString("name")+","+msgInfo); +// context.setErrMsg(mor.getMsg()); + } + } + }else{ +// 人员不存在 + ret = ret+v3xOrgMember.getName()+"不存在,无法修改;"; + } + context.setRequest(subTables.toString()); + context.setResponse(ret); + } + if(isSuccess == subTables.size()){ + context.success(ret,false); + formDataVo.getNewFieldDataMap().put("组织返回结果", ret); + }else{ + log.info(ret); + context.back(ret); + formDataVo.getNewFieldDataMap().put("组织返回结果", ret); + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureTalentsNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureTalentsNode.java new file mode 100644 index 0000000..1c03a82 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberAccountClosureTalentsNode.java @@ -0,0 +1,205 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberAccountClosureTalentsNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberAccountClosureOrganizationNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "MemberAccountClosureTalentsNode"; + } + + @Override + public String getNodeName() { + return "人员账号批量关闭修改人才库超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageNode.java new file mode 100644 index 0000000..9ab58f5 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员退休返聘修改档案表超级节点 + */ +public class MemberAnewEngageNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberAnewEngageNode"; + } + + @Override + public String getNodeName() { + return "人员退休返聘修改档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageOrganizationNode.java new file mode 100644 index 0000000..e8bc1bd --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberAnewEngageOrganizationNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +/** + * 人员退休返聘修改档案表超级节点 + */ +public class MemberAnewEngageOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberAnewEngageOrganizationNode"; + } + + @Override + public String getNodeName() { + return "人员退休返聘修改组织架构超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberBasicsNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberBasicsNode.java new file mode 100644 index 0000000..ed42b93 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberBasicsNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberBasicsNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberBasicsNode"; + } + + @Override + public String getNodeName() { + return "人员基础信息修改档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberBasicsOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberBasicsOrganizationNode.java new file mode 100644 index 0000000..3089adc --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberBasicsOrganizationNode.java @@ -0,0 +1,18 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +public class MemberBasicsOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() {return "";} + + @Override + public String getNodeId() {return "MemberBasicsOrganizationNode";} + + @Override + public String getNodeName() {return "人员基础信息修改组织架构超级节点";} +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberContractNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberContractNode.java new file mode 100644 index 0000000..2768428 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberContractNode.java @@ -0,0 +1,288 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.SystemEnvironment; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import com.seeyon.ctp.common.po.filemanager.Attachment; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * 人员合同签订档案表超级节点 + */ +public class MemberContractNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberContractNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + private EnumManager enumManagerNew; + public void setEnumManagerNew(EnumManager enumManagerNew) {this.enumManagerNew = enumManagerNew; } + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) {enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");}return enumManagerNew; + } + private AttachmentManager attachmentManager; + public void setAttachmentManager(AttachmentManager attachmentManager) {this.attachmentManager = attachmentManager;} + public AttachmentManager getAttachmentManagery() { + if (this.attachmentManager == null) {this.attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager");}return this.attachmentManager; + } + + @Override + public String getNodeId() { + return "MemberContractNode"; + } + + @Override + public String getNodeName() { + return "人员合同签订档案表超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + public String getjtToken(ConfigVo configVo) throws IOException { + String getTokenUrl = configVo.getParamVal(MemberManageConstants.getTokenUrl.name()); + String restUserName = configVo.getParamVal(MemberManageConstants.restUserName.name()); + String restPassword = configVo.getParamVal(MemberManageConstants.restPassword.name()); + String loginName = configVo.getParamVal(MemberManageConstants.loginName.name()); + String jttoken = ProtUtil.getToken(getTokenUrl,restUserName,restPassword,loginName); + return jttoken; + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("人员明细"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue()==null){ + jsonObject.put("value",""); + }else{ + String subFieldData = subFieldDataVo.getStringValue(); + jsonObject.put("showValue",subFieldData); + } + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + JSONArray attachmentInfos = new JSONArray(); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if("合同类型".equals(value)){ + if(subFieldDataVo.getDbValue()==null){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + CtpEnumItem ctpEnumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(subFieldDataDb)); + String showValue = ctpEnumItem.getShowvalue(); + jsonObject.put("showValue",showValue); + } + }else if ("合同附件".equals(value)){ +// 获取附件控件的数据 + if (subFieldDataVo.getDbValue() != null) { + String dbValue = subFieldDataVo.getDbValue().toString(); + List attachmentIds = getAttachmentManagery().getBySubReference(Long.parseLong(dbValue)); +// 获取当前附件控件的所有附件信息 + for (int n = 0; n < attachmentIds.size(); n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = getAttachmentManagery().getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".") + 1); + String oaFileName = filename.substring(0, filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(MemberManageConstants.dowUrl.name()) + "/" + fileUrl + "?fileName=" + fileType + "&token=" + getjtToken(configVo); + log.info("下载URL:" + dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str + "/memberfiles/" + formDataVo.getId() + "/" + filename; + log.info("下载地址:" + dowPath); + String download = ProtUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(MemberManageConstants.uploadUrl.name()); + String targetUrl = uploadUrl + "?token=" + mainToken; + String uploadData = ProtUtil.uploadFile(targetUrl, dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if (atts.size() > 0) { + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference", dbValue); + attachmentInfo.put("fileUrl", att.getString("fileUrl")); + attachmentInfo.put("sort", n); + attachmentInfos.add(attachmentInfo); + } + } + jsonObject.put("value", dbValue); + jsonObject.put("showValue", ""); + }else{ + jsonObject.put("value", ""); + } + }else{ + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + String subFieldData = subFieldDataVo.getStringValue(); + jsonObject.put("value",subFieldData); + } +// subFields.add(jsonObject); + } + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + // 添加附件数据 + data.put("attachmentInfos",attachmentInfos); + dataList.add(data); + param.put("dataList",dataList); + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentNode.java new file mode 100644 index 0000000..e051ade --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员解聘超级节点 + */ +public class MemberDecruitmentNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberDecruitmentNode"; + } + + @Override + public String getNodeName() { + return "人员解聘超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentOrganizationNode.java new file mode 100644 index 0000000..dfa481c --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberDecruitmentOrganizationNode.java @@ -0,0 +1,18 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +public class MemberDecruitmentOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() {return "";} + + @Override + public String getNodeId() {return "MemberDecruitmentOrganizationNode";} + + @Override + public String getNodeName() {return "人员解聘组织架构超级节点";} +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberDimissionNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionNode.java new file mode 100644 index 0000000..e8a632a --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员离职档案表超级节点 + */ +public class MemberDimissionNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberDimissionNode"; + } + + @Override + public String getNodeName() { + return "人员离职档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberDimissionOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionOrganizationNode.java new file mode 100644 index 0000000..e938ede --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionOrganizationNode.java @@ -0,0 +1,18 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +public class MemberDimissionOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() {return "";} + + @Override + public String getNodeId() {return "MemberDimissionOrganizationNode";} + + @Override + public String getNodeName() {return "人员离职组织架构超级节点";} +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberDimissionTalentsNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionTalentsNode.java new file mode 100644 index 0000000..ca9e0b9 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberDimissionTalentsNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员离职档案表超级节点 + */ +public class MemberDimissionTalentsNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberDimissionTalentsNode"; + } + + @Override + public String getNodeName() { + return "人员离职人才库档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberEducationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberEducationNode.java new file mode 100644 index 0000000..a5e708d --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberEducationNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员教育经历档案表超级节点 + */ +public class MemberEducationNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberEducationNode"; + } + + @Override + public String getNodeName() { + return "人员教育经历档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberEmployNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberEmployNode.java new file mode 100644 index 0000000..c68466e --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberEmployNode.java @@ -0,0 +1,203 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ParamUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 员工录用审批超级节点 + */ +public class MemberEmployNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberEmployNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + private EnumManager enumManagerNew; + public void setEnumManagerNew(EnumManager enumManagerNew) {this.enumManagerNew = enumManagerNew; } + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) {enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");}return enumManagerNew; + } + + + @Override + public String getNodeId() { + return "MemberEmployNode"; + } + + @Override + public String getNodeName() { + return "员工录用审批超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入员工录用审批处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + ParamUtil paramUtil = new ParamUtil(); +// 判断是否已经推送成功 + FieldDataVo fhjg = formDataVo.getFieldData("返回结果"); + String fhvalue = fhjg.getStringValue(); + if(fhvalue.startsWith("推送成功")) { + return context.success("跳过:" + fhvalue); + } +// 判断当前结果请求是否为新增 + JSONObject requestJson = JSONObject.parseObject(request); +// String addOrUpdate = requestJson.getString("addOrUpdate"); + + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + System.out.println("修改"); +// 获取明细表录用明细 + Map> subFormMap = formDataVo.getSubFormMap(); + List subFormDataVoList = subFormMap.get("录用详细"); +// 遍历所有明细行数据 + for (FormDataVo subFormDataVo :subFormDataVoList) { + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode", requestJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = requestJson.getJSONObject("uniqueness"); + for (Map.Entry entry : uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(), fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness", uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl + "/seeyon/rest/formTable/quart?token=" + mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl, isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if (StringUtil.isNotEmpty(formmainUpdate)) { +// 当前数据已经存在执行修改逻辑 +// String param = paramUtil.memberEmployParam(request, formDataVo, getNodeId(), configVo, formmainUpdate); + JSONObject memberEmployParam = new JSONObject(); + memberEmployParam.put("formCode",requestJson.getString("formCode")); + memberEmployParam.put("rightId",requestJson.getString("rightIdUpdate")); + memberEmployParam.put("doTrigger",requestJson.getBooleanValue("doTrigger")); + memberEmployParam.put("loginName",requestJson.getString("loginName")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject masterTable = new JSONObject(); + masterTable.put("name","formmain_0192"); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); + JSONArray fields = new JSONArray(); + + JSONObject field0074 = new JSONObject(); + field0074.put("name","field0074"); + FieldDataVo xtvo = formDataVo.getFieldData("系统"); + String xtdbValue = xtvo.getDbValue().toString(); + long xtenumItemId = Long.parseLong(xtdbValue); + CtpEnumItem xtctpEnumItem = getEnumManagerNew().getCtpEnumItem(xtenumItemId); + field0074.put("showValue",xtctpEnumItem.getShowvalue()); + fields.add(field0074); + + JSONObject field0053 = new JSONObject(); + field0053.put("name","field0053"); + FieldDataVo nlydwvo = formDataVo.getFieldData("用人单位"); + String nlydwdbValue = nlydwvo.getDbValue().toString(); + field0053.put("value",nlydwdbValue); + fields.add(field0053); + + JSONObject field0051 = new JSONObject(); + field0051.put("name","field0051"); + FieldDataVo nlybmvo = subFormDataVo.getFieldData("拟录部门"); + String nlybmValue = nlybmvo.getDbValue().toString(); + field0051.put("value",nlybmValue); + fields.add(field0051); + + JSONObject field0052 = new JSONObject(); + field0052.put("name","field0052"); + FieldDataVo nlygwvo = subFormDataVo.getFieldData("拟录用岗位"); + String nlygwValue = nlygwvo.getDbValue().toString(); + field0052.put("value",nlygwValue); + fields.add(field0052); + + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); + dataList.add(data); + memberEmployParam.put("dataList",dataList); + + String param = memberEmployParam.toString(); + context.setRequest(param); + log.info(param); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl + "/seeyon/rest/cap4/form/soap/batch-update?token=" + mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param, formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if (mmr.isSuccess()) { + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List) resData.get("successIdList"); + if (successIdList.size() > 0) { + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为" + resDatastr); + context.success("档案表修改完成,当前档案表ID为" + fid, false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为" + fid); + } else { + Map failedData = (Map) resData.get("failedData"); + for (Map.Entry entry : failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:" + entry.getValue()); + } + } + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberEntryNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberEntryNode.java new file mode 100644 index 0000000..90f4f38 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberEntryNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员入职档案表超级节点 + */ +public class MemberEntryNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberEntryNode"; + } + + @Override + public String getNodeName() { + return "人员入职档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberEntryOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberEntryOrganizationNode.java new file mode 100644 index 0000000..bddb3cb --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberEntryOrganizationNode.java @@ -0,0 +1,18 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +public class MemberEntryOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() {return "";} + + @Override + public String getNodeId() {return "MemberEntryOrganizationNode";} + + @Override + public String getNodeName() {return "人员入职组织架构超级节点";} +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberEntryTalentsNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberEntryTalentsNode.java new file mode 100644 index 0000000..b65c965 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberEntryTalentsNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员入职档案表超级节点 + */ +public class MemberEntryTalentsNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberEntryTalentsNode"; + } + + @Override + public String getNodeName() { + return "人员入职人才库档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberFamilyNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberFamilyNode.java new file mode 100644 index 0000000..5b1a970 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberFamilyNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员家庭情况档案表超级节点 + */ +public class MemberFamilyNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberFamilyNode"; + } + + @Override + public String getNodeName() { + return "人员家庭情况档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberHonorNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberHonorNode.java new file mode 100644 index 0000000..c1fa733 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberHonorNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员荣誉档案表超级节点 + */ +public class MemberHonorNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberHonorNode"; + } + + @Override + public String getNodeName() { + return "人员荣誉档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberInterviewResultNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberInterviewResultNode.java new file mode 100644 index 0000000..798268f --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberInterviewResultNode.java @@ -0,0 +1,232 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberInterviewResultNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberInterviewResultNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "MemberInterviewResultNode"; + } + + @Override + public String getNodeName() { + return "人员面试结果登记档案表超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + private EnumManager enumManagerNew; + public void setEnumManagerNew(EnumManager enumManagerNew) {this.enumManagerNew = enumManagerNew; } + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) {enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");}return enumManagerNew; + } + + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String enumFields = paramJson.getString("enumFields"); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("录用详细"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null ){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + if(enumFields.contains(entry.getKey())){ + CtpEnumItem ctpEnumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(subFieldDataDb)); + String showvalue = ctpEnumItem.getShowvalue(); + jsonObject.put("showValue",showvalue); + }else { + jsonObject.put("value",subFieldDataDb); + } + } + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo =subFormDataVo.getFieldData(value); +// if("成绩".equals(value)){ +// subFieldDataVo = formDataVo.getFieldData(value); +// }else{ +// subFieldDataVo = subFormDataVo.getFieldData(value); +// } + if(subFieldDataVo.getDbValue() == null ){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + if(enumFields.contains(entry.getKey())){ + CtpEnumItem ctpEnumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(subFieldDataDb)); + String showvalue = ctpEnumItem.getShowvalue(); + jsonObject.put("showValue",showvalue); + }else { + jsonObject.put("value",subFieldDataDb); + } + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberMoveNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberMoveNode.java new file mode 100644 index 0000000..6e66393 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberMoveNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员调动超级节点 + */ +public class MemberMoveNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberMoveNode"; + } + + @Override + public String getNodeName() { + return "人员调动超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberMoveOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberMoveOrganizationNode.java new file mode 100644 index 0000000..90f4f91 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberMoveOrganizationNode.java @@ -0,0 +1,18 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +public class MemberMoveOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() {return "";} + + @Override + public String getNodeId() {return "MemberMoveOrganizationNode";} + + @Override + public String getNodeName() {return "人员调动组织架构超级节点";} +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberPerformanceNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberPerformanceNode.java new file mode 100644 index 0000000..46eb468 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberPerformanceNode.java @@ -0,0 +1,261 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.SystemEnvironment; +import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; +import com.seeyon.ctp.common.po.filemanager.Attachment; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * 人员绩效记录档案表超级节点 + */ +public class MemberPerformanceNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberPerformanceNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + private AttachmentManager attachmentManager; + public void setAttachmentManager(AttachmentManager attachmentManager) {this.attachmentManager = attachmentManager;} + public AttachmentManager getAttachmentManagery() { + if (this.attachmentManager == null) {this.attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager");}return this.attachmentManager; + } + + @Override + public String getNodeId() { + return "MemberPerformanceNode"; + } + + @Override + public String getNodeName() { + return "人员绩效记录档案表超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + public String getjtToken(ConfigVo configVo) throws IOException { + String getTokenUrl = configVo.getParamVal(MemberManageConstants.getTokenUrl.name()); + String restUserName = configVo.getParamVal(MemberManageConstants.restUserName.name()); + String restPassword = configVo.getParamVal(MemberManageConstants.restPassword.name()); + String loginName = configVo.getParamVal(MemberManageConstants.loginName.name()); + String jttoken = ProtUtil.getToken(getTokenUrl,restUserName,restPassword,loginName); + return jttoken; + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo = subFormDataVo.getFieldData(value); + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + JSONArray attachmentInfos = new JSONArray(); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if("明细附件".equals(value)){ +// 获取附件控件的数据 + if (subFieldDataVo.getDbValue() != null) { + String dbValue = subFieldDataVo.getDbValue().toString(); + List attachmentIds = getAttachmentManagery().getBySubReference(Long.parseLong(dbValue)); +// 获取当前附件控件的所有附件信息 + for (int n = 0; n < attachmentIds.size(); n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = getAttachmentManagery().getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".") + 1); + String oaFileName = filename.substring(0, filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(MemberManageConstants.dowUrl.name()) + "/" + fileUrl + "?fileName=" + fileType + "&token=" + getjtToken(configVo); + log.info("下载URL:" + dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str + "/memberfiles/" + formDataVo.getId() + "/" + filename; + log.info("下载地址:" + dowPath); + String download = ProtUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(MemberManageConstants.uploadUrl.name()); + String targetUrl = uploadUrl + "?token=" + mainToken; + String uploadData = ProtUtil.uploadFile(targetUrl, dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if (atts.size() > 0) { + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference", dbValue); + attachmentInfo.put("fileUrl", att.getString("fileUrl")); + attachmentInfo.put("sort", n); + attachmentInfos.add(attachmentInfo); + } + } + jsonObject.put("value", dbValue); + jsonObject.put("showValue", ""); + } + }else{ + if(subFieldDataVo.getDbValue() == null ){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + } + subFields.add(jsonObject); + subRecord.put("fields",subFields); + } + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + // 添加附件数据 + data.put("attachmentInfos",attachmentInfos); + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationExtendNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationExtendNode.java new file mode 100644 index 0000000..eedf3fa --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationExtendNode.java @@ -0,0 +1,26 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员转正档案表超级节点 + */ +public class MemberRegularizationExtendNode extends MemberManageCommonNode { + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberRegularizationExtendNode"; + } + + @Override + public String getNodeName() { + return "人员转正延长档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationNode.java new file mode 100644 index 0000000..616979f --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberRegularizationNode.java @@ -0,0 +1,26 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员转正档案表超级节点 + */ +public class MemberRegularizationNode extends MemberManageCommonNode { + @Override + public String getMethod() {return "";} + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberRegularizationNode"; + } + + @Override + public String getNodeName() { + return "人员转正档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberRewardPunishmentNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberRewardPunishmentNode.java new file mode 100644 index 0000000..6a254d6 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberRewardPunishmentNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员奖惩记录档案表超级节点 + */ +public class MemberRewardPunishmentNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberRewardPunishmentNode"; + } + + @Override + public String getNodeName() { + return "人员奖惩记录档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureNode.java new file mode 100644 index 0000000..bb09ef7 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberSystemAccountClosureNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberSystemAccountClosureNode"; + } + + @Override + public String getNodeName() { + return "人员系统账号批量关闭修改档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureOrganizationNode.java new file mode 100644 index 0000000..649d8b9 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureOrganizationNode.java @@ -0,0 +1,30 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; +import com.seeyon.apps.src_membermanage.MemberOrganizationCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberSystemAccountClosureOrganizationNode extends MemberOrganizationCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberSystemAccountClosureOrganizationNode"; + } + + @Override + public String getNodeName() { + return "人员系统账号批量关闭修改组织架构超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureTalentsNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureTalentsNode.java new file mode 100644 index 0000000..c4b10f5 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberSystemAccountClosureTalentsNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员基础信息修改档案表超级节点 + */ +public class MemberSystemAccountClosureTalentsNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberSystemAccountClosureTalentsNode"; + } + + @Override + public String getNodeName() { + return "人员系统账号批量关闭修改人才库超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberTaskFinishNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberTaskFinishNode.java new file mode 100644 index 0000000..8ae55ee --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberTaskFinishNode.java @@ -0,0 +1,204 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 人员工作经历档案表超级节点 + */ +public class MemberTaskFinishNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberTaskFinishNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "MemberTaskFinishNode"; + } + + @Override + public String getNodeName() { + return "营销人员任务完成情况修改档案表超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo = subFormDataVo.getFieldData(value); +// if("成绩".equals(value)){ +// subFieldDataVo = formDataVo.getFieldData(value); +// }else{ +// subFieldDataVo = subFormDataVo.getFieldData(value); +// } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberTryOutSummarizeNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberTryOutSummarizeNode.java new file mode 100644 index 0000000..d4b0a08 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberTryOutSummarizeNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员入职档案表超级节点 + */ +public class MemberTryOutSummarizeNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberTryOutSummarizeNode"; + } + + @Override + public String getNodeName() { + return "人员试用期工作总结超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java new file mode 100644 index 0000000..aa3753e --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 人员工作经历档案表超级节点 + */ +public class MemberWorkNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "MemberWorkNode"; + } + + @Override + public String getNodeName() { + return "人员工作经历档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MembersMoveNode.java b/src/com/seeyon/apps/src_membermanage/node/MembersMoveNode.java new file mode 100644 index 0000000..3be66a9 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MembersMoveNode.java @@ -0,0 +1,207 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.List; +import java.util.Map; + +/** + * 人员批量调动超级节点 + */ +public class MembersMoveNode extends ACommonSuperNode { + + private static Log log = Log.get(MembersMoveNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + + @Override + public String getNodeId() { + return "MembersMoveNode"; + } + + @Override + public String getNodeName() { + return "人员批量调动超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws IOException, URISyntaxException, NoSuchFieldException { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("人员明细"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/MembersMoveOrganizationNode.java b/src/com/seeyon/apps/src_membermanage/node/MembersMoveOrganizationNode.java new file mode 100644 index 0000000..d7fa28c --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MembersMoveOrganizationNode.java @@ -0,0 +1,158 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgMember; +import com.seeyon.ctp.organization.manager.OrgManager; + +import javax.inject.Inject; +import java.util.List; +import java.util.Map; + +public class MembersMoveOrganizationNode extends ACommonSuperNode { + private static Log log = Log.get(MembersMoveNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + + @Override + public String getNodeId() {return "MembersMoveOrganizationNode";} + + @Override + public String getNodeName() {return "人员批量调动组织架构超级节点";} + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事组织机构处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + + JSONObject req = JSONObject.parseObject(request); + JSONArray subTables = req.getJSONArray("subTable"); + int isSuccess = 0; + String ret = ""; + Map> subFormDataVoMap = formDataVo.getSubFormMap(); + String subTableName = req.getString("subTableName"); + List subFormDataVos = subFormDataVoMap.get(subTableName); + for(int i = 0 ; i < subTables.size() ; i++){ + JSONObject subTable = subTables.getJSONObject(i); + FormDataVo subFormDataVo = subFormDataVos.get(i); +// 查询当前人员是否存在 + String memberIdName = subTable.getString("id"); + FieldDataVo memberField = subFormDataVo.getFieldData(memberIdName); + String memberId = memberField.getDbValue().toString(); + V3xOrgMember v3xOrgMember = orgManager.getMemberById(Long.parseLong(memberId)); + String isExistUpdateUrl = mainUrl+"/seeyon/rest/orgMember/"+memberId+"?token="+mainToken; + String memberstr = ProtUtil.doGet(isExistUpdateUrl, new JSONObject()); + if(!"null".equals(memberstr)){ + isSuccess++; +// 当前人员已存在 + JSONObject memberjson = JSONObject.parseObject(memberstr); + if(memberjson.getBooleanValue("isDeleted")){ +// 当前人员已经删除 + ret = ret+memberjson.getString("name")+"已经删除,无法修改;"; + }else{ +// 当前人员存在,执行修改 + String orgAccountIdName = subTable.getString("orgAccountId"); + FieldDataVo orgAccountField = subFormDataVo.getFieldData(orgAccountIdName); + String orgAccountId = orgAccountField.getDbValue().toString(); + subTable.put("orgAccountId",orgAccountId); + + String orgDepartmentIdName = subTable.getString("orgDepartmentId"); + FieldDataVo orgDepartmentField = subFormDataVo.getFieldData(orgDepartmentIdName); + String orgDepartmentId = orgDepartmentField.getDbValue().toString(); + subTable.put("orgDepartmentId",orgDepartmentId); + + String orgPostIdName = subTable.getString("orgPostId"); + FieldDataVo orgPostField = subFormDataVo.getFieldData(orgPostIdName); + String orgPostId = orgPostField.getDbValue().toString(); + subTable.put("orgPostId",orgPostId); + + String orgLevelIdName = subTable.getString("orgLevelId"); + FieldDataVo orgLevelField = subFormDataVo.getFieldData(orgLevelIdName); + String orgLevelId = orgLevelField.getDbValue().toString(); + subTable.put("orgLevelId",orgLevelId); + + subTable.put("id",memberId); + String memberOrganizationUpdateUrl = mainUrl+"/seeyon/rest/orgMember/updateMemberMain?token="+mainToken; +// String res = ProtUtil.httpPutRaw(memberOrganizationUpdateUrl,subTable.toString(),new HashMap<>(),null); + JSONObject res = ProtUtil.doPost(subTable.toString(),memberOrganizationUpdateUrl); + log.info(res.toString()); +// JSONObject resjson = JSONObject.parseObject(res); +// MemberOrganizationResponse mor = new MemberOrganizationResponse(resjson); +// String resDatastr = mor.getData(); +// String code = res.getString("code"); +// resDatastr = "{'param':'"+resDatastr+"'}"; +// JSONObject resDatajson = JSONObject.parseObject(resDatastr); +// JSONArray successMsgs = resDatajson.getJSONArray("param"); +// JSONObject successMsg = successMsgs.getJSONObject(0); + if(res.getInteger("code")==0){ +// JSONObject ent = successMsg.getJSONObject("ent"); + JSONObject resData = res.getJSONObject("data"); + ret+=resData.getString("name")+"修改成功"; + log.info("人员组织架构修改完成:人员名称为"+resData.getString("name")+",ID为"+resData.getString("id")); +// context.success("人员组织架构修改完成:人员名称为"+ent.getString("name"),false); +// formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改完成:人员名称为"+ent.getString("name")); + }else{ + isSuccess--; + JSONObject message = res.getJSONObject("message"); +// JSONObject ent = successMsg.getJSONObject("ent"); +// String msgInfo = successMsg.getString("msgInfo"); + ret+=memberjson.getString("name")+"修改失败"+message; + log.info("人员组织架构修改失败:人员名称为"+memberjson.getString("name")+",ID为"+memberjson.getString("id")+message); +// context.back("人员组织架构修改失败:人员名称为"+ent.getString("name")+","+msgInfo); +// formDataVo.getNewFieldDataMap().put("组织返回结果", "人员组织架构修改失败:人员名称为"+ent.getString("name")+","+msgInfo); +// context.setErrMsg(mor.getMsg()); + } + } + }else{ +// 人员不存在 + ret = ret+v3xOrgMember.getName()+"不存在,无法修改;"; + } + context.setRequest(subTables.toString()); + context.setResponse(ret); + } + if(isSuccess == subTables.size()){ + context.success(ret,false); + formDataVo.getNewFieldDataMap().put("组织返回结果", ret); + }else{ + log.info(ret); + context.back(ret); + formDataVo.getNewFieldDataMap().put("组织返回结果", ret); + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/RegistrationofApplicantsNode.java b/src/com/seeyon/apps/src_membermanage/node/RegistrationofApplicantsNode.java new file mode 100644 index 0000000..9c90d96 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/RegistrationofApplicantsNode.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_membermanage.node; + +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; + +/** + * 应聘人员登记档案表超级节点 + */ +public class RegistrationofApplicantsNode extends MemberManageCommonNode { + + @Override + public String getMethod() { + return ""; + } + + @Override + public String getRequestType() { + return ""; + } + + @Override + public String getNodeId() { + return "RegistrationofApplicantsNode"; + } + + @Override + public String getNodeName() { + return "应聘人员登记档案表超级节点"; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/node/TrainingRecordNode.java b/src/com/seeyon/apps/src_membermanage/node/TrainingRecordNode.java new file mode 100644 index 0000000..ab3e638 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/TrainingRecordNode.java @@ -0,0 +1,207 @@ +package com.seeyon.apps.src_membermanage.node; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.common.workflow.node.ACommonSuperNode; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.apps.src_membermanage.util.DataProcessingUtil; +import com.seeyon.apps.src_membermanage.util.ProtUtil; +import com.seeyon.apps.src_membermanage.vo.MemberManagerResponse; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.util.List; +import java.util.Map; + +/** + * 培训实施记录超级节点 + */ +public class TrainingRecordNode extends ACommonSuperNode { + + private static Log log = Log.get(TrainingRecordNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "TrainingRecordNode"; + } + + @Override + public String getNodeName() { + return "培训实施记录超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入人事档案表处理流程"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 + Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = SubFormMap.get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + if("成绩".equals(value)){ + subFieldDataVo = subFormDataVo.getFieldData(value); + }else{ + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null ){ + jsonObject.put("value",""); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } +// String subFieldDataDb = subFieldDataVo.getDbValue().toString(); +// jsonObject.put("value",subFieldDataDb); + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,请检查唯一值是否正确"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/util/DataProcessingUtil.java b/src/com/seeyon/apps/src_membermanage/util/DataProcessingUtil.java new file mode 100644 index 0000000..0824afe --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/util/DataProcessingUtil.java @@ -0,0 +1,53 @@ +package com.seeyon.apps.src_membermanage.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DataProcessingUtil { + + public static Map convertStringToMap(String input) { + Map resultMap = new HashMap<>(); + input = input.substring(1, input.length() - 1); + String[] keyValuePairs = input.split(", "); + + for (String pair : keyValuePairs) { + String[] parts = pair.split("=", 2); + String key = parts[0]; + String valueStr = parts[1]; + + if (valueStr.startsWith("[")) { + List list = new ArrayList<>(); + String listContent = valueStr.substring(1, valueStr.length() - 1); + if (!listContent.isEmpty()) { + String[] items = listContent.split(","); + for (String item : items) { + list.add(item.trim()); + } + } + resultMap.put(key, list); + } else if (valueStr.startsWith("{")) { + Map nestedMap = new HashMap<>(); + String nestedStr = valueStr.substring(1, valueStr.length() - 1); + if (!nestedStr.isEmpty()) { + String[] nestedPairs = nestedStr.split(", "); + for (String nestedPair : nestedPairs) { + String[] nestedParts = nestedPair.split("=", 2); + nestedMap.put(nestedParts[0], nestedParts[1]); + } + } + resultMap.put(key, nestedMap); + } else { + try { + int intValue = Integer.parseInt(valueStr); + resultMap.put(key, intValue); + } catch (NumberFormatException e) { + resultMap.put(key, valueStr); + } + } + } + return resultMap; + } + +} diff --git a/src/com/seeyon/apps/src_membermanage/util/OrganizationParamUtil.java b/src/com/seeyon/apps/src_membermanage/util/OrganizationParamUtil.java new file mode 100644 index 0000000..d0fc4bb --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/util/OrganizationParamUtil.java @@ -0,0 +1,168 @@ +package com.seeyon.apps.src_membermanage.util; + +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.UUIDLong; +import www.seeyon.com.utils.StringUtil; + +import java.io.IOException; + +public class OrganizationParamUtil { + + private OrgManager orgManager; + public void setOrgManager(OrgManager orgManager) {this.orgManager = orgManager; } + public OrgManager getOrgManager() { + if (orgManager == null) {orgManager = (OrgManager) AppContext.getBean("orgManager");}return orgManager; + } + + private EnumManager enumManagerNew; + public void setEnumManagerNew(EnumManager enumManagerNew) {this.enumManagerNew = enumManagerNew; } + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) {enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");}return enumManagerNew; + } + + + public String organizationAddParam(String param, FormDataVo formDataVo, String nodeId, ConfigVo configVo) throws BusinessException, NoSuchFieldException, IOException { + String res = memberOrganizationAdd(param,formDataVo,configVo); + return res; + } + + public String memberOrganizationAdd(String param,FormDataVo formDataVo,ConfigVo configVo) throws NoSuchFieldException, BusinessException, IOException { + JSONObject paramJson = JSONObject.parseObject(param); + String formType = paramJson.getString("formType"); + if("org".equals(formType)){ + paramJson = handleOrganizationAdd(paramJson,formDataVo,configVo); + } + return paramJson.toString(); + } + + public JSONObject handleOrganizationAdd( JSONObject paramJson, FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException, BusinessException { + paramJson.put("id", UUIDLong.longUUID()+""); +// 获取单位字段名称 + String orgAccountIdName = paramJson.getString("orgAccountId"); +// 获取单位字段值 + FieldDataVo orgAccountIdvo = formDataVo.getFieldData(orgAccountIdName); + String orgAccountId = (String)orgAccountIdvo.getDbValue(); +// 获取单位ID字段 + paramJson.put("orgAccountId",orgAccountId); + +// 获取职务级别字段名称 + String orgLevelIdName = paramJson.getString("orgLevelId"); +// 获取职务级别字段值 + FieldDataVo orgLevelIdvo = formDataVo.getFieldData(orgLevelIdName); + String orgLevelId = (String) orgLevelIdvo.getDbValue(); +// 获取职务级别ID字段 + paramJson.put("orgLevelId",orgLevelId); + +// 获取岗位字段名称 + String orgPostIdName = paramJson.getString("orgPostId"); +// 获取岗位字段值 + FieldDataVo orgPostIdvo = formDataVo.getFieldData(orgPostIdName); + String orgPostId = (String) orgPostIdvo.getDbValue(); +// 获取岗位ID字段 + paramJson.put("orgPostId",orgPostId); + +// 获取部门字段名称 + String orgDepartmentIdName = paramJson.getString("orgDepartmentId"); +// 获取部门字段值 + FieldDataVo orgDepartmentIdvo = formDataVo.getFieldData(orgDepartmentIdName); + String orgDepartmentId = (String) orgDepartmentIdvo.getDbValue(); +// 获取部门ID字段 + paramJson.put("orgDepartmentId",orgDepartmentId); + +// 判断是否为枚举字段,枚举字段转换为枚举值后推送 + if(StringUtil.isNotEmpty(paramJson.getString("gender"))){ + String genderName = paramJson.getString("gender"); + // 获取性别字段值 + FieldDataVo gendervo = formDataVo.getFieldData(genderName); + if(gendervo.getDbValue()!=null){ + String gender = gendervo.getDbValue().toString(); + CtpEnumItem genderEnum = getEnumManagerNew().getCtpEnumItem(Long.parseLong(gender)); + paramJson.put("gender",genderEnum.getValue()); + } + } + if(StringUtil.isNotEmpty(paramJson.getString("EXT_ATTR_32"))){ + String extattr32Name = paramJson.getString("EXT_ATTR_32"); + // 获取人员分类字段值 + FieldDataVo extattr32vo = formDataVo.getFieldData(extattr32Name); + String extattr32 = extattr32vo.getDbValue().toString(); + CtpEnumItem extattr32Enum = getEnumManagerNew().getCtpEnumItem(Long.parseLong(extattr32)); + paramJson.put("EXT_ATTR_32",extattr32Enum.getValue()); + } + return paramJson; + } + + + public String organizationUpdateParam(String param, FormDataVo formDataVo, String nodeId, ConfigVo configVo) throws BusinessException, NoSuchFieldException, IOException { + String res = memberOrganizationUpdate(param,formDataVo,configVo); + return res; + } + + public String memberOrganizationUpdate(String param,FormDataVo formDataVo,ConfigVo configVo) throws NoSuchFieldException, BusinessException, IOException { + JSONObject paramJson = JSONObject.parseObject(param); + String formType = paramJson.getString("formType"); + if("org".equals(formType)){ + paramJson = handleOrganizationUpdate(paramJson,formDataVo,configVo); + } + return paramJson.toString(); + } + + public JSONObject handleOrganizationUpdate( JSONObject paramJson, FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException{ +// 获取人员字段名称 + String orgMemberIdName = paramJson.getString("id"); +// 获取人员字段值 + FieldDataVo orgMemberIdvo = formDataVo.getFieldData(orgMemberIdName); + String orgMemberId = (String)orgMemberIdvo.getDbValue(); +// 获取人员ID字段 + paramJson.put("id", orgMemberId); +// 获取单位字段名称 + String orgAccountIdName = paramJson.getString("orgAccountId") == null ?"":paramJson.getString("orgAccountId"); +// 获取单位字段值 + if(StringUtil.isNotEmpty(orgAccountIdName)){ + FieldDataVo orgAccountIdvo = formDataVo.getFieldData(orgAccountIdName); + String orgAccountId = (String)orgAccountIdvo.getDbValue(); +// 获取单位ID字段 + paramJson.put("orgAccountId",orgAccountId); + } + +// 获取职务级别字段名称 + String orgLevelIdName = paramJson.getString("orgLevelId")==null?"":paramJson.getString("orgLevelId"); +// 获取职务级别字段值 + if(StringUtil.isNotEmpty(orgLevelIdName)){ + FieldDataVo orgLevelIdvo = formDataVo.getFieldData(orgLevelIdName); + String orgLevelId = (String) orgLevelIdvo.getDbValue(); +// 获取职务级别ID字段 + paramJson.put("orgLevelId",orgLevelId); + } + +// 获取岗位字段名称 + String orgPostIdName = paramJson.getString("orgPostId")==null?"":paramJson.getString("orgPostId"); +// 获取岗位字段值 + if(StringUtil.isNotEmpty(orgPostIdName)){ + FieldDataVo orgPostIdvo = formDataVo.getFieldData(orgPostIdName); + String orgPostId = (String) orgPostIdvo.getDbValue(); +// 获取岗位ID字段 + paramJson.put("orgPostId",orgPostId); + } + +// 获取部门字段名称 + String orgDepartmentIdName = paramJson.getString("orgDepartmentId")==null?"":paramJson.getString("orgDepartmentId"); +// 获取部门字段值 + if(StringUtil.isNotEmpty(orgDepartmentIdName)){ + FieldDataVo orgDepartmentIdvo = formDataVo.getFieldData(orgDepartmentIdName); + String orgDepartmentId = (String) orgDepartmentIdvo.getDbValue(); +// 获取部门ID字段 + paramJson.put("orgDepartmentId",orgDepartmentId); + } + return paramJson; + } + + +} diff --git a/src/com/seeyon/apps/src_membermanage/util/ParamUtil.java b/src/com/seeyon/apps/src_membermanage/util/ParamUtil.java new file mode 100644 index 0000000..e15254a --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/util/ParamUtil.java @@ -0,0 +1,436 @@ +package com.seeyon.apps.src_membermanage.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.SystemEnvironment; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import com.seeyon.ctp.common.po.filemanager.Attachment; +import com.seeyon.ctp.organization.bo.*; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.UUIDLong; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public class ParamUtil { + + private static final Log log = LogFactory.getLog(ParamUtil.class); + + private EnumManager enumManagerNew; + public void setEnumManagerNew(EnumManager enumManagerNew) {this.enumManagerNew = enumManagerNew; } + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) {enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");}return enumManagerNew; + } + + private OrgManager orgManager; + public void setOrgManager(OrgManager orgManager) {this.orgManager = orgManager; } + public OrgManager getOrgManager() { + if (orgManager == null) {orgManager = (OrgManager) AppContext.getBean("orgManager");}return orgManager; + } + + private AttachmentManager attachmentManager; + public void setAttachmentManager(AttachmentManager attachmentManager) {this.attachmentManager = attachmentManager;} + public AttachmentManager getAttachmentManagery() { + if (this.attachmentManager == null) {this.attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager");}return this.attachmentManager; + } + + public String formUpdateParam(String param, FormDataVo formDataVo, String nodeId, ConfigVo configVo,String formId) throws BusinessException, NoSuchFieldException, IOException { + String res = filesTableUpdate(param,formDataVo,configVo,formId); + return res; + } + + public String filesTableUpdate(String param,FormDataVo formDataVo,ConfigVo configVo,String formId) throws NoSuchFieldException, BusinessException, IOException { + JSONObject jsonObject = new JSONObject(); + JSONObject paramJson = JSONObject.parseObject(param); + String formType = paramJson.getString("formType"); + if("formmain".equals(formType)){ + jsonObject = handleFormmainUpdate(jsonObject,paramJson,formDataVo,configVo,formId); + } + return jsonObject.toString(); + } + public JSONObject handleFormmainUpdate(JSONObject jsonObject, JSONObject paramJson, FormDataVo formDataVo, ConfigVo configVo,String formId) throws NoSuchFieldException, BusinessException, IOException { + // 附件控件,选人控件,部门控件,单位控件,岗位控件,职务级别控件,枚举控件 + String memberFields = paramJson.getString("memberFields")==null?"":paramJson.getString("memberFields"); + String deptFields = paramJson.getString("deptFields")==null?"":paramJson.getString("deptFields"); + String accountFields = paramJson.getString("accountFields")==null?"":paramJson.getString("accountFields"); + String postFields = paramJson.getString("postFields")==null?"":paramJson.getString("postFields"); + String levelFields = paramJson.getString("levelFields")==null?"":paramJson.getString("levelFields"); + String enumFields = paramJson.getString("enumFields")==null?"":paramJson.getString("enumFields"); + String fileFields = paramJson.getString("fileFields")==null?"":paramJson.getString("fileFields"); +// 设置主参数字段 + jsonObject.put("formCode",paramJson.getString("formCode")); + jsonObject.put("loginName",paramJson.getString("loginName")); + jsonObject.put("rightId",paramJson.getString("rightIdUpdate")); + jsonObject.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + JSONArray dataList = new JSONArray(); + + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + String paramMainname = paramMasterTable.getString("name"); + JSONObject paramMasterfields = paramMasterTable.getJSONObject("fields"); + +// 设置表单主表字段 + JSONObject data = new JSONObject(); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMainname); + JSONObject record = new JSONObject(); + JSONArray attachmentInfos = new JSONArray(); + JSONArray fields = handleFields(paramMasterfields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + record.put("id",formId); + record.put("fields",fields); + masterTable.put("record",record); +// 添加主表数据 + data.put("masterTable",masterTable); + + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + JSONArray subTables = new JSONArray(); + Map> subFormMap = formDataVo.getSubFormMap(); +// 遍历所有流程表数据 + for (int i = 0 ; i < paramSubTables.size();i++) { +// 获取参数配置中的字段信息 + JSONObject paramSubTable = paramSubTables.getJSONObject(i); +// 获取当前流程表单名称 + String paramSubTableName = paramSubTable.getString("name"); + if("个人履历".equals(paramSubTableName)){ +// 创建推送参数对象 + JSONObject paramFields = paramSubTable.getJSONObject("fields"); + JSONObject subTable = new JSONObject(); + subTable.put("name", paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("id",UUIDLong.longUUID()); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + }else{ + // 根据名称获取表单中明细表信息 + List subForm = subFormMap.get(paramSubTableName); +// 获取参数配置中的字段信息 + JSONObject paramFields = paramSubTable.getJSONObject("fields"); +//// 创建推送参数对象 + JSONObject subTable = new JSONObject(); + subTable.put("name", paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + if(subForm==null){ + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("id", UUIDLong.longUUID()); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + }else{ + for (FormDataVo subFormDataVo : subForm) { + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,subFormDataVo,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("id", UUIDLong.longUUID()); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + } + } + subTable.put("records",subRecords); + subTables.add(subTable); + } + } + data.put("subTables",subTables); +// 添加附件数据 + data.put("attachmentInfos",attachmentInfos); +// 插入档案表参数 + dataList.add(data); + jsonObject.put("dataList",dataList); + + return jsonObject; + } + + public String formAddParam(String param, FormDataVo formDataVo, String nodeId, ConfigVo configVo) throws BusinessException, NoSuchFieldException, IOException { + String res =filesTableAdd(param,formDataVo,configVo); + return res; + } + + public String filesTableAdd(String param,FormDataVo formDataVo,ConfigVo configVo) throws NoSuchFieldException, BusinessException, IOException { + JSONObject jsonObject = new JSONObject(); + JSONObject paramJson = JSONObject.parseObject(param); + String formType = paramJson.getString("formType"); + if("formmain".equals(formType)){ + jsonObject = handleFormmainAdd(jsonObject,paramJson,formDataVo,configVo); + } + return jsonObject.toString(); + } + + public JSONObject handleFormmainAdd(JSONObject jsonObject, JSONObject paramJson, FormDataVo formDataVo, ConfigVo configVo) throws NoSuchFieldException, BusinessException, IOException { + // 附件控件,选人控件,部门控件,单位控件,岗位控件,职务级别控件,枚举控件 + String memberFields = paramJson.getString("memberFields")==null?"":paramJson.getString("memberFields"); + String deptFields = paramJson.getString("deptFields")==null?"":paramJson.getString("deptFields"); + String accountFields = paramJson.getString("accountFields")==null?"":paramJson.getString("accountFields"); + String postFields = paramJson.getString("postFields")==null?"":paramJson.getString("postFields"); + String levelFields = paramJson.getString("levelFields")==null?"":paramJson.getString("levelFields"); + String enumFields = paramJson.getString("enumFields")==null?"":paramJson.getString("enumFields"); + String fileFields = paramJson.getString("fileFields")==null?"":paramJson.getString("fileFields"); +// 设置主参数字段 + jsonObject.put("formCode",paramJson.getString("formCode")); + jsonObject.put("loginName",paramJson.getString("loginName")); + jsonObject.put("rightId",paramJson.getString("rightIdAdd")); + jsonObject.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + JSONArray dataList = new JSONArray(); + + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + String paramMainname = paramMasterTable.getString("name"); + JSONObject paramMasterfields = paramMasterTable.getJSONObject("fields"); + +// 设置表单主表字段 + JSONObject data = new JSONObject(); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMainname); + JSONObject record = new JSONObject(); + JSONArray attachmentInfos = new JSONArray(); + JSONArray fields = handleFields(paramMasterfields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + + record.put("fields",fields); + masterTable.put("record",record); +// 添加主表数据 + data.put("masterTable",masterTable); + + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + JSONArray subTables = new JSONArray(); + Map> subFormMap = formDataVo.getSubFormMap(); +// 遍历所有流程表数据 + for (int i = 0 ; i < paramSubTables.size();i++) { + JSONObject paramSubTable = paramSubTables.getJSONObject(i); +// 获取当前流程表单名称 + String paramSubTableName = paramSubTable.getString("name"); + if("个人履历".equals(paramSubTableName)){ +// 获取参数配置中的字段信息 + JSONObject paramFields = paramSubTable.getJSONObject("fields"); +//// 创建推送参数对象 + JSONObject subTable = new JSONObject(); + subTable.put("name", paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + }else{ +// 根据名称获取表单中明细表信息 + List subForm = subFormMap.get(paramSubTableName); + // 获取参数配置中的字段信息 + JSONObject paramFields = paramSubTable.getJSONObject("fields"); + if(subForm==null){ +//// 创建推送参数对象 + JSONObject subTable = new JSONObject(); + subTable.put("name", paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,null,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + }else{ + // 创建推送参数对象 + JSONObject subTable = new JSONObject(); + subTable.put("name", paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); +// 遍历所有明细表数据 + for (FormDataVo subFormDataVo : subForm) { + JSONObject subRecord = new JSONObject(); + JSONArray subFields = handleFields(paramFields,formDataVo,subFormDataVo,enumFields,accountFields,deptFields,postFields,levelFields, + memberFields,fileFields,configVo,attachmentInfos); + subRecord.put("fields",subFields); + subRecords.add(subRecord); + } + subTable.put("records",subRecords); + subTables.add(subTable); + } + } + } + data.put("subTables",subTables); +// 添加附件数据 + data.put("attachmentInfos",attachmentInfos); +// 插入档案表参数 + dataList.add(data); + jsonObject.put("dataList",dataList); + + return jsonObject; + } + + public String getjtToken(ConfigVo configVo) throws IOException { + String getTokenUrl = configVo.getParamVal(MemberManageConstants.getTokenUrl.name()); + String restUserName = configVo.getParamVal(MemberManageConstants.restUserName.name()); + String restPassword = configVo.getParamVal(MemberManageConstants.restPassword.name()); + String loginName = configVo.getParamVal(MemberManageConstants.loginName.name()); + String jttoken = ProtUtil.getToken(getTokenUrl,restUserName,restPassword,loginName); + return jttoken; + } + + public String getzsjToken(ConfigVo configVo) throws IOException { + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); + String zsjtoken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + return zsjtoken; + } + + + + private JSONArray handleFields(JSONObject paramFields,FormDataVo formDataVo,FormDataVo subFormDataVo,String enumFields, + String accountFields,String deptFileds,String postFields,String levelFields,String memberFields, + String fileFields,ConfigVo configVo,JSONArray attachmentInfos) throws BusinessException, IOException, NoSuchFieldException { + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramFields.entrySet()) { + JSONObject subField = new JSONObject(); + FieldDataVo fieldDataVo = null; + try { + fieldDataVo = formDataVo.getFieldData(entry.getValue().toString()); + } catch (NoSuchFieldException e) { + if(fieldDataVo==null&&subFormDataVo!=null){ + fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + } + } + if(fieldDataVo.getDbValue()==null){ + continue; + } + subField.put("name", entry.getKey()); +// 设置默认值,避免出现空参数的情况 + subField.put("value",""); + subField.put("showValue",""); +// 判断当前处理字段是否为枚举 + if (enumFields.contains(entry.getKey())) { +// 查询枚举信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long enumItemId = Long.parseLong(dbValue); + CtpEnumItem ctpEnumItem = getEnumManagerNew().getCtpEnumItem(enumItemId); +// 设置枚举数据值 + subField.put("value", ""); + subField.put("showValue", ctpEnumItem.getShowvalue()); + } +// 判断当前处理字段是否为单位 + } else if (accountFields.contains(entry.getKey())) { +// 查询单位控件信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long accountId = Long.parseLong(dbValue); + V3xOrgAccount v3xOrgAccount = getOrgManager().getAccountById(accountId); +// 设置单位数据值 + subField.put("value", v3xOrgAccount.getId()); + subField.put("showValue", ""); + } +// 判断当前处理字段是否为部门 + } else if (deptFileds.contains(entry.getKey())) { +// 查询部门控件信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long departmentId = Long.parseLong(dbValue); + V3xOrgDepartment v3xOrgDepartment = getOrgManager().getDepartmentById(departmentId); +// 设置部门数据值 + subField.put("value", v3xOrgDepartment.getId()); + subField.put("showValue", ""); + } +// 判断当前处理字段是否为岗位 + } else if (postFields.contains(entry.getKey())) { +// 查询岗位控件信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long postId = Long.parseLong(dbValue); + V3xOrgPost v3xOrgPost = getOrgManager().getPostById(postId); +// 设置岗位数据值 + subField.put("value", v3xOrgPost.getId()); + subField.put("showValue", ""); + } +// 判断当前处理字段是否为职务级别 + } else if (levelFields.contains(entry.getKey())) { +// 查询职务级别控件信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long levelId = Long.parseLong(dbValue); + V3xOrgLevel v3xOrglevel = getOrgManager().getLevelById(levelId); +// 设置职务级别数据值 + subField.put("value", v3xOrglevel.getId()); + subField.put("showValue", ""); + } +// 判断当前处理字段是否为人员 + } else if (memberFields.contains(entry.getKey())) { +// 查询人员控件信息 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + long memberId = Long.parseLong(dbValue); + V3xOrgMember v3xOrgMember = getOrgManager().getMemberById(memberId); +// 设置人员数据值 + subField.put("value", v3xOrgMember.getId()); + subField.put("showValue", ""); + } +// 判断当前处理字段是否为附件 + } else if (fileFields.contains(entry.getKey())) { +// 获取附件控件的数据 + if (fieldDataVo.getDbValue() != null) { + String dbValue = fieldDataVo.getDbValue().toString(); + List attachmentIds = getAttachmentManagery().getBySubReference(Long.parseLong(dbValue)); +// 获取当前附件控件的所有附件信息 + for (int n = 0; n < attachmentIds.size(); n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = getAttachmentManagery().getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".") + 1); + String oaFileName = filename.substring(0, filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(MemberManageConstants.dowUrl.name()) + "/" + fileUrl + "?fileName=" + fileType + "&token=" + getjtToken(configVo); + log.info("下载URL:" + dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str + "/memberfiles/" + formDataVo.getId() + "/" + filename; + log.info("下载地址:" + dowPath); + String download = ProtUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(MemberManageConstants.uploadUrl.name()); + String targetUrl = uploadUrl + "?token=" + getzsjToken(configVo); + String uploadData = ProtUtil.uploadFile(targetUrl, dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if (atts.size() > 0) { + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference", dbValue); + attachmentInfo.put("fileUrl", att.getString("fileUrl")); + attachmentInfo.put("sort", n); + attachmentInfos.add(attachmentInfo); + } + } + subField.put("value", dbValue); + subField.put("showValue", ""); + } + } else { +// 设置文本控件数据 + subField.put("value", ""); + subField.put("showValue", fieldDataVo.getStringValue()); + } + subFields.add(subField); + } + return subFields; + } + + +} diff --git a/src/com/seeyon/apps/src_membermanage/util/ProtUtil.java b/src/com/seeyon/apps/src_membermanage/util/ProtUtil.java new file mode 100644 index 0000000..86a1276 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/util/ProtUtil.java @@ -0,0 +1,463 @@ +package com.seeyon.apps.src_membermanage.util; + +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_membermanage.constants.MemberManageConstants; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicHeader; +import org.apache.http.util.EntityUtils; +import www.seeyon.com.utils.StringUtil; + +import java.io.*; +import java.net.*; +import java.nio.file.Files; +import java.util.Map; + +public class ProtUtil { + + public static String uploadFile(String targetUrl, String filePath) throws IOException { + String boundary = Long.toHexString(System.currentTimeMillis()); // 随机边界 + InputStream is = null; + BufferedReader br = null; + String result = null; + String CRLF = "\r\n"; // 换行符 + URL url = new URL(targetUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + + connection.setDoOutput(true); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + + try ( + OutputStream output = connection.getOutputStream(); + PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"), true); + ) { + writer.append("--" + boundary).append(CRLF); + writer.append("Content-Disposition: form-data; name=\"title\"").append(CRLF); + writer.append(CRLF).append("测试11").append(CRLF).flush(); + writer.append("--" + boundary).append(CRLF); + writer.append("Content-Disposition: form-data; name=\"fileType\"").append(CRLF); + writer.append(CRLF).append("pdf").append(CRLF).flush(); + // 发送文件数据 + File file = new File(filePath); + writer.append("--" + boundary).append(CRLF); + writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"").append(CRLF); + writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(file.getName())).append(CRLF); + writer.append(CRLF).flush(); + + Files.copy(file.toPath(), output); + output.flush(); // 确保文件数据发送完毕 + + writer.append(CRLF).flush(); // 结束行 + writer.append("--" + boundary + "--").append(CRLF); + } + + int responseCode = connection.getResponseCode(); + // 连接对象获取一个输入流,向远程读取 + if (connection.getResponseCode() == 200) { + + is = connection.getInputStream(); + // 对输入流对象进行包装:charset根据工作项目组的要求来设置 + br = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + StringBuffer sbf = new StringBuffer(); + String temp = null; + // 循环遍历一行一行读取数据 + while ((temp = br.readLine()) != null) { + sbf.append(temp); + sbf.append("\r\n"); + } + result = sbf.toString(); + System.out.println(result); + } + // 关闭资源 + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != is) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + connection.disconnect(); + return result; + } + + /** + * 调用post接口 + * + * @param str 调用接口传递的参数json + * @param urlStr 需要调用的url对应的参数文件中的编码 + * @return + */ + public static JSONObject doPost(String str, String urlStr) { + HttpURLConnection connection = null; + InputStream is = null; + OutputStream os = null; + BufferedReader br = null; + String result = null; + try { + URL url = new URL(urlStr); + // 通过远程url连接对象打开连接 + connection = (HttpURLConnection) url.openConnection(); + // 设置连接请求方式 + connection.setRequestMethod("POST"); + // 设置连接主机服务器超时时间:15000毫秒 + connection.setConnectTimeout(15000); + // 设置读取主机服务器返回数据超时时间:60000毫秒 + connection.setReadTimeout(60000); + + // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true + connection.setDoOutput(true); + // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无 + connection.setDoInput(true); + // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。 + connection.setRequestProperty("Content-Type", "application/json"); + // 通过连接对象获取一个输出流 + os = connection.getOutputStream(); + // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 + if (!("".equals(str) || str == null)) { + os.write(str.getBytes("UTF-8")); + } + // 连接对象获取一个输入流,向远程读取 + if (connection.getResponseCode() == 200) { + + is = connection.getInputStream(); + // 对输入流对象进行包装:charset根据工作项目组的要求来设置 + br = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + StringBuffer sbf = new StringBuffer(); + String temp = null; + // 循环遍历一行一行读取数据 + while ((temp = br.readLine()) != null) { + sbf.append(temp); + sbf.append("\r\n"); + } + result = sbf.toString(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != os) { + try { + os.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != is) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + // 断开与远程地址url的连接 + connection.disconnect(); + } + JSONObject json = JSONObject.parseObject(result); + return json; + + } + + + public static void downloadFile(String urlStr, String filePath){ + String accesstoken = "T3KbU3zlRL"; + String appSecret = "owmMX93AfGZQBF2NCuH9a7i9TOeF5x"; + HttpURLConnection conn = null; + OutputStream out = null; + try { + + StringBuilder urlBuilder = new StringBuilder(urlStr); + + URL url = new URL(urlBuilder.toString()); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setRequestProperty("Host", url.getHost()); + conn.setRequestProperty("Accept", "text/plain,application/json"); + conn.setRequestProperty("User-Agent", "privateapp-java-api-client"); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setUseCaches(false); + + + int statusCode = conn.getResponseCode(); + StringBuilder response = new StringBuilder(); + if (statusCode == 200) { + try (InputStream ins = conn.getInputStream()){ + try (OutputStream outputStream = new FileOutputStream(filePath)) { + int bytesRead; + byte[] buffer = new byte[4096]; + while ((bytesRead = ins.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + } + //process response data + } catch (Exception e){ + // 处理异常情况 + } + } else { + // 处理异常情况 + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (conn != null) { + conn.disconnect(); + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 执行get请求 + * + * @return + * @throws IOException + * @throws FileNotFoundException + */ + public static String doGet(String geturl,JSONObject param) throws FileNotFoundException, IOException, URISyntaxException { +// 创建 HttpClient 实例 + CloseableHttpClient httpClient = HttpClients.createDefault(); + String responseBody = ""; + try { + // 构建包含参数的 URI + URIBuilder uriBuilder = new URIBuilder(geturl); + if(param.size()>0){ + uriBuilder.addParameter("params", param.toString()); + } + URI uri = uriBuilder.build(); + // 创建 HttpGet 对象 + HttpGet httpGet = new HttpGet(uri); + + // 发送请求并获取响应 + CloseableHttpResponse response = httpClient.execute(httpGet); + + try { + // 获取响应实体并转换为字符串 + responseBody = EntityUtils.toString(response.getEntity()); + } finally { + // 关闭响应 + response.close(); + } + } catch (URISyntaxException e) { + System.err.println("URI 构建错误: " + e.getMessage()); + } catch (IOException e) { + System.err.println("请求发送或响应处理错误: " + e.getMessage()); + } finally { + try { + // 关闭 HttpClient + httpClient.close(); + } catch (IOException e) { + System.err.println("关闭 HttpClient 错误: " + e.getMessage()); + } + } + return responseBody; + } + + /** + * 获取一个token + * + * @return + * @throws IOException + * @throws FileNotFoundException + */ + public static String getToken(String oatokenurl,String restName,String restPassword,String loginName) throws FileNotFoundException, IOException { + String address = oatokenurl +"/"+ restName + "/" + restPassword; + if(StringUtil.isNotEmpty(loginName)){ + address = address +"?loginName="+loginName; + } + DefaultHttpClient client = new DefaultHttpClient(); + String result = ""; + HttpGet get = new HttpGet(address); + // 添加 Headers 信息 + get.addHeader(new BasicHeader("Accept", "application/json")); + try { + HttpResponse res = client.execute(get); + if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + result = EntityUtils.toString(res.getEntity()); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + String token = ""; + if(result.contains("{")) { + JSONObject jsObj = JSONObject.parseObject(result); + token = jsObj.get("id").toString(); + }else { + token = result; + } + return token; + } + /** + * 下载文件到指定目录 + * @param dowUrl:http地址 + * @param dowPath:指定目录 + * */ + public static String download(String dowUrl, String dowPath){ + try { +// log.info("下载地址是:"+dowUrl+",存储地址是:"+dowPath); + URL url = new URL(dowUrl); + + URLConnection urlConnection = url.openConnection(); + + HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;// http的连接类 + + //String contentType = httpURLConnection.getContentType();//请求类型,可用来过滤请求, + + httpURLConnection.setConnectTimeout(1000*5);//设置超时 + + httpURLConnection.setRequestMethod("GET");//设置请求方式,默认是GET + + httpURLConnection.setRequestProperty("Charset", "UTF-8");// 设置字符编码 + + httpURLConnection.connect();// 打开连接 + + BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream()); + + String path = dowPath;// 指定存放位置 + File filed = new File(path); + String mergePdfPath = dowPath ; + String[] paths = mergePdfPath.split("/"); + String mpath = ""; + for(int i = 0 ; i headers, String encode){ + if(encode == null){ + encode = "utf-8"; + } + CloseableHttpResponse httpResponse = null; + CloseableHttpClient closeableHttpClient = null; + String content = null; + //since 4.3 不再使用 DefaultHttpClient + try { + + //HttpClients.createDefault()等价于 HttpClientBuilder.create().build(); + closeableHttpClient = HttpClients.createDefault(); + HttpPut httpput = new HttpPut(url); + + //设置header + httpput.setHeader("Content-type", "application/json"); + if (headers != null && headers.size() > 0) { + for (Map.Entry entry : headers.entrySet()) { + httpput.setHeader(entry.getKey(),entry.getValue().toString()); + } + } + //组织请求参数 + StringEntity stringEntity = new StringEntity(stringJson, encode); + httpput.setEntity(stringEntity); + //响应信息 + httpResponse = closeableHttpClient.execute(httpput); + HttpEntity entity = httpResponse.getEntity(); + content = EntityUtils.toString(entity, encode); + } catch (Exception e) { + e.printStackTrace(); + }finally{ + try { + httpResponse.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + try { + closeableHttpClient.close(); //关闭连接、释放资源 + } catch (IOException e) { + e.printStackTrace(); + } + return content; + } + + + + + +} diff --git a/src/com/seeyon/apps/src_membermanage/vo/MemberManagerResponse.java b/src/com/seeyon/apps/src_membermanage/vo/MemberManagerResponse.java new file mode 100644 index 0000000..143b6d6 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/vo/MemberManagerResponse.java @@ -0,0 +1,76 @@ +package com.seeyon.apps.src_membermanage.vo; + +import com.alibaba.fastjson.JSONObject; + +/** + * 功能描述:
+ *
+ *
+ * 
+ * + * @Author: HuangZhengguo + * @Date: 2024/4/28 + */ +public class MemberManagerResponse { + + private boolean success; + private int status; + private String msg; + private String data; + + + public MemberManagerResponse(JSONObject object) { + if(object.containsKey("code")) { + this.status = object.getString("code").equals("0")?1:2; + } else { + this.status = object.getString("status").equals("success")?1:2; + } + this.success = (1 == status); + if(object.containsKey("message")) { + this.msg = object.getString("message"); + } else { + this.msg = object.getString("errormsg"); + } + if(object.containsKey("data")) { + this.data = object.getString("data"); + } else { + this.data = object.getString("data"); + } + } + + public boolean isSuccess() { + return success; + } + + public MemberManagerResponse setSuccess(boolean success) { + this.success = success; + return this; + } + + public int getStatus() { + return status; + } + + public MemberManagerResponse setStatus(int status) { + this.status = status; + return this; + } + + public String getMsg() { + return msg; + } + + public MemberManagerResponse setMsg(String msg) { + this.msg = msg; + return this; + } + + public String getData() { + return data; + } + + public MemberManagerResponse setData(String data) { + this.data = data; + return this; + } +} diff --git a/src/com/seeyon/apps/src_membermanage/vo/MemberOrganizationResponse.java b/src/com/seeyon/apps/src_membermanage/vo/MemberOrganizationResponse.java new file mode 100644 index 0000000..8782d06 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/vo/MemberOrganizationResponse.java @@ -0,0 +1,76 @@ +package com.seeyon.apps.src_membermanage.vo; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +/** + * 功能描述:
+ *
+ *
+ * 
+ * + * @Author: HuangZhengguo + * @Date: 2024/4/28 + */ +public class MemberOrganizationResponse { + + private boolean success; + private int status; + private String msg; + private String data; + + public MemberOrganizationResponse(JSONObject object) { + boolean success = object.getBooleanValue("success"); + this.success = success; + if(success){ + if(object.containsKey("successMsgs")) { + this.data = object.getJSONArray("successMsgs").toString(); + this.msg = object.getJSONArray("successMsgs").toString(); + } + }else{ + if(object.containsKey("errorMsgs")) { + this.msg = object.getJSONArray("errorMsgs").toString(); + } + if(object.containsKey("errorMsgInfos")) { + this.data = object.getJSONArray("errorMsgInfos").toString(); + } + } + + } + + public boolean isSuccess() { + return success; + } + + public MemberOrganizationResponse setSuccess(boolean success) { + this.success = success; + return this; + } + + public int getStatus() { + return status; + } + + public MemberOrganizationResponse setStatus(int status) { + this.status = status; + return this; + } + + public String getMsg() { + return msg; + } + + public MemberOrganizationResponse setMsg(String msg) { + this.msg = msg; + return this; + } + + public String getData() { + return data; + } + + public MemberOrganizationResponse setData(String data) { + this.data = data; + return this; + } +} diff --git a/src/com/seeyon/apps/src_organizationInitialization/OrganizationInitializationPluginApi.java b/src/com/seeyon/apps/src_organizationInitialization/OrganizationInitializationPluginApi.java new file mode 100644 index 0000000..8d54216 --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/OrganizationInitializationPluginApi.java @@ -0,0 +1,47 @@ +package com.seeyon.apps.src_organizationInitialization; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_organizationInitialization.constant.OrganizationInitializationConstants; + +import java.util.Map; + +public class OrganizationInitializationPluginApi extends APluginInfoApi { + public OrganizationInitializationPluginApi() { + } + + public String getPluginId() { + System.out.println(OrganizationInitializationConstants.getPluginId()); + return OrganizationInitializationConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "集团组织架构同步管理"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + OrganizationInitializationConstants[] var2 = OrganizationInitializationConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + OrganizationInitializationConstants value = var2[var4]; + if (value != OrganizationInitializationConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } + + public void registerCustomEvent(Map eventAndNodes) { + eventAndNodes.put("propertyDispose", "集团组织架构同步管理"); + } +} + diff --git a/src/com/seeyon/apps/src_organizationInitialization/constant/OrganizationInitializationConstants.java b/src/com/seeyon/apps/src_organizationInitialization/constant/OrganizationInitializationConstants.java new file mode 100644 index 0000000..3a5e63d --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/constant/OrganizationInitializationConstants.java @@ -0,0 +1,36 @@ +package com.seeyon.apps.src_organizationInitialization.constant; + +public enum OrganizationInitializationConstants { + plugin("src_organizationInitialization", "插件ID"), + getTokenUrl("http://127.0.0.1:8888/seeyon/rest/token", "集团TOKEN接口路径"), + restUserName("shenxian", "集团REST用户名"), + restPassword("ccfa57fe-cf2f-4d26-a24c-a0801a431168", "集团REST密码"), + loginName("shenxian", "集团管理员登录名"), + uploadUrl("http://127.0.0.1:8888/seeyon/rest/attachment", "主数据平台上传接口"), + getzsjTokenUrl("http://127.0.0.1:8888/seeyon/rest/token", "主数据TOKEN接口路径"), + restzsjUserName("shenxian", "主数据REST用户名"), + restzsjPassword("ccfa57fe-cf2f-4d26-a24c-a0801a431168", "主数据REST密码"), + zsjloginName("shenxian", "主数据管理员账号"), + archiveUrl("http://127.0.0.1:8888/seeyon/rest/bpm/process/start", "主数据档案表新增接口路径"), + dowUrl("http://127.0.0.1:8888/seeyon/rest/attachment/file", "附件下载路径"); + + private String defaultValue; + private String description; + + private OrganizationInitializationConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + public String getDefaultValue() { + return this.defaultValue; + } + + public String getDescription() { + return this.description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } +} \ No newline at end of file diff --git a/src/com/seeyon/apps/src_organizationInitialization/dao/IOrganizationInitializationDao.java b/src/com/seeyon/apps/src_organizationInitialization/dao/IOrganizationInitializationDao.java new file mode 100644 index 0000000..0af7f61 --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/dao/IOrganizationInitializationDao.java @@ -0,0 +1,35 @@ +package com.seeyon.apps.src_organizationInitialization.dao; + +import java.util.List; +import java.util.Map; + +public interface IOrganizationInitializationDao { + + +// 获取所有人员档案信息 + public List> getMemberFiles(); +// 获取指定人员的教育经历 + public List> getMemberjyjls(String formmainId); +// 获取指定人员的教育经历 + public List> getMembergzjls(String formmainId); +// 获取指定人员的家庭情况 + public List> getMemberjtqks(String formmainId); +// 获取指定人员的培训明细 + public List> getMemberpxmxs(String formmainId); +// 获取指定人员的合同明细 + public List> getMemberhtmxs(String formmainId); +// 获取指定人员的奖惩明细 + public List> getMemberjcmxs(String formmainId); +// 获取指定人员的考情绩效明细 + public List> getMemberkqjxs(String formmainId); +// 获取指定人员的个人履历 + public List> getMembergrlls(String formmainId); +// 获取指定人员的荣誉证书 + public List> getMemberryzss(String formmainId); +// 获取指定人员的重要社会关系 + public List> getMemberzygxs(String formmainId); +// 获取指定人员的重要社会关系 + public List> getMemberwcqks(String formmainId); + + +} diff --git a/src/com/seeyon/apps/src_organizationInitialization/dao/impl/OrganizationInitializationDaoImpl.java b/src/com/seeyon/apps/src_organizationInitialization/dao/impl/OrganizationInitializationDaoImpl.java new file mode 100644 index 0000000..fb97696 --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/dao/impl/OrganizationInitializationDaoImpl.java @@ -0,0 +1,365 @@ +package com.seeyon.apps.src_organizationInitialization.dao.impl; + +import com.seeyon.apps.src_organizationInitialization.dao.IOrganizationInitializationDao; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.util.JDBCAgent; + +import java.sql.SQLException; +import java.util.*; + +public class OrganizationInitializationDaoImpl implements IOrganizationInitializationDao { + +// 本地环境 +// private String getMemberFiles = "select * from formmain_0199"; +// private String getMemberjyjls = "select * from formson_0200 where formmain_id = ?"; +// private String getMembergzjls = "select * from formson_0201 where formmain_id = ?"; +// private String getMemberjtqks = "select * from formson_0202 where formmain_id = ?"; +// private String getMemberpxmxs = "select * from formson_0203 where formmain_id = ?"; +// private String getMemberhtmxs = "select * from formson_0204 where formmain_id = ?"; +// private String getMemberjcmxs = "select * from formson_0205 where formmain_id = ?"; +// private String getMemberkqjxs = "select * from formson_0206 where formmain_id = ?"; +// private String getMembergrlls = "select * from formson_0207 where formmain_id = ?"; +// private String getMemberryzss = "select * from formson_0208 where formmain_id = ?"; +// private String getMemberzygxs = "select * from formson_0209 where formmain_id = ?"; +// private String getMemberwcqks = "select * from formson_0210 where formmain_id = ?"; + +// 正式环境 + private String getMemberFiles = "select * from formmain_10295"; + private String getMemberjyjls = "select * from formson_10296 where formmain_id = ?"; + private String getMembergzjls = "select * from formson_10297 where formmain_id = ?"; + private String getMemberjtqks = "select * from formson_10298 where formmain_id = ?"; + private String getMemberpxmxs = "select * from formson_10312 where formmain_id = ?"; + private String getMemberhtmxs = "select * from formson_10322 where formmain_id = ?"; + private String getMemberjcmxs = "select * from formson_10347 where formmain_id = ?"; + private String getMemberkqjxs = "select * from formson_10351 where formmain_id = ?"; + private String getMembergrlls = "select * from formson_10388 where formmain_id = ?"; + private String getMemberryzss = "select * from formson_10401 where formmain_id = ?"; + private String getMemberzygxs = "select * from formson_10409 where formmain_id = ?"; + private String getMemberwcqks = "select * from formson_10554 where formmain_id = ?"; + + @Override + public List> getMemberFiles() { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberFiles); + List p = new ArrayList(); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberjyjls(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberjyjls); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMembergzjls(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMembergzjls); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberjtqks(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberjtqks); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberpxmxs(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberpxmxs); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberhtmxs(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberhtmxs); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberjcmxs(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberjcmxs); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberkqjxs(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberkqjxs); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMembergrlls(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMembergrlls); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberryzss(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberryzss); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberzygxs(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberzygxs); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + @Override + public List> getMemberwcqks(String formmainId) { + List> ret = new ArrayList>(); + JDBCAgent agent = new JDBCAgent(); + try { + StringBuilder sql = new StringBuilder(getMemberwcqks); + List p = new ArrayList(); + p.add(formmainId); + agent.execute(sql.toString(), p); + List list = agent.resultSetToList(); + for (Map map : list) { + ret.add(map); + } + } catch (BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + if (agent != null) { + agent.close(); + } + } + return ret; + } + + + +} diff --git a/src/com/seeyon/apps/src_organizationInitialization/quartz/OrganizationInitializationQuartz.java b/src/com/seeyon/apps/src_organizationInitialization/quartz/OrganizationInitializationQuartz.java new file mode 100644 index 0000000..d29278e --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/quartz/OrganizationInitializationQuartz.java @@ -0,0 +1,1603 @@ +package com.seeyon.apps.src_organizationInitialization.quartz; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.ext.quartz.AbstractQuartzTask; +import com.seeyon.apps.src_organizationInitialization.constant.OrganizationInitializationConstants; +import com.seeyon.apps.src_organizationInitialization.dao.IOrganizationInitializationDao; +import com.seeyon.apps.src_organizationInitialization.util.FormExportUtil; +import com.seeyon.apps.src_organizationInitialization.util.InterfaceListUtil; +import com.seeyon.apps.src_organizationInitialization.util.ParamUtil; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.SystemEnvironment; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import com.seeyon.ctp.common.filemanager.manager.AttachmentManager; +import com.seeyon.ctp.common.filemanager.manager.FileManager; +import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem; +import com.seeyon.ctp.common.po.filemanager.Attachment; +import com.seeyon.ctp.organization.bo.*; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.organization.manager.OrgManagerDirect; +import com.seeyon.ctp.util.UUIDLong; +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.inject.Inject; +import java.io.File; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public class OrganizationInitializationQuartz extends AbstractQuartzTask { + private static final Log log = LogFactory.getLog(OrganizationInitializationQuartz.class); + @Inject + private ICstConfigApi cstConfigApi; + private AttachmentManager attachmentManager; + private volatile Date upDate; + private volatile boolean running; + + public OrganizationInitializationQuartz() { + } + + public void setAttachmentManager(AttachmentManager attachmentManager) { + this.attachmentManager = attachmentManager; + } + + public AttachmentManager getAttachmentManagery() { + if (this.attachmentManager == null) { + this.attachmentManager = (AttachmentManager) AppContext.getBean("attachmentManager"); + } + return this.attachmentManager; + } + + + private FileManager fileManager; + public void setFileManager(FileManager fileManager) { + this.fileManager = fileManager; + } + + public FileManager getFileManager() { + if (this.fileManager == null) { + this.fileManager = (FileManager) AppContext.getBean("fileManager"); + } + + return this.fileManager; + } + + + private IOrganizationInitializationDao organizationInitializationDao; + + public void setOrganizationInitializationDao(IOrganizationInitializationDao organizationInitializationDao) { + this.organizationInitializationDao = organizationInitializationDao; + } + + public IOrganizationInitializationDao getOrganizationInitializationDao() { + if (organizationInitializationDao == null) { + organizationInitializationDao = (IOrganizationInitializationDao) AppContext.getBean("organizationInitializationDao"); + } + return organizationInitializationDao; + } + + private EnumManager enumManagerNew; + + public void setEnumManagerNew(EnumManager enumManagerNew) { + this.enumManagerNew = enumManagerNew; + } + + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) { + enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew"); + } + return enumManagerNew; + } + + private OrgManager orgManager; + + public void setOrgManager(OrgManager orgManager) { + this.orgManager = orgManager; + } + + public OrgManager getOrgManager() { + if (orgManager == null) { + orgManager = (OrgManager) AppContext.getBean("orgManager"); + } + return orgManager; + } + + private OrgManagerDirect orgManagerDirect ; + public void setOrgManagerDirect(OrgManagerDirect orgManagerDirect) { + this.orgManagerDirect = orgManagerDirect; + } + public OrgManagerDirect getOrgManagerDirect(){ + if (orgManagerDirect == null) { + orgManagerDirect = (OrgManagerDirect) AppContext.getBean("orgManagerDirect"); + } + return orgManagerDirect; + } + + public ConfigVo getOrganizationInitializationConfig() { + return this.cstConfigApi.getConfig(this.getPluginId()); + } + + public String getPluginId() { + return OrganizationInitializationConstants.getPluginId(); + } + +// public String taskRun(String tempCode) throws Exception { +// +//// 6620799416622859810、、13886788426 +// V3xOrgMember v3xOrgMember = getOrgManager().getMemberById(6620799416622859810l); +// String loginName = v3xOrgMember.getLoginName(); +// v3xOrgMember.setLoginName(v3xOrgMember,loginName+"1"); +//// v3xOrgMember.setV3xOrgPrincipal(loginName+"1"); +// v3xOrgMember.getV3xOrgPrincipal().setLoginName(loginName+"2"); +//// v3xOrgMember.setV3xOrgPrincipal(v3xOrgPrincipal); +// String loginName1 = v3xOrgMember.getLoginName(); +// orgManagerDirect.updateMember(v3xOrgMember); +// +// return ""; +// } + + public String taskRun(String tempCode) throws Exception { + //进入定时任务同步方法 + System.out.println("进入同步方法"); + FormExportUtil formExportUtil = new FormExportUtil(); + ConfigVo configVo = getOrganizationInitializationConfig(); + InterfaceListUtil interfaceListUtil = new InterfaceListUtil(); +// 查询当前人员档案数据 + List> memberFiles = organizationInitializationDao.getMemberFiles(); + for(int i = 0 ; i < memberFiles.size(); i++){ +// 获取通用token + String getTokenUrl = configVo.getParamVal(OrganizationInitializationConstants.getTokenUrl.name()); + String restUserName = configVo.getParamVal(OrganizationInitializationConstants.restUserName.name()); + String restPassword = configVo.getParamVal(OrganizationInitializationConstants.restPassword.name()); + String loginName = configVo.getParamVal(OrganizationInitializationConstants.loginName.name()); + String jttoken = interfaceListUtil.getToken(getTokenUrl,restUserName,restPassword,loginName); + String getzsjTokenUrl = configVo.getParamVal(OrganizationInitializationConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(OrganizationInitializationConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(OrganizationInitializationConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(OrganizationInitializationConstants.zsjloginName.name()); + String zsjtoken = interfaceListUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 主表 formmain_10295检索附件列表数据field0043照片,field0105身份证,field0103第一学历,field0140最高学历,field0144专业证书 + Map memberFile = memberFiles.get(i); +//// 创建标准参数 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("formCode","ygda"); + jsonObject.put("loginName",zsjloginName); + JSONArray dataList = new JSONArray(); + + JSONObject data = new JSONObject(); + JSONObject masterTable = new JSONObject(); + JSONArray attachmentInfos = new JSONArray(); + JSONArray subTables = new JSONArray(); + JSONObject record = new JSONObject(); + record.put("id", UUIDLong.longUUID()); + JSONArray fields = new JSONArray(); + + for (Map.Entry entry : memberFile.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fields.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+memberFile.get("id")+"/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fields.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fields.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fields.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } +// 根据ID主表查询明细表信息,formson_10296 教育经历 formson_0132 + String formmainId = memberFile.get("id").toString(); + List> memberjyjls = organizationInitializationDao.getMemberjyjls(formmainId); + JSONObject subTablejyjl = new JSONObject(); + subTablejyjl.put("name","formson_0211"); + JSONArray recordsjyjl = new JSONArray(); + for(int jyjl = 0 ; jyjl memberjyjl = memberjyjls.get(jyjl); + + JSONObject recordjyjl = new JSONObject(); + recordjyjl.put("id",UUIDLong.longUUID()); + JSONArray fieldjyjls = new JSONArray(); + for (Map.Entry entry : memberjyjl.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldjyjls.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjyjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordjyjl.put("fields",fieldjyjls); + recordsjyjl.add(recordjyjl); + } + subTablejyjl.put("records",recordsjyjl); + subTables.add(subTablejyjl); + +// 根据ID主表查询明细表信息,formson_10297 工作经历 formson_0133 + List> membergzjls = organizationInitializationDao.getMembergzjls(formmainId); + JSONObject subTablegzjl = new JSONObject(); + subTablegzjl.put("name","formson_0212"); + JSONArray recordsgzjl = new JSONArray(); + for(int gzjl = 0 ; gzjl membergzjl = membergzjls.get(gzjl); + + JSONObject recordgzjl = new JSONObject(); + recordgzjl.put("id",UUIDLong.longUUID()); + JSONArray fieldgzjls = new JSONArray(); + for (Map.Entry entry : membergzjl.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldgzjls.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldgzjls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordgzjl.put("fields",fieldgzjls); + recordsgzjl.add(recordgzjl); + } + subTablegzjl.put("records",recordsgzjl); + subTables.add(subTablegzjl); + +// 根据ID主表查询明细表信息,formson_10298 家庭情况 formson_0134 + List> memberjtqks = organizationInitializationDao.getMemberjtqks(formmainId); + JSONObject subTablejtqk = new JSONObject(); + subTablejtqk.put("name","formson_0213"); + JSONArray recordsjtqk = new JSONArray(); + for(int jtqk = 0 ; jtqk memberjtqk = memberjtqks.get(jtqk); + + JSONObject recordjtqk = new JSONObject(); + recordjtqk.put("id",UUIDLong.longUUID()); + JSONArray fieldjtqks = new JSONArray(); + for (Map.Entry entry : memberjtqk.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldjtqks.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjtqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordjtqk.put("fields",fieldjtqks); + recordsjtqk.add(recordjtqk); + } + subTablejtqk.put("records",recordsjtqk); + subTables.add(subTablejtqk); + +// 根据ID主表查询明细表信息,formson_10312 培训明细 formson_0135 + List> memberpxmxs = organizationInitializationDao.getMemberpxmxs(formmainId); + JSONObject subTablepxmx = new JSONObject(); + subTablepxmx.put("name","formson_0214"); + JSONArray recordspxmx = new JSONArray(); + for(int pxmx = 0 ; pxmx memberpxmx = memberpxmxs.get(pxmx); + + JSONObject recordpxmx = new JSONObject(); + recordpxmx.put("id",UUIDLong.longUUID()); + JSONArray fieldpxmxs = new JSONArray(); + for (Map.Entry entry : memberpxmx.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldpxmxs.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldpxmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordpxmx.put("fields",fieldpxmxs); + recordspxmx.add(recordpxmx); + } + subTablepxmx.put("records",recordspxmx); + subTables.add(subTablepxmx); + +// 根据ID主表查询明细表信息,formson_10322 合同签订明细,检索附件列表数据field0063合同附件 formson_0136 + List> memberhtmxs = organizationInitializationDao.getMemberhtmxs(formmainId); + JSONObject subTablehtmx = new JSONObject(); + subTablehtmx.put("name","formson_0215"); + JSONArray recordshtmx = new JSONArray(); + for(int htmx = 0 ; htmx memberhtmx = memberpxmxs.get(htmx); + + JSONObject recordhtmx = new JSONObject(); + recordhtmx.put("id",UUIDLong.longUUID()); + JSONArray fieldhtmxs = new JSONArray(); + for (Map.Entry entry : memberhtmx.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldhtmxs.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldhtmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordhtmx.put("fields",fieldhtmxs); + recordshtmx.add(recordhtmx); + } + subTablehtmx.put("records",recordshtmx); + subTables.add(subTablehtmx); + +// 根据ID主表查询明细表信息,formson_10347 奖惩明细 formson_0137 + List> memberjcmxs = organizationInitializationDao.getMemberjcmxs(formmainId); + JSONObject subTablejcmx = new JSONObject(); + subTablejcmx.put("name","formson_0216"); + JSONArray recordsjcmx = new JSONArray(); + for(int jcmx = 0 ; jcmx memberjcmx = memberjcmxs.get(jcmx); + + JSONObject recordjcmx = new JSONObject(); + recordjcmx.put("id",UUIDLong.longUUID()); + JSONArray fieldjcmxs = new JSONArray(); + for (Map.Entry entry : memberjcmx.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldjcmxs.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldjcmxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordjcmx.put("fields",fieldjcmxs); + recordsjcmx.add(recordjcmx); + } + subTablejcmx.put("records",recordsjcmx); + subTables.add(subTablejcmx); + +// 根据ID主表查询明细表信息,formson_10351 绩效考核明细,检索附件field0088绩效考核附件 formson_0138 + List> memberkqjxs = organizationInitializationDao.getMemberkqjxs(formmainId); + JSONObject subTablekqjx = new JSONObject(); + subTablekqjx.put("name","formson_0217"); + JSONArray recordskqjx = new JSONArray(); + for(int kqjx = 0 ; kqjx memberkqjx = memberkqjxs.get(kqjx); + + JSONObject recordkqjx = new JSONObject(); + recordkqjx.put("id",UUIDLong.longUUID()); + JSONArray fieldkqjxs = new JSONArray(); + for (Map.Entry entry : memberkqjx.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldkqjxs.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldkqjxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordkqjx.put("fields",fieldkqjxs); + recordskqjx.add(recordkqjx); + } + subTablekqjx.put("records",recordskqjx); + subTables.add(subTablekqjx); + +// 根据ID主表查询明细表信息,formson_10388 个人履历 formson_0139 + List> membergrlls = organizationInitializationDao.getMembergrlls(formmainId); + JSONObject subTablegrll = new JSONObject(); + subTablegrll.put("name","formson_0218"); + JSONArray recordsgrll = new JSONArray(); + for(int grll = 0 ; grll membergrll = membergrlls.get(grll); + + JSONObject recordgrll = new JSONObject(); + recordgrll.put("id",UUIDLong.longUUID()); + JSONArray fieldgrlls = new JSONArray(); + for (Map.Entry entry : membergrll.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldgrlls.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldgrlls.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordgrll.put("fields",fieldgrlls); + recordsgrll.add(recordgrll); + } + subTablegrll.put("records",recordsgrll); + subTables.add(subTablegrll); + +// 根据ID主表查询明细表信息,formson_10401 荣誉证书明细,field0126荣誉证书附件 formson_0140 + List> memberryzss = organizationInitializationDao.getMemberryzss(formmainId); + JSONObject subTableryzs = new JSONObject(); + subTableryzs.put("name","formson_0219"); + JSONArray recordsryzs = new JSONArray(); + for(int ryzs = 0 ; ryzs memberryzs = memberryzss.get(ryzs); + + JSONObject recordryzs = new JSONObject(); + recordryzs.put("id",UUIDLong.longUUID()); + JSONArray fieldryzss = new JSONArray(); + for (Map.Entry entry : memberryzs.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldryzss.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldryzss.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordryzs.put("fields",fieldryzss); + recordsryzs.add(recordryzs); + } + subTableryzs.put("records",recordsryzs); + subTables.add(subTableryzs); + +// 根据ID主表查询明细表信息,formson_10409 重要社会关系明细 formson_0141 + List> memberzygxs = organizationInitializationDao.getMemberzygxs(formmainId); + JSONObject subTablezygx = new JSONObject(); + subTablezygx.put("name","formson_0220"); + JSONArray recordszygx = new JSONArray(); + for(int zygx = 0 ; zygx memberzygx = memberzygxs.get(zygx); + + JSONObject recordzygx = new JSONObject(); + recordzygx.put("id",UUIDLong.longUUID()); + JSONArray fieldzygxs = new JSONArray(); + for (Map.Entry entry : memberzygx.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldzygxs.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldzygxs.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordzygx.put("fields",fieldzygxs); + recordszygx.add(recordzygx); + } + subTablezygx.put("records",recordszygx); + subTables.add(subTablezygx); + +// 根据ID主表查询明细表信息,formson_10554 任务完成情况 formson_0142 + List> memberwcqks = organizationInitializationDao.getMemberwcqks(formmainId); + JSONObject subTablewcqk = new JSONObject(); + subTablewcqk.put("name","formson_0221"); + JSONArray recordswcqk = new JSONArray(); + for(int wcqk = 0 ; wcqk memberwcqk = memberwcqks.get(wcqk); + + JSONObject recordwcqk = new JSONObject(); + recordwcqk.put("id",UUIDLong.longUUID()); + JSONArray fieldwcqks = new JSONArray(); + for (Map.Entry entry : memberwcqk.entrySet()) { + if(!entry.getKey().contains("field")){ + continue; + } + if(ParamUtil.isEnum(entry.getKey())){ +// 判断是否为枚举 + if(entry.getValue()!=null){ + CtpEnumItem enumItem = getEnumManagerNew().getCtpEnumItem(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(enumItem.getShowvalue(),entry.getKey(),"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isDept(entry.getKey())){ +// 判断是否为部门 + if(entry.getValue()!=null){ + V3xOrgDepartment orgDepartment = getOrgManager().getDepartmentById(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(orgDepartment.getName(),entry.getKey(),orgDepartment.getId()+"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isUnit(entry.getKey())){ +// 判断是否为单位 + if(entry.getValue()!=null){ + V3xOrgAccount orgAccount = getOrgManager().getAccountById(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(orgAccount.getName(),entry.getKey(),orgAccount.getId()+"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isPost(entry.getKey())){ +// 判断是否为岗位 + if(entry.getValue()!=null){ + V3xOrgPost orgPost = getOrgManager().getPostById(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(orgPost.getName(),entry.getKey(),orgPost.getId()+"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isLevel(entry.getKey())){ +// 判断是否为职务级别 + if(entry.getValue()!=null){ + V3xOrgLevel orgLevel = getOrgManager().getLevelById(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(orgLevel.getName(),entry.getKey(),orgLevel.getId()+"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isMember(entry.getKey())){ +// 判断是否为人员 + if(entry.getValue()!=null){ + V3xOrgMember orgMember = getOrgManager().getMemberById(Long.parseLong(entry.getValue().toString())); + fieldwcqks.add(formExportUtil.setParamFields(orgMember.getName(),entry.getKey(),orgMember.getId()+"")); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else if(ParamUtil.isFile(entry.getKey())){ +// 判断是否为附件 + if(entry.getValue()!=null){ + List attachmentIds = attachmentManager.getBySubReference(Long.parseLong(entry.getValue().toString())); + JSONArray jsonArray = new JSONArray(); +// 获取当前附件控件的所有附件信息 + for (int n = 0 ; n < attachmentIds.size();n++) { +// 进行附件下载后上传至目标系统中 + Attachment attachment = attachmentManager.getAttachmentByFileURL(attachmentIds.get(n)); + Long fileUrl = attachment.getFileUrl(); + String filename = attachment.getFilename(); +// String[] fileType = filename.split("\\."); + String fileType = filename.substring(filename.lastIndexOf(".")+1); + String oaFileName = filename.substring(0,filename.lastIndexOf(".")); +// 调用接口下载文件,文件存放在指定的路径下 + String dowUrl = configVo.getParamVal(OrganizationInitializationConstants.dowUrl.name())+"/"+fileUrl+"?fileName="+fileType+"&token="+jttoken; + log.info("下载URL:"+dowUrl); + String str = SystemEnvironment.getApplicationFolder(); + String dowPath = str+"/memberfiles/"+filename; + log.info("下载地址:"+dowPath); + String download = interfaceListUtil.download(dowUrl, dowPath); +// String str = SystemEnvironment.getApplicationFolder(); + String uploadUrl = configVo.getParamVal(OrganizationInitializationConstants.uploadUrl.name()); + String targetUrl = uploadUrl+"?token="+zsjtoken; + String uploadData = interfaceListUtil.uploadFile(targetUrl,dowPath); + JSONObject uploadFile = JSON.parseObject(uploadData); + JSONArray atts = uploadFile.getJSONArray("atts"); + if(atts.size()>0){ + JSONObject att = atts.getJSONObject(0); + JSONObject attachmentInfo = new JSONObject(); + attachmentInfo.put("subReference",entry.getValue().toString()); + attachmentInfo.put("fileUrl",att.getString("fileUrl")); + attachmentInfo.put("sort",n); + attachmentInfos.add(attachmentInfo); + } + } + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + }else{ + if(entry.getValue()!=null){ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),entry.getValue().toString())); + }else{ + fieldwcqks.add(formExportUtil.setParamFields("",entry.getKey(),"")); + } + } + } + recordwcqk.put("fields",fieldwcqks); + recordswcqk.add(recordwcqk); + } + subTablewcqk.put("records",recordswcqk); + subTables.add(subTablewcqk); + +// fields.add(formExportUtil.setParamFields("","","")); + + record.put("fields",fields); + masterTable.put("record",record); + masterTable.put("name","formmain_0210"); + data.put("masterTable",masterTable); + data.put("attachmentInfos",attachmentInfos); + data.put("subTables",subTables); + dataList.add(data); + jsonObject.put("dataList",dataList); + jsonObject.put("rightId","5763781100389681074.2538693500733377688"); + +// 调用无流程表单创建接口,生成新环境无流程表单数据 + String archiveUrl = configVo.getParamVal(OrganizationInitializationConstants.archiveUrl.name()); + System.out.println(jsonObject.toString()); + JSONObject res = interfaceListUtil.sendPost(jsonObject.toString(),archiveUrl,zsjtoken); + System.out.println(res); + String str = SystemEnvironment.getApplicationFolder(); + String fileName = memberFile.get("field0007")+"_"+memberFile.get("field0070")+"_"+memberFile.get("field0013"); + FileUtils.writeStringToFile(new File(str+"/memberTBmaindata/" + fileName + ".json"), jsonObject.toString(), "UTF-8"); + } + System.out.println(tempCode); + return null; + } + + private String push(String request, ConfigVo configVo) { + return ""; + } + + public String getName() { + return "稻花香人员档案同步初始化"; + } + +} diff --git a/src/com/seeyon/apps/src_organizationInitialization/util/FormExportUtil.java b/src/com/seeyon/apps/src_organizationInitialization/util/FormExportUtil.java new file mode 100644 index 0000000..b789944 --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/util/FormExportUtil.java @@ -0,0 +1,113 @@ +package com.seeyon.apps.src_organizationInitialization.util; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.v3x.services.form.bean.RecordExport; +import com.seeyon.v3x.services.form.bean.SubordinateFormExport; +import com.seeyon.v3x.services.form.bean.ValueExport; + +import java.util.*; + +//创建无流程表单数据处理工具类 +public class FormExportUtil { + + /** + * 设置主表信息 + * @param map 设置主表字段。Map<主表显示名称,主表数据> + * @return + */ + public List setFormValue(Map map){ +// 创建返回值对象 + List valueExports = new ArrayList(); + ValueExport valueExport ; +// 获取参数信息(显示名称) + Set keys = map.keySet(); + if(keys.size()>0) { +// 对控件赋值 + for (String key : keys) { + valueExport = new ValueExport(); + valueExport.setDisplayName(key); + valueExport.setValue(map.get(key)); + valueExports.add(valueExport); + } + } + return valueExports; + } + + /** + * 设置从表信息 + * @param lists 设置主表字段。List> + */ + public List setSubordinateFormValue(List> lists){ + List subordinateFormExports = new ArrayList(); + SubordinateFormExport subordinateFormExport = new SubordinateFormExport(); + List recordExports = new ArrayList(); + List valueExports; + RecordExport recordExport; + for(int i = 0 ; i < lists.size() ; i++) { + recordExport = new RecordExport(); + valueExports = setFormValue(lists.get(i)); + recordExport.setRecord(valueExports); + recordExports.add(recordExport); + } + subordinateFormExport.setValues(recordExports); + subordinateFormExports.add(subordinateFormExport); + + return subordinateFormExports; + } + + + /** + * 格式转换将{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"},{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"}] + 有什么办法转换成 + [{"id":1,"data":[{"id":1,"str1":"123","str2":"asd","str3":"qwe"},{"id":1,"str1":"123","str2":"asd","str3":"qwe"}]}{"id":2,"data":[{"id":2,"str1":"123","str2":"asd","str3":"qwe"},{"id":2,"str1":"123","str2":"asd","str3":"qwe"}]}{"id":3,"data":[{"id":3,"str1":"123","str2":"asd","str3":"qwe"},{"id":3,"str1":"123","str2":"asd","str3":"qwe"}]}] + * @param inputList + * @return + */ + public List> transformData(JSONArray inputList) { + Map>> groupedData = new HashMap<>(); + for(int i = 0 ; i < inputList.size();i++) { + String userId = inputList.getJSONObject(i).getString("userId"); + + groupedData.computeIfAbsent(userId, k -> new ArrayList<>()).add(inputList.getJSONObject(i)); + } + + List> result = new ArrayList<>(); + + for (Map.Entry>> entry : groupedData.entrySet()) { + Map resultMap = new HashMap<>(); + resultMap.put("userId", entry.getKey()); + resultMap.put("data", entry.getValue()); + result.add(resultMap); + } + + return result; + } + + public JSONObject setParamFields(String showValue,String name,String value){ + JSONObject res = new JSONObject(); + res.put("showValue",showValue); + res.put("name",name); + res.put("value",value); + return res; + } + + public JSONArray dingdingTimeSequence (JSONArray datas){ + + for (int i = 0; i < datas.size() - 1; i++) { + for (int j = 0; j < datas.size() - i - 1; j++) { + String value1 = datas.getJSONObject(j).getString("baseCheckTime"); + String value2 = datas.getJSONObject(j + 1).getString("baseCheckTime"); + long long1 = Long.parseLong(value1); + long long2 = Long.parseLong(value2); + if (long1 > long2) { + JSONObject temp = datas.getJSONObject(j); + datas.set(j, datas.getJSONObject(j + 1)); + datas.set(j + 1, temp); + } + } + } + return datas; + } + +} diff --git a/src/com/seeyon/apps/src_organizationInitialization/util/InterfaceListUtil.java b/src/com/seeyon/apps/src_organizationInitialization/util/InterfaceListUtil.java new file mode 100644 index 0000000..3b925ca --- /dev/null +++ b/src/com/seeyon/apps/src_organizationInitialization/util/InterfaceListUtil.java @@ -0,0 +1,467 @@ +package com.seeyon.apps.src_organizationInitialization.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.Header; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.StringRequestEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.springframework.core.io.support.PropertiesLoaderUtils; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Files; +import java.text.MessageFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * 接口调用工具类 + * 2021-06-08 + * @author huangzhengguo + * + */ +public class InterfaceListUtil { + + /** + * 获取一个token + * + * @param restUserName rest用户名 + * @param restPassword rest密码 + * @return + * @throws IOException -2972027246288615821 + * @throws FileNotFoundException + */ + public String getToken(String url,String restUserName,String restPassword,String loginName) throws FileNotFoundException, IOException { + String address = ""; + String token = ""; + if("".equals(loginName)) { + address = url+"/"+restUserName+"/"+restPassword; + }else { + address = url+"/"+restUserName+"/"+restPassword+"?loginName="+loginName; + } + HttpURLConnection connection = (HttpURLConnection) new URL(address).openConnection(); + connection.setRequestMethod("GET"); + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + String result = response.toString(); + if(result.contains("{")) { + JSONObject jsObj = JSONObject.parseObject(result); + System.out.println(jsObj); + token = jsObj.get("id").toString(); + }else { + token = result; + } + System.out.println(token); + } else { + System.out.println("GET request not worked"); + } + return token; + } + + /** + * 调用get接口 + * + * @param par 拼接在url中的参数 + * @param strUrl 需要调用的url对应的配置文件的key + * @return + */ + public String doGet(String par, String strUrl, String token) { + String address = MessageFormat.format(getProperties(strUrl), par + "?token=") + token; + + DefaultHttpClient client = new DefaultHttpClient(); + String result = ""; + HttpGet get = new HttpGet(address); + try { + HttpResponse res = client.execute(get); + if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + result = EntityUtils.toString(res.getEntity()); + } + } catch (Exception e) { + throw new RuntimeException(e); + } +// JSONObject jsObj = JSONObject.parseObject(result); + return result; + + } + + /** + * 调用post接口 + * + * @param str 调用接口传递的参数json + * @param urlStr 需要调用的url对应的参数文件中的编码 + * @return + */ + public JSONObject doPost(String str, String urlStr, String token) { + HttpURLConnection connection = null; + InputStream is = null; + OutputStream os = null; + BufferedReader br = null; + String result = null; + try { +// String token = getToken(getProperties("restUserName"), getProperties("restPassword")); + URL url = new URL(urlStr + "?token=" + token); + // 通过远程url连接对象打开连接 + connection = (HttpURLConnection) url.openConnection(); + // 设置连接请求方式 + connection.setRequestMethod("POST"); + // 设置连接主机服务器超时时间:15000毫秒 + connection.setConnectTimeout(15000); + // 设置读取主机服务器返回数据超时时间:60000毫秒 + connection.setReadTimeout(60000); + + // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true + connection.setDoOutput(true); + // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无 + connection.setDoInput(true); + // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。 + connection.setRequestProperty("Content-Type", "application/json"); + // 通过连接对象获取一个输出流 + os = connection.getOutputStream(); + // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 + if (!("".equals(str) || str == null)) { + os.write(str.getBytes("UTF-8")); + } + // 连接对象获取一个输入流,向远程读取 + if (connection.getResponseCode() == 200) { + + is = connection.getInputStream(); + // 对输入流对象进行包装:charset根据工作项目组的要求来设置 + br = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + StringBuffer sbf = new StringBuffer(); + String temp = null; + // 循环遍历一行一行读取数据 + while ((temp = br.readLine()) != null) { + sbf.append(temp); + sbf.append("\r\n"); + } + result = sbf.toString(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != os) { + try { + os.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != is) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + // 断开与远程地址url的连接 + connection.disconnect(); + } + JSONObject json = JSONObject.parseObject(result); + return json; + + } + + public JSONObject sendPost(String str, String urlStr, String token) throws Exception{ + + Map jb=new HashMap(); + try { + CloseableHttpClient httpClient = HttpClients.createDefault(); + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(300000) + .setConnectTimeout(300000) + .build(); + HttpPost post = new HttpPost(urlStr+ "?token=" + token); + post.setConfig(requestConfig); + post.setHeader("Content-Type","application/json;charset=utf-8"); + StringEntity postString = new StringEntity(str,"utf-8"); + post.setEntity(postString); + HttpResponse response = httpClient.execute(post); + String content = EntityUtils.toString(response.getEntity()); + JSONObject json = JSONObject.parseObject(content); + return json; + } catch (Exception e) { +// log.error("调用DataService接口失败,url:" + urlStr + ",参数:" + str); + System.err.print("调用DataService接口失败,url:" + urlStr + ",参数:" + str); + + } + return null; + } + + + + /** + * 获取指定参数文件的值(pa.properties) + * + * @param str 参数文件中的key + * @return + */ + public String getProperties(String str) { + Properties properties = null; + try { + properties = PropertiesLoaderUtils.loadAllProperties("pa.properties"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return (String) properties.get(str); + } + + /** + * 调用Soap接口 对接平台使用 + * @param action 平台接口中的方法参数名称 + * @param xml 传递平台的XML数据参数 + * @return 返回调取soap接口后接口的返回值(未处理) + * @throws HttpException + * @throws IOException + */ + public String doSoap(String action, String xml,String id) throws HttpException, IOException { + String wsdl = ""; + if("createDepartment".equals(action)||"updateDepartment".equals(action)) { + wsdl = getProperties("DeptWsdl"); + }else if("createPractitioner".equals(action)||"updatePractitioner".equals(action)) { + wsdl = getProperties("MemberWsdl"); + } + System.out.println("wsdl:"+wsdl); + int timeout = 10000; + + // 构造soap请求信息 + StringBuffer sb = new StringBuffer(""); + sb.append( + ""); + sb.append(""); + sb.append(""); + sb.append(" "); + sb.append("" + action + "" + xml + ""); + sb.append(""); + sb.append(""); + sb.append(""); + + // HttpClient发送SOAP请求 +// System.out.println("HttpClient 发送SOAP请求"); + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(wsdl); + Header header = new Header(); + // 设置连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); + // 设置读取时间超时 + client.getHttpConnectionManager().getParams().setSoTimeout(timeout); + // 然后把Soap请求数据添加到PostMethod中 + RequestEntity requestEntity = null; + try { + requestEntity = new StringRequestEntity(sb.toString(), "text/xml", "UTF-8"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + // 设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date businessTime = new Date(); + Date operationTime = new Date(); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss"); + Date root = new Date(); + String rootId = sdf1.format(root); + postMethod.setRequestHeader("SOAPAction", ""); + postMethod.setRequestHeader("Content-Type", "application/fhir+json"); + postMethod.setRequestHeader("rootId", rootId); + postMethod.setRequestHeader("token", id); + postMethod.setRequestHeader("domain", "OA"); + postMethod.setRequestHeader("businessTime", sdf.format(businessTime)); + postMethod.setRequestHeader("key", "806c1571-35de-41a2-b3c9-06ae5474d43a"); + postMethod.setRequestHeader("operationTime", sdf.format(operationTime)); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + // 打印请求状态码 +// System.out.println("status:" + status); + // 获取响应体输入流 + InputStream is = postMethod.getResponseBodyAsStream(); + // 获取请求结果字符串 + byte[] bytes = new byte[is.available()]; + is.read(bytes); + String result = new String(bytes); + + return result; + } + + /** + * 下载文件到指定目录 + * @param dowUrl:http地址 + * @param dowPath:指定目录 + * */ + public String download(String dowUrl, String dowPath){ + try { +// log.info("下载地址是:"+dowUrl+",存储地址是:"+dowPath); + URL url = new URL(dowUrl); + + URLConnection urlConnection = url.openConnection(); + + HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;// http的连接类 + + //String contentType = httpURLConnection.getContentType();//请求类型,可用来过滤请求, + + httpURLConnection.setConnectTimeout(1000*5);//设置超时 + + httpURLConnection.setRequestMethod("GET");//设置请求方式,默认是GET + + httpURLConnection.setRequestProperty("Charset", "UTF-8");// 设置字符编码 + + httpURLConnection.connect();// 打开连接 + + BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream()); + + String path = dowPath;// 指定存放位置 + File filed = new File(path); + String mergePdfPath = dowPath ; + String[] paths = mergePdfPath.split("/"); + String mpath = ""; + for(int i = 0 ; i