From d0550dd6435fc2dce0b34fd09d2c577211645d40 Mon Sep 17 00:00:00 2001 From: calyrex <2213354201@qq.com> Date: Mon, 19 May 2025 15:43:50 +0800 Subject: [PATCH] =?UTF-8?q?calyrex=205.19=E5=92=8C=E4=BF=A1=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=B5=81=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../seconddev/util/DataOperateUtil.java | 26 ++- .../seconddev/util/InterInfoAchieveUtil.java | 4 +- .../webservice/DoCreateWorkflowService.java | 157 +++++++++--------- 3 files changed, 102 insertions(+), 85 deletions(-) diff --git a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/DataOperateUtil.java b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/DataOperateUtil.java index 8c01559..ed5ed32 100644 --- a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/DataOperateUtil.java +++ b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/DataOperateUtil.java @@ -34,13 +34,13 @@ public class DataOperateUtil { private DataSetService dataSetService; public List getDetailFormId(String workflowId) { - log.error("getDetailFormId start : " + workflowId ); + log.info("getDetailFormId start : " + workflowId ); List formIdList = new ArrayList(); String sourceType = String.valueOf(SourceType.LOGIC); String groupId = "weaver-basic-schedule-service"; 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+"'))"; - log.info("getConfig sql-->" + sql); + log.info("getDetailFormId sql-->" + sql); Map datas = executeForQuery(sourceType, groupId, sql); // log.info("getConfig datas-->" + datas); if(String.valueOf(datas.get("status")).equals("OK")){ @@ -52,27 +52,28 @@ public class DataOperateUtil { } return formIdList; }else { - log.error("getConfig status-->"+ datas.get("status")); + log.error("getDetailFormId status-->"+ datas.get("status")); return formIdList; } }catch (Exception e){ - log.error("getConfig e--> ",e); + log.error("getDetailFormId e--> ",e); return formIdList; } } public String getConfig(String key,String tenantKey){ + int tenantId = getTenantId(tenantKey); String sourceType = String.valueOf(SourceType.LOGIC); - String groupId = "weaver-basic-schedule-service"; + String groupId = "weaver-ebuilder-form-service"; try { - String sql = "select configvalue from ecology10.dbo.uf_config where configkey = '" + key + "' and zhkey = '"+tenantKey+"'"; + String sql = "select configvalue from ecology10.dbo.uf_config where configkey = '" + key + "' and zhkey = '"+tenantId+"'"; log.info("getConfig sql-->" + sql); Map datas = executeForQuery(sourceType, groupId, sql); -// log.info("getConfig datas-->" + datas); + log.info("getConfig datas-->" + datas); if(String.valueOf(datas.get("status")).equals("OK")){ List> records = (List>)datas.get("records"); Map map = records.get(0); - return map.get("config_value").toString(); + return map.get("configvalue").toString(); }else { log.error("getConfig status-->"+ datas.get("status")); return ""; @@ -101,6 +102,7 @@ public class DataOperateUtil { * @return */ public static JSONObject getFromDataByDataDetails(List formDataDutyList) { + log.error("getFromDataByDataDetails start"); JSONObject formData = new JSONObject(); formData.put("module","workflow"); @@ -172,6 +174,14 @@ public class DataOperateUtil { return formData; } + private int getTenantId(String tenantKey){ + if (tenantKey == "temkc46eme"){ + return 0; + }else { + return 0; + } + } + public static String null2String(String s){ return s == null ? "" : s; } diff --git a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/InterInfoAchieveUtil.java b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/InterInfoAchieveUtil.java index bd9ed62..7d40794 100644 --- a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/InterInfoAchieveUtil.java +++ b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/util/InterInfoAchieveUtil.java @@ -52,7 +52,8 @@ public class InterInfoAchieveUtil { 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 url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/papi/openapi/oauth2/access_token"; -// log.info("getToken params-->" + params); + log.info("getToken url--"+url); + log.info("getToken params-->" + params); RequestBody body = RequestBody.create(mediaType, params); Request request = new Request.Builder() .url(url) @@ -63,4 +64,5 @@ public class InterInfoAchieveUtil { return response.body().string(); } + } diff --git a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/webservice/DoCreateWorkflowService.java b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/webservice/DoCreateWorkflowService.java index 0e81201..65176f4 100644 --- a/secondev-hx-webservice/src/main/java/com/weaver/seconddev/webservice/DoCreateWorkflowService.java +++ b/secondev-hx-webservice/src/main/java/com/weaver/seconddev/webservice/DoCreateWorkflowService.java @@ -30,62 +30,61 @@ public class DoCreateWorkflowService { @Autowired private InterInfoAchieveUtil interInfoAchieveUtil; - public String doCreateWorkflowRequest(String creator,String tenantKey,String workflowId,String mainTable,String[] detailTables) throws IOException { + public String doCreateWorkflowRequest(String creator,String tenantKey,String workflowId,String mainTable,String detailArray) throws IOException { log.info("DoCreateWorkflowService start"); - List detailFormId = dataOperateUtil.getDetailFormId(workflowId); - JSONObject param = new JSONObject(); - param.put("userid", Long.valueOf(creator)); - param.put("workflowId", Long.valueOf(workflowId)); - log.info("主表数据:" + mainTable); - //主表数据 json {"sqr":"sqr1","date":"date1","hrm:zrr":"zrr1"} - //字段名前面加 hrm:表示是人力资源字段 - if (mainTable == null || mainTable.equals("")) { - return "主表数据不能为空"; - } + try { + List detailFormId = dataOperateUtil.getDetailFormId(workflowId); + JSONObject param = new JSONObject(); + param.put("userid", Long.valueOf(creator)); + param.put("workflowId", Long.valueOf(workflowId)); + log.info("主表数据:" + mainTable); + //主表数据 json {"sqr":"sqr1","date":"date1","hrm:zrr":"zrr1"} + //字段名前面加 hrm:表示是人力资源字段 + if (mainTable == null || mainTable.equals("")) { + return "主表数据不能为空"; + } - JSONObject jsonObject = JSONObject.parseObject(mainTable); - Map mainMap = jsonObject.toJavaObject(Map.class); - log.error("主表集合:" + mainMap); - List formDataDutyList = new ArrayList(); - // 输出 Map 的内容 - for (Map.Entry entry : mainMap.entrySet()) { - FormDataDuty formDataDuty = FormDataDuty.builder().build(); - String key = entry.getKey(); - Object value = entry.getValue(); - formDataDuty.setFieldType(1); - formDataDuty.setDataKey(key); - formDataDuty.setContent(String.valueOf(value)); - formDataDutyList.add(formDataDuty); - } - if(detailTables==null){ + JSONObject jsonObject = JSONObject.parseObject(mainTable); + Map mainMap = jsonObject.toJavaObject(Map.class); + log.info("主表集合:" + mainMap); + List formDataDutyList = new ArrayList(); + // 输出 Map 的内容 + for (Map.Entry entry : mainMap.entrySet()) { + FormDataDuty formDataDuty = FormDataDuty.builder().build(); + String key = entry.getKey(); + Object value = entry.getValue(); + formDataDuty.setFieldType(1); + formDataDuty.setDataKey(key); + formDataDuty.setContent(String.valueOf(value)); + formDataDutyList.add(formDataDuty); + } - }else{ -// log.error("处理明细数据"); - if(detailTables.length>0){ + log.info("detailArray--",detailArray); + JSONArray detailTables = JSONArray.parseArray(detailArray); + if(detailTables.size()>0){ // 遍历外部 JSONArray - for (int i = 0; i < detailTables.length; i++) { - JSONArray innerArray = JSONArray.parseArray(detailTables[i]); // 获取内部的 JSONArray - log.error("innerArray:"+innerArray); + for (int i = 0; i < detailTables.size(); i++) { + log.info("detailTables--"+detailTables.get(i)); + JSONObject detailInfo = JSONObject.parseObject(detailTables.get(i).toString()); // 获取内部的 JSONArray + log.info("detailInfo:"+detailInfo); - if(innerArray.size()>0){ - //判断明细表id是否存在 - if (detailFormId.size() < i+1) { - log.error("明细表"+(i+1)+"form_id未找到或不存在"); - return "明细表"+(i+1)+"form_id未找到或不存在"; - } - Long subFormId = detailFormId.get(i); - log.error("明细表"+(i+1)+"form_id"+subFormId); + log.info("index:"+detailInfo.get("index")); + log.info("detailFormId:"+detailFormId); + Long subFormId = detailFormId.get(Integer.parseInt(detailInfo.get("index").toString())-1); + log.info("明细表"+(i+1)+"form_id"+subFormId); + JSONArray innerArray = detailInfo.getJSONArray("data"); + if(innerArray.size()>0){ // 遍历内部 JSONArray for (int j = 0; j < innerArray.size(); j++) { - com.alibaba.fastjson.JSONObject jsonDetail = innerArray.getJSONObject(j); + JSONObject jsonDetail = innerArray.getJSONObject(j); // 遍历 JSONObject 的键值对 for (String key : jsonDetail.keySet()) { FormDataDuty formDataDuty = FormDataDuty.builder().build(); String value = jsonDetail.getString(key); if (!"".equals(key)) { -// log.error("明细表普通字段值:"+value); +// log.info("明细表普通字段值:"+value); if(StringUtils.isNotEmpty(value)){ formDataDuty.setDataKey(key); formDataDuty.setDataIndex((long) (j + 1)); @@ -93,7 +92,7 @@ public class DoCreateWorkflowService { //目前写死 后续在找方法 formDataDuty.setSubFormId(subFormId); }else{ -// log.error("明细表普通字段值为空"); +// log.info("明细表普通字段值为空"); } formDataDutyList.add(formDataDuty); } @@ -105,44 +104,50 @@ public class DoCreateWorkflowService { } - log.error("formDataDutyList数据:"+formDataDutyList.size()+"-"+formDataDutyList); + log.info("formDataDutyList数据:"+formDataDutyList.size()+"-"+formDataDutyList); } - } - if(CollectionUtils.isNotEmpty(formDataDutyList)) { - JSONObject fromDataByDataDetails = dataOperateUtil.getFromDataByDataDetails(formDataDutyList); - param.put("formData", fromDataByDataDetails); - } - String code = interInfoAchieveUtil.getCode(tenantKey); - String token = interInfoAchieveUtil.getToken(code,tenantKey); - String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address",tenantKey)) + "/api/workflow/core/paService/v1/doCreateRequest?access_token=" + token; - log.error("url : " + url); - - JSONObject otherParams =new JSONObject(); - otherParams.put("isnextflow",1); - param.put("otherParams",otherParams); - - log.error("表单json:"+param.toJSONString()); - // 远程调用创建流程。 - String response = HttpUtil.post(url, param.toJSONString()); - log.error("自动创建流程结果:"+response); - JSONObject responseObj = JSONObject.parseObject(response); - Object message = responseObj.get("message"); - JSONObject messageObj = JSONObject.parseObject(message.toString()); - String errcode = messageObj.get("errcode").toString(); - - log.error("errcode:"+errcode); - if(StringUtils.isNotEmpty(errcode)){ - if(messageObj.get("errcode").toString().equals("0")){ - log.error("requestId:"+messageObj.get("requestId").toString()); - return Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse(""); + if(CollectionUtils.isNotEmpty(formDataDutyList)) { + JSONObject fromDataByDataDetails = dataOperateUtil.getFromDataByDataDetails(formDataDutyList); + log.info("formDataDutyList数据:"+fromDataByDataDetails); + param.put("formData", fromDataByDataDetails); + } + + String code = JSONObject.parseObject(interInfoAchieveUtil.getCode(tenantKey)).getString("code"); + 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; + log.info("url : " + url); + + JSONObject otherParams =new JSONObject(); + otherParams.put("isnextflow",1); + param.put("otherParams",otherParams); + + log.info("表单json:"+param.toJSONString()); + // 远程调用创建流程。 + String response = HttpUtil.post(url, param.toJSONString()); + log.info("自动创建流程结果:"+response); + JSONObject responseObj = JSONObject.parseObject(response); + Object message = responseObj.get("message"); + JSONObject messageObj = JSONObject.parseObject(message.toString()); + String errcode = messageObj.get("errcode").toString(); + + log.info("errcode:"+errcode); + if(StringUtils.isNotEmpty(errcode)){ + if(messageObj.get("errcode").toString().equals("0")){ + log.info("requestId:"+messageObj.get("requestId").toString()); + return Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse(""); + }else{ + log.info("errmsg:"+messageObj.get("errmsg").toString()); + return messageObj.get("errmsg").toString(); + } }else{ - log.error("errmsg:"+messageObj.get("errmsg").toString()); - return messageObj.get("errmsg").toString(); + return "调用泛微流程创建接口失败"; } - }else{ - return "调用泛微流程创建接口失败"; + }catch (Exception e){ + log.info("接口调用失败-",e); + return "接口调用失败--"+e; } + } } \ No newline at end of file