From c448007ccd61521485ff30f9003dc2084ab975c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=AD=A3=E5=9B=BD?= <438926402@qq.com> Date: Thu, 31 Jul 2025 17:42:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=BB=E8=8A=B1=E9=A6=99=E4=B8=BB=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/spring-node.xml | 4 + .../src_membermanage/spring/spring-node.xml | 1 + .../sso/DhxFlowWaitHandlesso.java | 21 +- .../node/DepartmentCloseNode.java | 2 +- .../node/LevelAddNode.java | 154 +++++++++++++ .../node/LevelCloseNode.java | 136 +++++++++++ .../node/PostAddNode.java | 147 ++++++++++++ .../node/PostCloseNode.java | 136 +++++++++++ .../MemberOrganizationCommonNode.java | 3 - .../src_membermanage/node/MemberWorkNode.java | 2 +- .../node/MemberYearTaskNode.java | 211 ++++++++++++++++++ .../apps/src_qyba/dao/ISrcBeianDao.java | 2 +- .../apps/src_qyba/dao/impl/SrcBeianDao.java | 5 +- .../impl/MultipleViewsPrintManagerImpl.java | 8 +- .../SaveAndUpdateMemberMainResource.java | 1 - ...TemporaryBeianSynchronizationResource.java | 11 +- 16 files changed, 816 insertions(+), 28 deletions(-) create mode 100644 src/com/seeyon/apps/src_mainorganization/node/LevelAddNode.java create mode 100644 src/com/seeyon/apps/src_mainorganization/node/LevelCloseNode.java create mode 100644 src/com/seeyon/apps/src_mainorganization/node/PostAddNode.java create mode 100644 src/com/seeyon/apps/src_mainorganization/node/PostCloseNode.java create mode 100644 src/com/seeyon/apps/src_membermanage/node/MemberYearTaskNode.java diff --git a/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-node.xml b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-node.xml index 1cb2962..54de1d4 100644 --- a/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-node.xml +++ b/seeyon/WEB-INF/cfgHome/src_mainorganization/spring/spring-node.xml @@ -3,4 +3,8 @@ + + + + \ No newline at end of file diff --git a/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml index 56978ab..6f30e2f 100644 --- a/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml +++ b/seeyon/WEB-INF/cfgHome/src_membermanage/spring/spring-node.xml @@ -43,5 +43,6 @@ + \ No newline at end of file diff --git a/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java b/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java index ea6d625..7fba90d 100644 --- a/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java +++ b/src/com/seeyon/apps/src_dhxbacklog/sso/DhxFlowWaitHandlesso.java @@ -36,18 +36,11 @@ public class DhxFlowWaitHandlesso extends BaseController { public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("123123123123123"); - ConfigVo configVo = getDhxBacklogConfig(); - ModelAndView mv = new ModelAndView(); + 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(); @@ -59,17 +52,13 @@ public class DhxFlowWaitHandlesso extends BaseController { 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())+ + 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())+ + 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); diff --git a/src/com/seeyon/apps/src_mainorganization/node/DepartmentCloseNode.java b/src/com/seeyon/apps/src_mainorganization/node/DepartmentCloseNode.java index 1ea3f12..d97a269 100644 --- a/src/com/seeyon/apps/src_mainorganization/node/DepartmentCloseNode.java +++ b/src/com/seeyon/apps/src_mainorganization/node/DepartmentCloseNode.java @@ -72,7 +72,7 @@ public class DepartmentCloseNode extends ACommonSuperNode { @Override public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { - log.info("进入部门新增处理流程"+getNodeId()); + log.info("进入部门停用处理流程"+getNodeId()); ConfigVo configVo = getMemberMamageConfig(); SuperNodeContext context = new SuperNodeContext(); context.setNeedSave(true); diff --git a/src/com/seeyon/apps/src_mainorganization/node/LevelAddNode.java b/src/com/seeyon/apps/src_mainorganization/node/LevelAddNode.java new file mode 100644 index 0000000..e59be9f --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/node/LevelAddNode.java @@ -0,0 +1,154 @@ +package com.seeyon.apps.src_mainorganization.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.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_mainorganization.constants.MainorganizationConstants; +import com.seeyon.apps.src_mainorganization.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgAccount; +import com.seeyon.ctp.organization.bo.V3xOrgLevel; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.UUIDLong; + +import javax.inject.Inject; +import java.util.List; + +public class LevelAddNode extends ACommonSuperNode { + + private static Log log = Log.get(LevelAddNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + + @Override + public String getPluginId() { + return MainorganizationConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] {WorkFlowType.superNode}; + } + + public ConfigVo getMainorganizationConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + @Override + public String getNodeId() { + return "LevelAddNode"; + } + + @Override + public String getNodeName() { + return "职务级别批量新增超级节点"; + } + +// { +// "data": "jsonArr::明细表1", +// "seeyonFormSon": { +// "明细表1": { +// "name": "职务级别名称", +// "orgAccountId": "所属单位", +// "code": "职务级别代码", +// "sortId": "职务级别序号" +// } +// } +// } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入职务级别批量新增处理流程"+getNodeId()); + ConfigVo configVo = getMainorganizationConfig(); +// 创建返回对象 + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + log.info("请求参数"+request); + JSONObject param = JSONObject.parseObject(request); +// 获取职务级别明细信息 + JSONArray datas = param.getJSONArray("data"); +// 记录新增返回值 + JSONArray requestJson = new JSONArray(); + String mainUrl = configVo.getParamVal(MainorganizationConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MainorganizationConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MainorganizationConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MainorganizationConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MainorganizationConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + String mainlevelsurl = mainUrl+"/seeyon/rest/orgLevel?token="+mainToken; + log.info("设置职务级别新增接口路径"+mainlevelsurl); + String ret = ""; +// 遍历明细表数据 + data:for (int i = 0 ; i < datas.size() ; i ++) { + JSONObject data = datas.getJSONObject(i); +// 获取需要新增的职务级别名称 + String levelName = data.getString("levelName"); +// 获取新增职务级别所在单位的控件名称 + long orgAccountId = data.getLongValue("orgAccountId"); +// 获取需要新增职务级别编码 + long levelCode = data.getLongValue("code"); +// 获取需要新增职务级别序号 + long levelSortId = data.getLongValue("sortId"); + V3xOrgAccount v3xOrgAccount = orgManager.getAccountById(orgAccountId); + List allLevels = orgManager.getAllLevels(orgAccountId); +// 遍历现存同名职务级别信息 + old:for(V3xOrgLevel level:allLevels){ + if(level.getName().equals(levelName)){ + ret = ret +levelName + "职务级别已经存在,跳过处理;"; + break data; + } + } +// 封装职务级别新增参数,新增职务级别信息 + JSONObject leveljson = new JSONObject(); + leveljson.put("name",levelName); + leveljson.put("description",""); + leveljson.put("orgAccountId",orgAccountId); + leveljson.put("enabled",true); + leveljson.put("id", UUIDLong.longUUID()); + leveljson.put("code",levelCode); + leveljson.put("sortId",levelSortId); + requestJson.add(leveljson); + JSONObject res = ProtUtil.doPost(leveljson.toString(),mainlevelsurl); + if(res==null){ + ret=ret+levelName+"职务级别添加返回为空;"; + }else{ + String success = res.getString("success"); + if("false".equals(success)){ + JSONArray errorMsgInfos = res.getJSONArray("errorMsgInfos"); + JSONObject errorMsgInfo = errorMsgInfos.getJSONObject(0); + String msgInfo = errorMsgInfo.getString("msgInfo"); + ret=ret+levelName+msgInfo+";"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + ret=ret+levelName+"添加成功;"; + } + } + } + context.success(requestJson.toString()); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + } + + +} diff --git a/src/com/seeyon/apps/src_mainorganization/node/LevelCloseNode.java b/src/com/seeyon/apps/src_mainorganization/node/LevelCloseNode.java new file mode 100644 index 0000000..b1b8ff1 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/node/LevelCloseNode.java @@ -0,0 +1,136 @@ +package com.seeyon.apps.src_mainorganization.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.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_mainorganization.constants.MainorganizationConstants; +import com.seeyon.apps.src_mainorganization.util.ProtUtil; +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgLevel; +import com.seeyon.ctp.organization.manager.OrgManager; + +import javax.inject.Inject; +import java.util.HashMap; + +public class LevelCloseNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberManageCommonNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + + @Override + public String getPluginId() { + return MainorganizationConstants.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 String getNodeId() { + return "LevelCloseNode"; + } + + @Override + public String getNodeName() { + return "职务级别批量停用超级节点"; + } + +// { +// "data": "jsonArr::明细表1", +// "seeyonFormSon": { +// "明细表1": { +// "levelId": "职务级别名称", +// "orgAccountId": "所属单位" +// } +// } +// } + + @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); + log.info("请求参数"+request); + JSONObject param = JSONObject.parseObject(request); + // 获取职务级别明细信息 + JSONArray datas = param.getJSONArray("data"); + // 记录新增返回值 + JSONArray requestJson = new JSONArray(); + String mainUrl = configVo.getParamVal(MainorganizationConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MainorganizationConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MainorganizationConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MainorganizationConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MainorganizationConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + String mainlevelsurl = mainUrl+"/seeyon/rest/orgLevel/{levelId}/enabled/false?token="+mainToken; + log.info("设置职务级别停用接口接口路径"+mainlevelsurl); + String ret = ""; +// 遍历明细表数据 + data:for (int i = 0 ; i < datas.size() ; i ++) { + JSONObject data = datas.getJSONObject(i); +// 获取需要新增的职务级别名称 + long levelId = data.getLongValue("levelId"); + V3xOrgLevel v3xOrgLevel = orgManager.getLevelById(levelId); +// 获取新增部门所在单位的控件名称 + long orgAccountId = data.getLongValue("orgAccountId"); + requestJson.add(v3xOrgLevel.getName()+levelId); + String enabledFalseUrl = mainlevelsurl.replace("{levelId}",levelId+""); +// 需要停用部门下不存在任何启动部门和人员执行停用接口 + String resstr = ProtUtil.httpPutRaw(enabledFalseUrl,"",new HashMap<>(),null); + JSONObject res = JSONObject.parseObject(resstr); + if(res==null){ + ret=ret+v3xOrgLevel.getName()+"部门停用返回为空;"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + String success = res.getString("success"); + if("false".equals(success)){ + JSONArray errorMsgInfos = res.getJSONArray("errorMsgInfos"); + JSONObject errorMsgInfo = errorMsgInfos.getJSONObject(0); + String msgInfo = errorMsgInfo.getString("msgInfo"); + ret=ret+v3xOrgLevel.getName()+msgInfo+";"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + ret=ret+v3xOrgLevel.getName()+"部门停用成功;"; + } + } + } + context.success(requestJson.toString()); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + } + +} diff --git a/src/com/seeyon/apps/src_mainorganization/node/PostAddNode.java b/src/com/seeyon/apps/src_mainorganization/node/PostAddNode.java new file mode 100644 index 0000000..3c18624 --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/node/PostAddNode.java @@ -0,0 +1,147 @@ +package com.seeyon.apps.src_mainorganization.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.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_mainorganization.constants.MainorganizationConstants; +import com.seeyon.apps.src_mainorganization.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgAccount; +import com.seeyon.ctp.organization.bo.V3xOrgPost; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.UUIDLong; + +import javax.inject.Inject; +import java.util.List; + +/** + * 岗位批量新增超级节点 + */ +public class PostAddNode extends ACommonSuperNode { + + private static Log log = Log.get(PostAddNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + + @Override + public String getPluginId() {return MainorganizationConstants.getPluginId();} + + @Override + public String getFormParse() {return "json";} + + @Override + public WorkFlowType[] getTypes() {return new WorkFlowType[] {WorkFlowType.superNode};} + + public ConfigVo getMainorganizationConfig() {return cstConfigApi.getConfig(getPluginId());} + + @Override + public String getNodeId() { return "PostAddNode";} + + @Override + public String getNodeName() {return "岗位批量新增超级节点";} + +// { +// "data": "jsonArr::明细表1", +// "seeyonFormSon": { +// "明细表1": { +// "name": "岗位名称", +// "orgAccountId": "所属单位", +// "code": "岗位代码", +// "typeId": "岗位类别" +// } +// } +// } + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("进入岗位批量新增处理流程"+getNodeId()); + ConfigVo configVo = getMainorganizationConfig(); +// 创建返回对象 + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + log.info("请求参数"+request); + JSONObject param = JSONObject.parseObject(request); +// 获取岗位明细信息 + JSONArray datas = param.getJSONArray("data"); +// 记录新增返回值 + JSONArray requestJson = new JSONArray(); + String mainUrl = configVo.getParamVal(MainorganizationConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MainorganizationConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MainorganizationConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MainorganizationConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MainorganizationConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + String mainpostsurl = mainUrl+"/seeyon/rest/orgPost?token="+mainToken; + log.info("设置岗位新增接口路径"+mainpostsurl); + String ret = ""; +// 遍历明细表数据 + data:for (int i = 0 ; i < datas.size() ; i ++) { + JSONObject data = datas.getJSONObject(i); +// 获取需要新增的岗位名称 + String postName = data.getString("name"); +// 获取新增岗位所在单位的控件名称 + long orgAccountId = data.getLongValue("orgAccountId"); +// 获取需要新增的岗位代码 + String postCode = data.getString("code"); +// 获取需要新增的岗位类型,默认为1 + String postTypeId = data.getString("typeId"); + + V3xOrgAccount v3xOrgAccount = orgManager.getAccountById(orgAccountId); +// 根据岗位名称查询岗位名称和单位ID,查询岗位信息 + List allPosts = orgManager.getAllPosts(orgAccountId); +// 遍历现存同名岗位信息 + old:for(V3xOrgPost post:allPosts){ + if(post.getName().equals(postName)){ + ret = ret +postName + "岗位已经存在,跳过处理;"; + break data; + } + } +// 封装岗位新增参数,新增岗位信息 + JSONObject postjson = new JSONObject(); + postjson.put("name",postName); + postjson.put("code",postCode); + postjson.put("typeId",postTypeId); + postjson.put("description",""); + postjson.put("enabled",true); + postjson.put("id", UUIDLong.longUUID()); + postjson.put("orgAccountId",orgAccountId); + requestJson.add(postjson); + JSONObject res = ProtUtil.doPost(postjson.toString(),mainpostsurl); + if(res==null){ + ret=ret+postName+"岗位添加返回为空;"; + }else{ + String success = res.getString("success"); + if("false".equals(success)){ + JSONArray errorMsgInfos = res.getJSONArray("errorMsgInfos"); + JSONObject errorMsgInfo = errorMsgInfos.getJSONObject(0); + String msgInfo = errorMsgInfo.getString("msgInfo"); + ret=ret+postName+msgInfo+";"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + ret=ret+postName+"添加成功;"; + } + } + } + context.success(requestJson.toString()); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + } + + +} diff --git a/src/com/seeyon/apps/src_mainorganization/node/PostCloseNode.java b/src/com/seeyon/apps/src_mainorganization/node/PostCloseNode.java new file mode 100644 index 0000000..82b6a5f --- /dev/null +++ b/src/com/seeyon/apps/src_mainorganization/node/PostCloseNode.java @@ -0,0 +1,136 @@ +package com.seeyon.apps.src_mainorganization.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.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; +import com.seeyon.apps.src_mainorganization.constants.MainorganizationConstants; +import com.seeyon.apps.src_mainorganization.util.ProtUtil; +import com.seeyon.apps.src_membermanage.MemberManageCommonNode; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.organization.bo.V3xOrgPost; +import com.seeyon.ctp.organization.manager.OrgManager; + +import javax.inject.Inject; +import java.util.HashMap; + +public class PostCloseNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberManageCommonNode.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private OrgManager orgManager; + + @Override + public String getPluginId() { + return MainorganizationConstants.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 String getNodeId() { + return "PostCloseNode"; + } + + @Override + public String getNodeName() { + return "岗位批量停用超级节点"; + } + +// { +// "data": "jsonArr::明细表1", +// "seeyonFormSon": { +// "明细表1": { +// "postId": "岗位名称", +// "orgAccountId": "所属单位" +// } +// } +// } + + @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); + log.info("岗位批量停用请求参数"+request); + JSONObject param = JSONObject.parseObject(request); + // 获取岗位明细信息 + JSONArray datas = param.getJSONArray("data"); + // 记录停用返回值 + JSONArray requestJson = new JSONArray(); + String mainUrl = configVo.getParamVal(MainorganizationConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MainorganizationConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MainorganizationConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MainorganizationConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MainorganizationConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); + String mainpostsurl = mainUrl+"/seeyon/rest/orgPost/{postId}/enabled/false?token="+mainToken; + log.info("设置岗位接口接口路径"+mainpostsurl); + String ret = ""; +// 遍历明细表数据 + data:for (int i = 0 ; i < datas.size() ; i ++) { + JSONObject data = datas.getJSONObject(i); +// 获取需要停用的岗位名称 + long postId = data.getLongValue("postId"); + V3xOrgPost v3xOrgPost = orgManager.getPostById(postId); +// 获取新增岗位所在单位的控件名称 + long orgAccountId = data.getLongValue("orgAccountId"); + requestJson.add(v3xOrgPost.getName()+postId); + String enabledFalseUrl = mainpostsurl.replace("{postId}",postId+""); +// 需要停用岗位下不存在任何启动岗位和人员执行停用接口 + String resstr = ProtUtil.httpPutRaw(enabledFalseUrl,"",new HashMap<>(),null); + JSONObject res = JSONObject.parseObject(resstr); + if(res==null){ + ret=ret+v3xOrgPost.getName()+"岗位停用返回为空;"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + String success = res.getString("success"); + if("false".equals(success)){ + JSONArray errorMsgInfos = res.getJSONArray("errorMsgInfos"); + JSONObject errorMsgInfo = errorMsgInfos.getJSONObject(0); + String msgInfo = errorMsgInfo.getString("msgInfo"); + ret=ret+v3xOrgPost.getName()+msgInfo+";"; + context.back(ret); + context.setErrMsg(ret); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + }else{ + ret=ret+v3xOrgPost.getName()+"岗位停用成功;"; + } + } + } + context.success(requestJson.toString()); + context.setRequest(requestJson.toString()); + context.setResponse(ret); + return context; + } + +} diff --git a/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java b/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java index 01e01d0..4e7a010 100644 --- a/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java +++ b/src/com/seeyon/apps/src_membermanage/MemberOrganizationCommonNode.java @@ -114,7 +114,6 @@ public abstract class MemberOrganizationCommonNode extends ACommonSuperNode { // 查询当前人员是否存在 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()); // 判断当前人员是否存在 @@ -124,8 +123,6 @@ public abstract class MemberOrganizationCommonNode extends ACommonSuperNode { 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); diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java index aa3753e..0dc9c5d 100644 --- a/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java +++ b/src/com/seeyon/apps/src_membermanage/node/MemberWorkNode.java @@ -24,6 +24,6 @@ public class MemberWorkNode extends MemberManageCommonNode { @Override public String getNodeName() { - return "人员工作经历档案表超级节点"; + return "人员工作经历档案表超级节点"; } } diff --git a/src/com/seeyon/apps/src_membermanage/node/MemberYearTaskNode.java b/src/com/seeyon/apps/src_membermanage/node/MemberYearTaskNode.java new file mode 100644 index 0000000..d951cf2 --- /dev/null +++ b/src/com/seeyon/apps/src_membermanage/node/MemberYearTaskNode.java @@ -0,0 +1,211 @@ +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 MemberYearTaskNode extends ACommonSuperNode { + + private static Log log = Log.get(MemberYearTaskNode.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getNodeId() { + return "MemberYearTaskNode"; + } + + @Override + public String getNodeName() { + return "营销人员年度任务完成情况超级节点"; + } + + @Override + public String getPluginId() { + return MemberManageConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + public ConfigVo getMemberMamageConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + + @Override + public SuperNodeContext proceed(String request, FormDataVo formDataVo, FormDataMasterBean formDataMasterBean) throws Exception { + log.info("营销人员年度任务完成情况超级节点"+getNodeId()); + ConfigVo configVo = getMemberMamageConfig(); + SuperNodeContext context = new SuperNodeContext(); + context.setNeedSave(true); + JSONObject paramJson = JSONObject.parseObject(request); + String enumFields = paramJson.getString("enumFields"); + String mainUrl = configVo.getParamVal(MemberManageConstants.mainUrl.name()); + String getzsjTokenUrl = configVo.getParamVal(MemberManageConstants.getzsjTokenUrl.name()); + String restzsjUserName = configVo.getParamVal(MemberManageConstants.restzsjUserName.name()); + String restzsjPassword = configVo.getParamVal(MemberManageConstants.restzsjPassword.name()); + String zsjloginName = configVo.getParamVal(MemberManageConstants.zsjloginName.name()); +// 调用接口查询主数据token + String mainToken = ProtUtil.getToken(getzsjTokenUrl,restzsjUserName,restzsjPassword,zsjloginName); +// 获取当前表单数据 +// Map> SubFormMap = formDataVo.getSubFormMap(); + List subForms = formDataVo.getSubFormMap().get("明细表1"); + for (FormDataVo subFormDataVo : subForms) { +// 每一行就是一个变更数据封装封装修改的人员参数执行修改操作 +// 创建唯一值查询参数 + JSONObject isExistUpdateParam = new JSONObject(); + isExistUpdateParam.put("formCode",paramJson.getString("formCode")); + JSONObject uniqueness = new JSONObject(); + JSONObject uniquenessjson = paramJson.getJSONObject("uniqueness"); + for (Map.Entry entry:uniquenessjson.entrySet()) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData(entry.getValue().toString()); + uniqueness.put(entry.getKey(),fieldDataVo.getDbValue()); + } + isExistUpdateParam.put("uniqueness",uniqueness); +// 调用接口查询当前数据是否存在 + String isExistUpdateUrl = mainUrl+"/seeyon/rest/formTable/quart?token="+mainToken; + String formmainIdUpdate = ProtUtil.doGet(isExistUpdateUrl,isExistUpdateParam); + JSONObject formmainIdUpdatejson = JSONObject.parseObject(formmainIdUpdate); + JSONObject formmainIdUpdateData = formmainIdUpdatejson.getJSONObject("data"); + String formmainUpdate = formmainIdUpdateData.getString("id"); + if(StringUtil.isNotEmpty(formmainUpdate)){ +// 当前数据已经存在执行修改逻辑 + JSONObject param = new JSONObject(); +// 设置基本数据 + param.put("doTrigger",paramJson.getBooleanValue("doTrigger")); + param.put("formCode",paramJson.getString("formCode")); + param.put("loginName",paramJson.getString("loginName")); + param.put("rightId",paramJson.getString("rightIdUpdate")); + JSONArray dataList = new JSONArray(); + JSONObject data = new JSONObject(); + JSONObject paramDataList = paramJson.getJSONObject("dataList"); + JSONObject paramMasterTable = paramDataList.getJSONObject("masterTable"); + JSONObject masterTable = new JSONObject(); + masterTable.put("name",paramMasterTable.getString("name")); + JSONObject record = new JSONObject(); + record.put("id",formmainUpdate); +// 根据主表字段信息,设置主表参数 + JSONArray fields = new JSONArray(); + for (Map.Entry entry : paramMasterTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo ; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + fields.add(jsonObject); + } + record.put("fields",fields); + masterTable.put("record",record); + data.put("masterTable",masterTable); +// 根据明细表字段信息,设置明细表参数 + JSONArray subTables = new JSONArray(); + JSONArray paramSubTables = paramDataList.getJSONArray("subTables"); + for(int i = 0 ; i < paramSubTables.size();i++){ + JSONObject paramSubTable = paramSubTables.getJSONObject(i); + JSONObject subTable = new JSONObject(); + subTable.put("name",paramSubTable.getString("tableName")); + JSONArray subRecords = new JSONArray(); + JSONObject subRecord = new JSONObject(); + subRecord.put("id", UUIDLong.longUUID()+""); + JSONArray subFields = new JSONArray(); + for (Map.Entry entry : paramSubTable.getJSONObject("fields").entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name",entry.getKey()); + String value = entry.getValue().toString(); + FieldDataVo subFieldDataVo; + try { + subFieldDataVo = subFormDataVo.getFieldData(value); + } catch (NoSuchFieldException e) { + subFieldDataVo = formDataVo.getFieldData(value); + } + if(subFieldDataVo.getDbValue() == null){ + jsonObject.put("value",""); + }else{ + if(enumFields.contains(entry.getKey())){ + String subFieldDataDb = subFieldDataVo.getStringValue(); + jsonObject.put("showValue",subFieldDataDb); + }else{ + String subFieldDataDb = subFieldDataVo.getDbValue().toString(); + jsonObject.put("value",subFieldDataDb); + } + } + subFields.add(jsonObject); + } + subRecord.put("fields",subFields); + subRecords.add(subRecord); + subTable.put("records",subRecords); + subTables.add(subTable); + } + data.put("subTables",subTables); + + dataList.add(data); + param.put("dataList",dataList); + + context.setRequest(param.toString()); + log.info(param.toString()); +// 获取调用接口路径 + String formmainUpdateUrl = mainUrl+"/seeyon/rest/cap4/form/soap/batch-update?token="+mainToken; + context.setUrl(formmainUpdateUrl); + JSONObject res = ProtUtil.doPost(param.toString(),formmainUpdateUrl); + log.info(res.toString()); + context.setResponse(res.toString()); + MemberManagerResponse mmr = new MemberManagerResponse(res); + if(mmr.isSuccess()){ + String resDatastr = mmr.getData(); + Map resData = DataProcessingUtil.convertStringToMap(resDatastr); + List successIdList = (List)resData.get("successIdList"); + if(successIdList.size()>0){ + String fid = successIdList.get(0); + log.info("档案表修改完成,返回结果为"+resDatastr); + context.success("档案表修改完成,当前档案表ID为"+fid,false); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改完成,当前档案表ID为"+fid); + }else{ + Map failedData = (Map)resData.get("failedData"); + for (Map.Entry entry:failedData.entrySet()) { + context.back("档案表修改失败:创建异常:" + entry.getValue()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:创建异常:"+entry.getValue()); + } + } + + }else{ + context.back("档案表修改失败:修改异常:" + mmr.getMsg()); + context.setErrMsg(mmr.getMsg()); + formDataVo.getNewFieldDataMap().put("返回结果", "档案表修改失败:修改异常:"+mmr.getMsg()); + } + }else{ + context.success("没有查询到需要修改的数据,跳过处理"); + formDataVo.getNewFieldDataMap().put("返回结果", "没有查询到需要修改的数据,请检查唯一值是否正确"); + } + } + return context; + } +} diff --git a/src/com/seeyon/apps/src_qyba/dao/ISrcBeianDao.java b/src/com/seeyon/apps/src_qyba/dao/ISrcBeianDao.java index e7a7281..f2df613 100644 --- a/src/com/seeyon/apps/src_qyba/dao/ISrcBeianDao.java +++ b/src/com/seeyon/apps/src_qyba/dao/ISrcBeianDao.java @@ -4,6 +4,6 @@ import java.util.List; public interface ISrcBeianDao { - public List getdocResources(); + public List getdocResources(String parentFrId); } diff --git a/src/com/seeyon/apps/src_qyba/dao/impl/SrcBeianDao.java b/src/com/seeyon/apps/src_qyba/dao/impl/SrcBeianDao.java index 2a8a71e..1941ab9 100644 --- a/src/com/seeyon/apps/src_qyba/dao/impl/SrcBeianDao.java +++ b/src/com/seeyon/apps/src_qyba/dao/impl/SrcBeianDao.java @@ -11,15 +11,16 @@ import java.util.Map; public class SrcBeianDao implements ISrcBeianDao { - private String getdocResources = "select id from doc_resources where PARENT_FR_ID = '978222128757425825'"; + private String getdocResources = "select id from doc_resources where PARENT_FR_ID = ?"; @Override - public List getdocResources() { + public List getdocResources(String parentFrId) { List ret = new ArrayList<>(); JDBCAgent agent = new JDBCAgent(); try { StringBuilder sql = new StringBuilder(getdocResources); List p = new ArrayList(); + p.add(parentFrId); agent.execute(sql.toString(), p); List list = agent.resultSetToList(); for (Map map : list) { diff --git a/src/com/seeyon/apps/src_qyba/manage/impl/MultipleViewsPrintManagerImpl.java b/src/com/seeyon/apps/src_qyba/manage/impl/MultipleViewsPrintManagerImpl.java index 344ec19..1fbfdde 100644 --- a/src/com/seeyon/apps/src_qyba/manage/impl/MultipleViewsPrintManagerImpl.java +++ b/src/com/seeyon/apps/src_qyba/manage/impl/MultipleViewsPrintManagerImpl.java @@ -19,6 +19,8 @@ import com.seeyon.ctp.common.content.mainbody.MainbodyType; import com.seeyon.ctp.common.log.CtpLogFactory; import com.seeyon.ctp.common.po.affair.CtpAffair; import com.seeyon.ctp.common.po.content.CtpContentAll; +import com.seeyon.ctp.common.po.template.CtpTemplate; +import com.seeyon.ctp.common.template.manager.TemplateManager; import com.seeyon.ctp.util.ParamUtil; import com.seeyon.ctp.util.Strings; import com.seeyon.ctp.util.annotation.AjaxAccess; @@ -39,16 +41,20 @@ public class MultipleViewsPrintManagerImpl implements MultipleViewsPrintManager private ColManager colManager = (ColManager) AppContext.getBean("colManager"); private MainbodyManager ctpMainbodyManager = (MainbodyManager) AppContext.getBean("ctpMainbodyManager");; private static CAPFormManager capFormManager = (CAPFormManager) AppContext.getBean("capFormManager"); + private TemplateManager templateManager = (TemplateManager) AppContext.getBean("templateManager"); @AjaxAccess public Map print(Map params,List> approvalOpinions,String flowName) throws Exception { Map result = new HashMap(); result.put("success", true); Long formId = ParamUtil.getLong(params, "formId", null); + String templeteId = params.get("templeteId").toString(); Long affairId = ParamUtil.getLong(params, "affairId", null); Long summaryId = ParamUtil.getLong(params, "summaryId", null); String rightId = ParamUtil.getString(params, "rightId"); - FormBean formBean = formApi4Cap4.getForm(formId); +// FormBean formBean = formApi4Cap4.getForm(formId); + CtpTemplate templete = templateManager.getCtpTemplate(Long.parseLong(templeteId)); + FormBean formBean = formApi4Cap4.getFormByFormCode(templete); if (Strings.isNotBlank(rightId)) { // 适配这种格式(视图id.权限id_视图id.权限id_视图id.权限id) List formAuthViewBeans = new ArrayList<>(); diff --git a/src/com/seeyon/ctp/rest/resources/SaveAndUpdateMemberMainResource.java b/src/com/seeyon/ctp/rest/resources/SaveAndUpdateMemberMainResource.java index ef20fe3..de313f6 100644 --- a/src/com/seeyon/ctp/rest/resources/SaveAndUpdateMemberMainResource.java +++ b/src/com/seeyon/ctp/rest/resources/SaveAndUpdateMemberMainResource.java @@ -58,7 +58,6 @@ public class SaveAndUpdateMemberMainResource extends BaseResource { } } - @POST @Path("/updateMemberMain") @Produces({"application/json"}) diff --git a/src/com/seeyon/ctp/rest/resources/TemporaryBeianSynchronizationResource.java b/src/com/seeyon/ctp/rest/resources/TemporaryBeianSynchronizationResource.java index 2dc363b..09843f6 100644 --- a/src/com/seeyon/ctp/rest/resources/TemporaryBeianSynchronizationResource.java +++ b/src/com/seeyon/ctp/rest/resources/TemporaryBeianSynchronizationResource.java @@ -2,6 +2,7 @@ package com.seeyon.ctp.rest.resources; import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONObject; import com.seeyon.apps.collaboration.manager.ColManager; import com.seeyon.apps.collaboration.po.ColSummary; import com.seeyon.apps.doc.api.DocApi; @@ -99,15 +100,19 @@ public class TemporaryBeianSynchronizationResource extends BaseResource{ @Path("/synchronizationbeian") @Produces({"application/json"}) @Consumes({"application/json"}) - public Response synchronizationbeian(){ + public Response synchronizationbeian(JSONObject reqQarams){ try{ // 查询数据库,查询出来某个文件夹在的所有文档信息,遍历查询到的所有ID,调用方法查询出来本地文档中心对象 - List ids = getSrcBeianDao().getdocResources(); + String parentFrId = reqQarams.getString("parentFrId"); + log.info(parentFrId); + List ids = getSrcBeianDao().getdocResources(parentFrId); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List docResources = getDocApi().findDocResources(ids); + log.info(ids.toString()); for (int i = 0 ; i params = new HashMap(); params.put("formId", summary.getFormid()); + params.put("templeteId", summary.getTempleteId()); params.put("affairId", ctpAffair.getId()); params.put("rightId", rightId); params.put("summaryId", colSummarId);