2025-05-06 稻花香集团集成主数据平台平台组织架构创建

This commit is contained in:
2025-05-06 22:20:28 +08:00
parent 66d08fab8b
commit 6e021119c0
116 changed files with 9663 additions and 86 deletions

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>src_dhxbacklog</id>
<name>稻花香流程平台流程待办集成</name>
<category>20241231</category>
</plugin>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean name="/dhxFlowWaitHandlesso.do" class="com.seeyon.apps.src_dhxbacklog.sso.DhxFlowWaitHandlesso" />
</beans>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="dhxBacklogPluginApi" class="com.seeyon.apps.src_dhxbacklog.DhxBacklogPluginApi" />
</beans>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>src_dhxorganization</id>
<name>集团对接主数据平台</name>
<category>20241223</category>
</plugin>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="updateHireFilesNode" class="com.seeyon.apps.src_dhxorganization.archive.node.UpdateHireFilesNode" />
</beans>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="dhxPluginApi" class="com.seeyon.apps.src_dhxorganization.DhxPluginApi" />
</beans>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>src_mainorganization</id>
<name>稻花香主数据同步</name>
<category>20250418</category>
</plugin>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="srcEnumDao" class="com.seeyon.apps.src_mainorganization.dao.impl.SrcEnumDaoImpl"></bean>
<bean id="srcMemberDao" class="com.seeyon.apps.src_mainorganization.dao.impl.SrcMemberDaoImpl"></bean>
</beans>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<!-- 扫描包以发现bean-->
<bean id="receiveOrgMemberService" class="com.seeyon.apps.src_mainorganization.service.impl.ReceiveOrgMemberServiceImpl"></bean>
</beans>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>src_membermanage</id>
<name>主数据平台人员集成管理</name>
<category>20250310</category>
</plugin>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="memberManagePluginApi" class="com.seeyon.apps.src_membermanage.MemberManagePluginApi" />
</beans>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="memberBasicsNode" class="com.seeyon.apps.src_membermanage.node.MemberBasicsNode" />
<bean id="memberBasicsOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberBasicsOrganizationNode" />
<bean id="memberContractNode" class="com.seeyon.apps.src_membermanage.node.MemberContractNode" />
<bean id="memberDecruitmentNode" class="com.seeyon.apps.src_membermanage.node.MemberDecruitmentNode" />
<bean id="memberDecruitmentOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberDecruitmentOrganizationNode" />
<bean id="memberDimissionNode" class="com.seeyon.apps.src_membermanage.node.MemberDimissionNode" />
<bean id="memberDimissionOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberDimissionOrganizationNode" />
<bean id="memberDimissionTalentsNode" class="com.seeyon.apps.src_membermanage.node.MemberDimissionTalentsNode" />
<bean id="memberEducationNode" class="com.seeyon.apps.src_membermanage.node.MemberEducationNode" />
<bean id="memberEmployNode" class="com.seeyon.apps.src_membermanage.node.MemberEmployNode" />
<bean id="memberEntryNode" class="com.seeyon.apps.src_membermanage.node.MemberEntryNode" />
<bean id="memberEntryTalentsNode" class="com.seeyon.apps.src_membermanage.node.MemberEntryTalentsNode" />
<bean id="memberEntryOrganizationNodeode" class="com.seeyon.apps.src_membermanage.node.MemberEntryOrganizationNode" />
<bean id="memberFamilyNode" class="com.seeyon.apps.src_membermanage.node.MemberFamilyNode" />
<bean id="memberHonorNode" class="com.seeyon.apps.src_membermanage.node.MemberHonorNode" />
<bean id="memberMoveNode" class="com.seeyon.apps.src_membermanage.node.MemberMoveNode" />
<bean id="memberMoveOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberMoveOrganizationNode" />
<bean id="memberRegularizationNode" class="com.seeyon.apps.src_membermanage.node.MemberRegularizationNode" />
<bean id="memberRegularizationExtendNode" class="com.seeyon.apps.src_membermanage.node.MemberRegularizationExtendNode" />
<bean id="memberPerformanceNode" class="com.seeyon.apps.src_membermanage.node.MemberPerformanceNode" />
<bean id="memberRewardPunishmentNode" class="com.seeyon.apps.src_membermanage.node.MemberRewardPunishmentNode" />
<bean id="membersMoveNode" class="com.seeyon.apps.src_membermanage.node.MembersMoveNode" />
<bean id="membersMoveOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MembersMoveOrganizationNode" />
<bean id="memberWorkNode" class="com.seeyon.apps.src_membermanage.node.MemberWorkNode" />
<bean id="registrationofApplicantsNode" class="com.seeyon.apps.src_membermanage.node.RegistrationofApplicantsNode" />
<bean id="trainingRecordNode" class="com.seeyon.apps.src_membermanage.node.TrainingRecordNode" />
<bean id="memberTryOutSummarizeNode" class="com.seeyon.apps.src_membermanage.node.MemberTryOutSummarizeNode" />
<bean id="memberTaskFinishNode" class="com.seeyon.apps.src_membermanage.node.MemberTaskFinishNode" />
<bean id="memberInterviewResultNode" class="com.seeyon.apps.src_membermanage.node.MemberInterviewResultNode" />
<bean id="memberAnewEngageNode" class="com.seeyon.apps.src_membermanage.node.MemberAnewEngageNode" />
<bean id="memberAnewEngageOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberAnewEngageOrganizationNode" />
<bean id="memberAccountClosureNode" class="com.seeyon.apps.src_membermanage.node.MemberAccountClosureNode" />
<bean id="memberAccountClosureOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberAccountClosureOrganizationNode" />
<bean id="memberAccountClosureTalentsNode" class="com.seeyon.apps.src_membermanage.node.MemberAccountClosureTalentsNode" />
<bean id="memberSystemAccountClosureNode" class="com.seeyon.apps.src_membermanage.node.MemberSystemAccountClosureNode" />
<bean id="memberSystemAccountClosureOrganizationNode" class="com.seeyon.apps.src_membermanage.node.MemberSystemAccountClosureOrganizationNode" />
<bean id="memberSystemAccountClosureTalentsNode" class="com.seeyon.apps.src_membermanage.node.MemberSystemAccountClosureTalentsNode" />
<bean id="accountOpeningNode" class="com.seeyon.apps.src_membermanage.node.AccountOpeningNode" />
<bean id="accountOpeningOrganizationNode" class="com.seeyon.apps.src_membermanage.node.AccountOpeningOrganizationNode" />
</beans>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>src_organizationInitialization</id>
<name>稻花香人员档案初始化</name>
<category>20241126</category>
</plugin>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="organizationInitializationDao" class="com.seeyon.apps.src_organizationInitialization.dao.impl.OrganizationInitializationDaoImpl" />
</beans>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="organizationInitializationQuartz" class="com.seeyon.apps.src_organizationInitialization.quartz.OrganizationInitializationQuartz" />
</beans>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="organizationInitializationPluginApi" class="com.seeyon.apps.src_organizationInitialization.OrganizationInitializationPluginApi" />
</beans>

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,7 +1,5 @@
package com.seeyon.apps.qrCodeForm.constant;
import com.seeyon.ctp.common.AppContext;
public class Constants {
//模拟移动端登录认证方式

View File

@@ -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;

View File

@@ -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;

View File

@@ -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("--进入企业微信回调接口!");

View File

@@ -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;

View File

@@ -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", "集团组织架构同步管理");
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<String, String> 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<String> 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();
}
}

View File

@@ -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", "资产管理待办推送");
// }
}

View File

@@ -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();
}

View File

@@ -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 "员工录用审批保存人才库信息";
}
}

View File

@@ -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;
}
}

View File

@@ -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();
}

View File

@@ -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 {
}
}

View File

@@ -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;
/**
* 功能描述:<br>
* <pre>
*
* </pre>
*
* @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 = "";
}
}

View File

@@ -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 "";
}
}

View File

@@ -0,0 +1,76 @@
package com.seeyon.apps.src_dhxorganization.vo;
import com.alibaba.fastjson.JSONObject;
/**
* 功能描述:<br>
* <pre>
*
* </pre>
*
* @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;
}
}

View File

@@ -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;
/**

View File

@@ -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{

View File

@@ -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<String,Object> getdeptByPathName(String path,String name)throws BusinessException, SQLException;
public Map<String,Object> getdeptByPathName(String path,String name)throws BusinessException, SQLException, BusinessException;
/**
* 查询部门对照表中所有的部门信息

View File

@@ -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;

View File

@@ -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;
/**
* 自动计算任务

View File

@@ -122,6 +122,6 @@ public class DingtalkUtil {
}
JSONObject json = JSONObject.parseObject(result);
return json;
}
}

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -0,0 +1,7 @@
package com.seeyon.apps.src_mainorganization.dao;
public interface ISrcMemberDao {
public String getMemberMaxSortId();
}

View File

@@ -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<Object> p = new ArrayList();
p.add(extAttrName);
agent.execute(sql.toString(), p);
List<Map> 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<Object> p = new ArrayList();
p.add(refEnumId);
p.add(enumValue);
agent.execute(sql.toString(), p);
List<Map> 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;
}
}

View File

@@ -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<Object> p = new ArrayList();
agent.execute(sql.toString(), p);
List<Map> 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;
}
}

View File

@@ -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;
}

View File

@@ -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<OrganizationMessage.OrgMessage> 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<MemberPost> memberPosts = new ArrayList<MemberPost>();
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<OrganizationMessage.OrgMessage> 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<String, Object> 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<String> 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;
}
}

View File

@@ -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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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();
}

View File

@@ -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;
}
}

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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 "账号开启新增档案表超级节点";
}
}

View File

@@ -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 "账号开启新增组织架构超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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<String, List<FormDataVo>> subFormDataVoMap = formDataVo.getSubFormMap();
String subTableName = req.getString("subTableName");
List<FormDataVo> 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;
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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 "人员退休返聘修改档案表超级节点";
}
}

View File

@@ -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 "人员退休返聘修改组织架构超级节点";
}
}

View File

@@ -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 "人员基础信息修改档案表超级节点";
}
}

View File

@@ -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 "人员基础信息修改组织架构超级节点";}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<Long> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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 "人员解聘超级节点";
}
}

View File

@@ -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 "人员解聘组织架构超级节点";}
}

View File

@@ -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 "人员离职档案表超级节点";
}
}

View File

@@ -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 "人员离职组织架构超级节点";}
}

View File

@@ -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 "人员离职人才库档案表超级节点";
}
}

View File

@@ -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 "人员教育经历档案表超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> subFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>) 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<String, String> failedData = (Map<String, String>) resData.get("failedData");
for (Map.Entry<String, String> entry : failedData.entrySet()) {
context.back("档案表修改失败:创建异常:" + entry.getValue());
context.setErrMsg(mmr.getMsg());
formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:" + entry.getValue());
}
}
}
}else{
context.success("没有查询到需要修改的数据,跳过处理");
formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,跳过处理");
}
}
return context;
}
}

View File

@@ -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 "人员入职档案表超级节点";
}
}

View File

@@ -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 "人员入职组织架构超级节点";}
}

View File

@@ -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 "人员入职人才库档案表超级节点";
}
}

View File

@@ -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 "人员家庭情况档案表超级节点";
}
}

View File

@@ -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 "人员荣誉档案表超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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 "人员调动超级节点";
}
}

View File

@@ -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 "人员调动组织架构超级节点";}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<Long> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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 "人员转正延长档案表超级节点";
}
}

View File

@@ -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 "人员转正档案表超级节点";
}
}

View File

@@ -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 "人员奖惩记录档案表超级节点";
}
}

View File

@@ -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 "人员系统账号批量关闭修改档案表超级节点";
}
}

View File

@@ -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 "人员系统账号批量关闭修改组织架构超级节点";
}
}

View File

@@ -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 "人员系统账号批量关闭修改人才库超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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 "人员试用期工作总结超级节点";
}
}

View File

@@ -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 "人员工作经历档案表超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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<String, List<FormDataVo>> subFormDataVoMap = formDataVo.getSubFormMap();
String subTableName = req.getString("subTableName");
List<FormDataVo> 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;
}
}

View File

@@ -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 "应聘人员登记档案表超级节点";
}
}

View File

@@ -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<String, List<FormDataVo>> SubFormMap = formDataVo.getSubFormMap();
List<FormDataVo> 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<String, Object> 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<String, Object> 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<String, Object> 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<String,Object> resData = DataProcessingUtil.convertStringToMap(resDatastr);
List<String> successIdList = (List<String>)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<String, String> failedData = (Map<String, String>)resData.get("failedData");
for (Map.Entry<String, String> 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;
}
}

View File

@@ -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<String, Object> convertStringToMap(String input) {
Map<String, Object> 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<String> 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<String, String> 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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<String, List<FormDataVo>> 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<FormDataVo> 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<String, List<FormDataVo>> 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<FormDataVo> 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<String, Object> 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<Long> 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;
}
}

Some files were not shown because too many files have changed in this diff Show More