hx create flow

ht
qijirenjian 1 month ago
parent b492390d67
commit aacec8fce8

@ -34,15 +34,15 @@ public class DataOperateUtil {
private DataSetService dataSetService; private DataSetService dataSetService;
public List<Long> getDetailFormId(String workflowId) { public List<Long> getDetailFormId(String workflowId) {
log.info("getDetailFormId start : " + workflowId ); log.error("getDetailFormId start : " + workflowId );
List<Long> formIdList = new ArrayList(); List<Long> formIdList = new ArrayList();
String sourceType = String.valueOf(SourceType.LOGIC); String sourceType = String.valueOf(SourceType.LOGIC);
String groupId = "weaver-basic-schedule-service"; String groupId = "weaver-basic-schedule-service";
try { try {
String sql = "select form_id from ecology10.dbo.form_table where form_id in (select id from ecology10.dbo.sub_form where form_id in (select relatekey from ecology10.dbo.wfp_relateform where workflowid = '"+workflowId+"'))"; String sql = "select form_id from ecology10.dbo.form_table where form_id in (select id from ecology10.dbo.sub_form where form_id in (select relatekey from ecology10.dbo.wfp_relateform where workflowid = '"+workflowId+"'))";
log.info("getDetailFormId sql-->" + sql); log.error("getDetailFormId sql-->" + sql);
Map<String, Object> datas = executeForQuery(sourceType, groupId, sql); Map<String, Object> datas = executeForQuery(sourceType, groupId, sql);
// log.info("getConfig datas-->" + datas); // log.error("getConfig datas-->" + datas);
if(String.valueOf(datas.get("status")).equals("OK")){ if(String.valueOf(datas.get("status")).equals("OK")){
List<Map<String,Object>> records = (List<Map<String,Object>>)datas.get("records"); List<Map<String,Object>> records = (List<Map<String,Object>>)datas.get("records");
for (int i = 0; i < records.size(); i++) { for (int i = 0; i < records.size(); i++) {
@ -67,9 +67,9 @@ public class DataOperateUtil {
String groupId = "weaver-ebuilder-form-service"; String groupId = "weaver-ebuilder-form-service";
try { try {
String sql = "select configvalue from ecology10.dbo.uf_config where configkey = '" + key + "' and zhkey = '"+tenantId+"'"; String sql = "select configvalue from ecology10.dbo.uf_config where configkey = '" + key + "' and zhkey = '"+tenantId+"'";
log.info("getConfig sql-->" + sql); // log.error("getConfig sql-->" + sql);
Map<String, Object> datas = executeForQuery(sourceType, groupId, sql); Map<String, Object> datas = executeForQuery(sourceType, groupId, sql);
log.info("getConfig datas-->" + datas); // log.error("getConfig datas-->" + datas);
if(String.valueOf(datas.get("status")).equals("OK")){ if(String.valueOf(datas.get("status")).equals("OK")){
List<Map<String,Object>> records = (List<Map<String,Object>>)datas.get("records"); List<Map<String,Object>> records = (List<Map<String,Object>>)datas.get("records");
Map<String, Object> map = records.get(0); Map<String, Object> map = records.get(0);
@ -84,15 +84,15 @@ public class DataOperateUtil {
} }
} }
public Map<String, Object> executeForQuery(String sourceType, String groupId, String sql) { public Map<String, Object> executeForQuery(String sourceType, String groupId, String sql) {
// log.info("executeForQuery sourceType-->" + sourceType + ",groupId-->" + groupId + ",sql-->" + sql); // log.error("executeForQuery sourceType-->" + sourceType + ",groupId-->" + groupId + ",sql-->" + sql);
TenantRpcContext.setTargetTenantKey("temkc46eme"); TenantRpcContext.setTargetTenantKey("temkc46eme");
ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity(); ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity();
executeSqlEntity.setSql(cn.hutool.core.codec.Base64.encode(sql)); executeSqlEntity.setSql(cn.hutool.core.codec.Base64.encode(sql));
executeSqlEntity.setGroupId(groupId); //groupid,可以访问 E10地址/api/datasource/ds/group?sourceType=LOGIC 获取 executeSqlEntity.setGroupId(groupId); //groupid,可以访问 E10地址/api/datasource/ds/group?sourceType=LOGIC 获取
executeSqlEntity.setSourceType(SourceType.valueOf(sourceType)); executeSqlEntity.setSourceType(SourceType.valueOf(sourceType));
// log.info("executeForQuery executeSqlEntity-->"+executeSqlEntity.getSql()+"-->"+executeSqlEntity.getGroupId()+"-->"+executeSqlEntity.getSourceType()); // log.error("executeForQuery executeSqlEntity-->"+executeSqlEntity.getSql()+"-->"+executeSqlEntity.getGroupId()+"-->"+executeSqlEntity.getSourceType());
Map<String, Object> datas = dataSetService.executeSql(executeSqlEntity); Map<String, Object> datas = dataSetService.executeSql(executeSqlEntity);
log.info("executeForQuery datas-->" + datas); log.error("executeForQuery datas-->" + datas);
TenantRpcContext.removeTargetTenantKey(); TenantRpcContext.removeTargetTenantKey();
return datas; return datas;
} }

@ -30,7 +30,7 @@ public class InterInfoAchieveUtil {
String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/oauth2/authorize?corpid=" + String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/oauth2/authorize?corpid=" +
corpid + "&response_type=" + response_type + "&state=" + state; corpid + "&response_type=" + response_type + "&state=" + state;
String body = HttpRequest.get(url).execute().body(); String body = HttpRequest.get(url).execute().body();
// log.info("getCode body-->" + body); // log.error("getCode body-->" + body);
return body; return body;
}catch (Exception e){ }catch (Exception e){
log.error("getCode error--> " + e); log.error("getCode error--> " + e);
@ -52,8 +52,8 @@ public class InterInfoAchieveUtil {
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
String params = "app_key="+app_key+"&app_secret="+app_secret+"&grant_type="+grant_type+"&code="+code; String params = "app_key="+app_key+"&app_secret="+app_secret+"&grant_type="+grant_type+"&code="+code;
String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/oauth2/access_token"; String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/oauth2/access_token";
log.info("getToken url--"+url); log.error("getToken url--"+url);
log.info("getToken params-->" + params); log.error("getToken params-->" + params);
RequestBody body = RequestBody.create(mediaType, params); RequestBody body = RequestBody.create(mediaType, params);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)

@ -31,22 +31,25 @@ public class DoCreateWorkflowService {
private InterInfoAchieveUtil interInfoAchieveUtil; private InterInfoAchieveUtil interInfoAchieveUtil;
public String doCreateWorkflowRequest(String creator,String tenantKey,String workflowId,String mainTable,String detailArray) throws IOException { public String doCreateWorkflowRequest(String creator,String tenantKey,String workflowId,String mainTable,String detailArray) throws IOException {
log.info("DoCreateWorkflowService start"); log.error("DoCreateWorkflowService start");
try { try {
List<Long> detailFormId = dataOperateUtil.getDetailFormId(workflowId); List<Long> detailFormId = dataOperateUtil.getDetailFormId(workflowId);
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("userid", Long.valueOf(creator)); param.put("userid", Long.valueOf(creator));
param.put("workflowId", Long.valueOf(workflowId)); param.put("workflowId", Long.valueOf(workflowId));
log.info("主表数据:" + mainTable); log.error("主表数据:" + mainTable);
//主表数据 json {"sqr":"sqr1","date":"date1","hrm:zrr":"zrr1"} //主表数据 json {"sqr":"sqr1","date":"date1","hrm:zrr":"zrr1"}
//字段名前面加 hrm:表示是人力资源字段 //字段名前面加 hrm:表示是人力资源字段
if (mainTable == null || mainTable.equals("")) { if (mainTable == null || mainTable.equals("")) {
return "主表数据不能为空"; JSONObject result = new JSONObject(true);
result.put("status","-4");
result.put("message","主表数据不能为空");
return result.toJSONString();
} }
JSONObject jsonObject = JSONObject.parseObject(mainTable); JSONObject jsonObject = JSONObject.parseObject(mainTable);
Map<String, Object> mainMap = jsonObject.toJavaObject(Map.class); Map<String, Object> mainMap = jsonObject.toJavaObject(Map.class);
log.info("主表集合:" + mainMap); log.error("主表集合:" + mainMap);
List<FormDataDuty> formDataDutyList = new ArrayList(); List<FormDataDuty> formDataDutyList = new ArrayList();
// 输出 Map 的内容 // 输出 Map 的内容
for (Map.Entry<String, Object> entry : mainMap.entrySet()) { for (Map.Entry<String, Object> entry : mainMap.entrySet()) {
@ -59,19 +62,19 @@ public class DoCreateWorkflowService {
formDataDutyList.add(formDataDuty); formDataDutyList.add(formDataDuty);
} }
log.info("detailArray--",detailArray); log.error("detailArray--"+detailArray);
JSONArray detailTables = JSONArray.parseArray(detailArray); JSONArray detailTables = JSONArray.parseArray(detailArray);
if(detailTables.size()>0){ if(detailTables.size()>0){
// 遍历外部 JSONArray // 遍历外部 JSONArray
for (int i = 0; i < detailTables.size(); i++) { for (int i = 0; i < detailTables.size(); i++) {
log.info("detailTables--"+detailTables.get(i)); log.error("detailTables--"+detailTables.get(i));
JSONObject detailInfo = JSONObject.parseObject(detailTables.get(i).toString()); // 获取内部的 JSONArray JSONObject detailInfo = JSONObject.parseObject(detailTables.get(i).toString()); // 获取内部的 JSONArray
log.info("detailInfo:"+detailInfo); log.error("detailInfo:"+detailInfo);
log.info("index:"+detailInfo.get("index")); log.error("index:"+detailInfo.get("index"));
log.info("detailFormId:"+detailFormId); log.error("detailFormId:"+detailFormId);
Long subFormId = detailFormId.get(Integer.parseInt(detailInfo.get("index").toString())-1); Long subFormId = detailFormId.get(Integer.parseInt(detailInfo.get("index").toString())-1);
log.info("明细表"+(i+1)+"form_id"+subFormId); log.error("明细表"+(i+1)+"form_id"+subFormId);
JSONArray innerArray = detailInfo.getJSONArray("data"); JSONArray innerArray = detailInfo.getJSONArray("data");
if(innerArray.size()>0){ if(innerArray.size()>0){
@ -84,7 +87,7 @@ public class DoCreateWorkflowService {
FormDataDuty formDataDuty = FormDataDuty.builder().build(); FormDataDuty formDataDuty = FormDataDuty.builder().build();
String value = jsonDetail.getString(key); String value = jsonDetail.getString(key);
if (!"".equals(key)) { if (!"".equals(key)) {
// log.info("明细表普通字段值:"+value); // log.error("明细表普通字段值:"+value);
if(StringUtils.isNotEmpty(value)){ if(StringUtils.isNotEmpty(value)){
formDataDuty.setDataKey(key); formDataDuty.setDataKey(key);
formDataDuty.setDataIndex((long) (j + 1)); formDataDuty.setDataIndex((long) (j + 1));
@ -92,7 +95,7 @@ public class DoCreateWorkflowService {
//目前写死 后续在找方法 //目前写死 后续在找方法
formDataDuty.setSubFormId(subFormId); formDataDuty.setSubFormId(subFormId);
}else{ }else{
// log.info("明细表普通字段值为空"); // log.error("明细表普通字段值为空");
} }
formDataDutyList.add(formDataDuty); formDataDutyList.add(formDataDuty);
} }
@ -104,49 +107,78 @@ public class DoCreateWorkflowService {
} }
log.info("formDataDutyList数据"+formDataDutyList.size()+"-"+formDataDutyList); log.error("formDataDutyList数据"+formDataDutyList.size()+"-"+formDataDutyList);
} }
if(CollectionUtils.isNotEmpty(formDataDutyList)) { if(CollectionUtils.isNotEmpty(formDataDutyList)) {
JSONObject fromDataByDataDetails = dataOperateUtil.getFromDataByDataDetails(formDataDutyList); JSONObject fromDataByDataDetails = dataOperateUtil.getFromDataByDataDetails(formDataDutyList);
log.info("formDataDutyList数据"+fromDataByDataDetails); log.error("formDataDutyList数据"+fromDataByDataDetails);
param.put("formData", fromDataByDataDetails); param.put("formData", fromDataByDataDetails);
} }
String code = JSONObject.parseObject(interInfoAchieveUtil.getCode(tenantKey)).getString("code"); String code = JSONObject.parseObject(interInfoAchieveUtil.getCode(tenantKey)).getString("code");
String token = JSONObject.parseObject(interInfoAchieveUtil.getToken(code,tenantKey)).getString("accessToken"); String token = JSONObject.parseObject(interInfoAchieveUtil.getToken(code,tenantKey)).getString("accessToken");
String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/api/workflow/core/paService/v1/doCreateRequest?access_token=" + token; String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/api/workflow/core/paService/v1/doCreateRequest?access_token=" + token;
log.info("url : " + url); log.error("url : " + url);
JSONObject otherParams =new JSONObject(); JSONObject otherParams =new JSONObject();
otherParams.put("isnextflow",1); otherParams.put("isnextflow",1);
param.put("otherParams",otherParams); param.put("otherParams",otherParams);
log.info("表单json:"+param.toJSONString()); log.error("表单json:"+param.toJSONString());
// 远程调用创建流程。 // 远程调用创建流程。
String response = HttpUtil.post(url, param.toJSONString()); String response = HttpUtil.post(url, param.toJSONString());
log.info("自动创建流程结果:"+response); log.error("自动创建流程结果:"+response);
JSONObject responseObj = JSONObject.parseObject(response); JSONObject responseObj = JSONObject.parseObject(response);
Object message = responseObj.get("message"); Object message = responseObj.get("message");
JSONObject messageObj = JSONObject.parseObject(message.toString()); JSONObject messageObj = JSONObject.parseObject(message.toString());
String errcode = messageObj.get("errcode").toString(); String errcode = messageObj.get("errcode").toString();
log.info("errcode"+errcode); log.error("errcode"+errcode);
if(StringUtils.isNotEmpty(errcode)){ if(StringUtils.isNotEmpty(errcode)){
if(messageObj.get("errcode").toString().equals("0")){ JSONObject result = new JSONObject(true);
log.info("requestId"+messageObj.get("requestId").toString()); switch (errcode){
return Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse(""); case "0":
}else{ result.put("status","0");
log.info("errmsg"+messageObj.get("errmsg").toString()); result.put("message",Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse(""));
return messageObj.get("errmsg").toString(); break;
case "1200364":
result.put("status","-7");
result.put("message",messageObj.get("errmsg").toString());
break;
default:
result.put("status","-1");
result.put("message","调用泛微流程创建接口失败");
} }
return result.toJSONString();
// if(messageObj.get("errcode").toString().equals("0")){
// log.error("requestId"+messageObj.get("requestId").toString());
// JSONObject result = new JSONObject();
//
// result.put("message",Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse(""));
// result.put("status","0");
//// return Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse("");
// return result.toJSONString();
// }else{
// log.error("errmsg"+messageObj.get("errmsg").toString());
// JSONObject result = new JSONObject();
// result.put("message",messageObj.get("errmsg").toString());
// result.put("status",errcode);
// return result.toJSONString();
// }
}else{ }else{
return "调用泛微流程创建接口失败"; JSONObject result = new JSONObject(true);
result.put("status","-1");
result.put("message","调用泛微流程创建接口失败");
return result.toJSONString();
} }
}catch (Exception e){ }catch (Exception e){
log.info("接口调用失败-",e); log.error("接口调用失败-",e);
return "接口调用失败--"+e; JSONObject result = new JSONObject(true);
result.put("status","-1");
result.put("message","接口调用失败--"+e);
return result.toJSONString();
} }
} }

Loading…
Cancel
Save