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