From 93ad61c99ee63cd2ddee6cf227a6d85bedf67501 Mon Sep 17 00:00:00 2001 From: calyrex <2213354201@qq.com> Date: Wed, 18 Jun 2025 09:57:29 +0800 Subject: [PATCH] =?UTF-8?q?calyrex=206.18=20=E5=A8=81=E5=BE=AE=E7=94=B5?= =?UTF-8?q?=E5=AD=90erp=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PayApplicationApprovalAction.java | 100 ++++++++ .../approval/ReimbursementApprovalAction.java | 100 ++++++++ .../info/PurchaseRequisitionInfoAction.java | 164 +++++++++++++ .../action/info/ReimbursementInfoAction.java | 228 ++++++++++++++++++ .../weaver/secondev/util/DataOperateUtil.java | 164 +++++++++++++ .../weaver/secondev/util/ThirdInfoUtil.java | 119 +++++++++ 6 files changed, 875 insertions(+) create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/PayApplicationApprovalAction.java create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/ReimbursementApprovalAction.java create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/action/info/PurchaseRequisitionInfoAction.java create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/action/info/ReimbursementInfoAction.java create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/util/DataOperateUtil.java create mode 100644 secondev-ww-action/src/main/java/com/weaver/secondev/util/ThirdInfoUtil.java diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/PayApplicationApprovalAction.java b/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/PayApplicationApprovalAction.java new file mode 100644 index 0000000..e89a31d --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/PayApplicationApprovalAction.java @@ -0,0 +1,100 @@ +package com.weaver.secondev.action.approval; + +import com.alibaba.fastjson.JSONObject; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.ebuilder.datasource.api.enums.SourceType; +import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; +import com.weaver.secondev.util.DataOperateUtil; +import com.weaver.secondev.util.ThirdInfoUtil; +import com.weaver.verupgrade.interfaces.workflow.action.Action; +import com.weaver.verupgrade.soa.workflow.request.RequestInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-06-04 + * @Description: 付款申请单、采购订单、供应商新建、状态推送 + */ + +@Slf4j +@Service("workflow_action_PayApplicationApprovalAction") +public class PayApplicationApprovalAction implements EsbServerlessRpcRemoteInterface { + + @Autowired + private RequestInfo requestInfoTemp; + + @Autowired + private DataOperateUtil dataOperateUtil; + + @Autowired + private ThirdInfoUtil thirdInfoUtil; + + @Override + public WeaResult> execute(Map params) { + log.info("PayApplicationApprovalAction execute start"); + log.info("PayApplicationApprovalAction execute params : " + params); + try { + Map weaverResultMap = new HashMap<>(); + Long requestIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("requestid", -1))); + Long userIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("userid", -1))); + String status = String.valueOf(params.getOrDefault("status", "")); + RequestInfo requestinfo = requestInfoTemp.getRequestInfo(requestIdTemp, userIdTemp); + String tableName = requestinfo.getRequestManager().getBillTableName(); + String formDataId = dataOperateUtil.getFormDataId(String.valueOf(requestIdTemp)); + String sql = "select pk,billtype from " + tableName + " where form_data_id = " + formDataId; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-workflow-report-serviceworkflowreport"; + Map datas = dataOperateUtil.executeForQuery(sourceType, groupId, sql); + if(String.valueOf(datas.get("status")).equals("OK")){ + List> records = (List>)datas.get("records"); + if (records.size()>0){ + Map map = records.get(0); + String billType = map.get("billtype").toString(); + String pk = map.get("pk").toString(); + String usercode = dataOperateUtil.getConfig("third_usercode"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("pk", pk); + jsonObject.put("usercode", usercode); + jsonObject.put("billtype", billType); + String url = ""; + if ("1".equals(status)){ + url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/uapbd/approveoaapi/Approve"; + }else { + url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/uapbd/approveoaapi/UnApprove"; + } + JSONObject tokenInfo = thirdInfoUtil.getToken(); + if (tokenInfo.get("success").equals("true")){ + JSONObject data = tokenInfo.getJSONObject("data"); + String token = data.getString("access_token"); + Boolean result = thirdInfoUtil.transferStatusInfo(url, token, jsonObject); + log.info("PayApplicationApprovalAction execute result : " + result); + if (result){ + return WeaResult.success(thirdInfoUtil.getResultMapForAction(weaverResultMap, "result", Action.SUCCESS, requestinfo.getRequestManager())); + }else { + log.info("PayApplicationApprovalAction execute error--推送失败"); + return WeaResult.fail("PayApplicationApprovalAction execute error--推送失败"); + } + }else { + log.info("PayApplicationApprovalAction execute error--token调用失败"); + return WeaResult.fail("PayApplicationApprovalAction execute error--token调用失败"); + } + }else { + log.info("PayApplicationApprovalAction execute error--查询不到数据"); + return WeaResult.fail("PayApplicationApprovalAction execute error--查询不到数据"); + } + }else { + log.info("PayApplicationApprovalAction execute error--查询失败"); + return WeaResult.fail("PayApplicationApprovalAction execute error--查询失败"); + } + } catch (Exception e) { + log.error("PaymentApplyAction execute error", e); + return WeaResult.fail("PayApplicationApprovalAction execute error", e); + } + } +} diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/ReimbursementApprovalAction.java b/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/ReimbursementApprovalAction.java new file mode 100644 index 0000000..5b741a9 --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/action/approval/ReimbursementApprovalAction.java @@ -0,0 +1,100 @@ +package com.weaver.secondev.action.approval; + +import com.alibaba.fastjson.JSONObject; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.ebuilder.datasource.api.enums.SourceType; +import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; +import com.weaver.secondev.util.DataOperateUtil; +import com.weaver.secondev.util.ThirdInfoUtil; +import com.weaver.verupgrade.interfaces.workflow.action.Action; +import lombok.extern.slf4j.Slf4j; +import com.weaver.verupgrade.soa.workflow.request.RequestInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-06-03 + * @Description: 应付单审批推送 + */ + +@Slf4j +@Service("workflow_action_ReimbursementApprovalAction") +public class ReimbursementApprovalAction implements EsbServerlessRpcRemoteInterface { + + @Autowired + private RequestInfo requestInfoTemp; + + @Autowired + private DataOperateUtil dataOperateUtil; + + @Autowired + private ThirdInfoUtil thirdInfoUtil; + + @Override + public WeaResult> execute(Map params) { + log.error("ReimbursementApprovalAction execute start"); + log.error("ReimbursementApprovalAction execute params : " + params); + try { + Map weaverResultMap = new HashMap<>(); + Long requestIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("requestid", -1))); + Long userIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("userid", -1))); + String status = String.valueOf(params.getOrDefault("status", "")); + RequestInfo requestinfo = requestInfoTemp.getRequestInfo(requestIdTemp, userIdTemp); + String tableName = requestinfo.getRequestManager().getBillTableName(); + String formDataId = dataOperateUtil.getFormDataId(String.valueOf(requestIdTemp)); + String sql = "select pk,billtype from " + tableName + " where form_data_id = " + formDataId; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-workflow-report-serviceworkflowreport"; + Map datas = dataOperateUtil.executeForQuery(sourceType, groupId, sql); + if(String.valueOf(datas.get("status")).equals("OK")){ + List> records = (List>)datas.get("records"); + if (records.size()>0){ + Map map = records.get(0); + String pk = String.valueOf(map.get("pk")); + String billtype = String.valueOf(map.get("billtype")); + String usercode = dataOperateUtil.getConfig("third_usercode"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("pk", pk); + jsonObject.put("usercode", usercode); + jsonObject.put("billtype", billtype); + String url = ""; + if ("1".equals(status)){ + url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/arap/payablebill/commit"; + }else { + url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/arap/payablebill/uncommit"; + } + JSONObject tokenInfo = thirdInfoUtil.getToken(); + if (tokenInfo.get("success").equals("true")){ + JSONObject data = tokenInfo.getJSONObject("data"); + String token = data.getString("access_token"); + Boolean result = thirdInfoUtil.transferStatusInfo(url, token, jsonObject); + log.info("ReimbursementApprovalAction execute result : " + result); + if (result){ + return WeaResult.success(thirdInfoUtil.getResultMapForAction(weaverResultMap, "result", Action.SUCCESS, requestinfo.getRequestManager())); + }else { + log.info("ReimbursementApprovalAction execute error--推送失败"); + return WeaResult.fail("ReimbursementApprovalAction execute error--推送失败"); + } + }else { + log.info("ReimbursementApprovalAction execute error--token调用失败"); + return WeaResult.fail("ReimbursementApprovalAction execute error--token调用失败"); + } + }else { + log.info("ReimbursementApprovalAction execute error--查询不到数据"); + return WeaResult.fail("ReimbursementApprovalAction execute error--查询不到数据"); + } + }else { + log.info("ReimbursementApprovalAction execute error--查询失败"); + return WeaResult.fail("ReimbursementApprovalAction execute error--查询失败"); + } + } catch (Exception e) { + log.error("ReimbursementApprovalAction execute error", e); + return WeaResult.fail("ReimbursementApprovalAction execute error", e); + } + } +} diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/PurchaseRequisitionInfoAction.java b/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/PurchaseRequisitionInfoAction.java new file mode 100644 index 0000000..2d6e777 --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/PurchaseRequisitionInfoAction.java @@ -0,0 +1,164 @@ +package com.weaver.secondev.action.info; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.ebuilder.datasource.api.enums.SourceType; +import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; +import com.weaver.file.ud.api.FileDownloadService; +import com.weaver.secondev.util.DataOperateUtil; +import com.weaver.secondev.util.ThirdInfoUtil; +import com.weaver.verupgrade.interfaces.workflow.action.Action; +import com.weaver.verupgrade.soa.workflow.request.RequestInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-06-11 + * @Description: 请购单数据回写 + */ + + +@Slf4j +@Service("workflow_action_PurchaseRequisitionInfoAction") +public class PurchaseRequisitionInfoAction implements EsbServerlessRpcRemoteInterface { + + @Autowired + private RequestInfo requestInfoTemp; + + @Autowired + private DataOperateUtil dataOperateUtil; + + @Autowired + private ThirdInfoUtil thirdInfoUtil; + + @Autowired + private FileDownloadService fileDownloadService; + + @Override + public WeaResult> execute(Map params) { + log.info("PurchaseRequisitionInfoAction execute start"); + log.info("PurchaseRequisitionInfoAction execute params : " + params); + try { + Map weaverResultMap = new HashMap<>(); + Long requestIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("requestid", -1))); + Long userIdTemp = Long.parseLong(String.valueOf(params.getOrDefault("userid", -1))); + RequestInfo requestinfo = requestInfoTemp.getRequestInfo(requestIdTemp, userIdTemp); + String tableName = requestinfo.getRequestManager().getBillTableName(); + String wokflowId = requestinfo.getWorkflowid(); + String formDataId = dataOperateUtil.getFormDataId(String.valueOf(requestIdTemp)); + String sql = "select * from " + tableName + " where formdataid = " + formDataId; + log.error("ReimbursementInfoAction execute sql : " + sql); + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-workflow-report-serviceworkflowreport"; + Map datas = dataOperateUtil.executeForQuery(sourceType, groupId, sql); + JSONObject responseJson = new JSONObject(); + if(String.valueOf(datas.get("status")).equals("OK")){ + List> records = (List>)datas.get("records"); + if (records.size()>0){ + JSONObject po_praybill = new JSONObject(); + String ccurrencyid = "CNY"; + String pk_org = dataOperateUtil.null2String(records.get(0).get("pk_org")); + String pk_org_v = dataOperateUtil.null2String(records.get(0).get("pk_org_v")); + String dbilldate = dataOperateUtil.null2String(records.get(0).get("dbilldate")); + String ctrantypeid = "D1"; + String pk_planpsn = dataOperateUtil.getJobNum(dataOperateUtil.null2String(records.get(0).get("pk_planpsn"))).toString(); + String pk_plandept = dataOperateUtil.getDepartmentCode(dataOperateUtil.null2String(records.get(0).get("pk_plandept"))).toString(); + String fbillstatus = dataOperateUtil.null2String(records.get(0).get("fbillstatus")); + String vmemo = dataOperateUtil.null2String(records.get(0).get("vmemo")); + String billmaker = dataOperateUtil.getJobNum(dataOperateUtil.null2String(records.get(0).get("billmaker"))).toString(); + String dmakedate = dataOperateUtil.null2String(records.get(0).get("dmakedate")); + po_praybill.put("ccurrencyid", ccurrencyid); + po_praybill.put("pk_org", pk_org); + po_praybill.put("pk_org_v", pk_org_v); + po_praybill.put("dbilldate", dbilldate); + po_praybill.put("ctrantypeid", ctrantypeid); + po_praybill.put("pk_planpsn", pk_planpsn); + po_praybill.put("pk_plandept", pk_plandept); + po_praybill.put("fbillstatus", fbillstatus); + po_praybill.put("vmemo", vmemo); + po_praybill.put("billmaker", billmaker); + po_praybill.put("dmakedate", dmakedate); + responseJson.put("po_praybill", po_praybill); + }else { + log.error("ReimbursementInfoAction execute error", "主表查询不到数据"); + return WeaResult.fail("ReimbursementInfoAction execute error--主表查询不到数据"); + } + }else { + log.error("ReimbursementInfoAction execute error", "主表数据查询失败"); + return WeaResult.fail("ReimbursementInfoAction execute error--主表数据查询失败"); + } + List detailTableNameList = dataOperateUtil.getDetailTableName(wokflowId); + String detailTableName = detailTableNameList.get(0); + String detailTableSql = "select * from " + detailTableName + " where form_data_id = " + formDataId; + log.error("ReimbursementInfoAction execute sql : " + detailTableSql); + Map detailDatas = dataOperateUtil.executeForQuery(sourceType, groupId, detailTableSql); + JSONArray po_praybill_b = new JSONArray(); + if(String.valueOf(detailDatas.get("status")).equals("OK")) { + List> detailRecords = (List>) detailDatas.get("records"); + if (detailRecords.size() > 0) { + for (int i = 0; i < detailRecords.size(); i++) { + JSONObject detailJson = new JSONObject(); + Map detailMap = detailRecords.get(i); + String pk_material = dataOperateUtil.null2String(detailMap.get("pk_material")); + String castunitid = dataOperateUtil.null2String(detailMap.get("castunitid"));; + String nastnum = dataOperateUtil.null2String(detailMap.get("nastnum")); + String vchangerate = dataOperateUtil.null2String(detailMap.get("vchangerate")); + String cunitid = dataOperateUtil.null2String(detailMap.get("cunitid")); + String nnum = dataOperateUtil.null2String(detailMap.get("nnum")); + String dreqdate = dataOperateUtil.null2String(detailMap.get("dreqdate")); + String dsuggestdate = dataOperateUtil.null2String(detailMap.get("dsuggestdate")); + String pk_employee = dataOperateUtil.getJobNum(dataOperateUtil.null2String(detailMap.get("pk_employee"))).toString(); + String pk_suggestsupplier = dataOperateUtil.null2String(detailMap.get("pk_suggestsupplier")); + String pk_purchaseorg = dataOperateUtil.null2String(detailMap.get("pk_purchaseorg")); + detailJson.put("pk_material", pk_material); + detailJson.put("castunitid", castunitid); + detailJson.put("nastnum", nastnum); + detailJson.put("vchangerate", vchangerate); + detailJson.put("cunitid", cunitid); + detailJson.put("nnum", nnum); + detailJson.put("dreqdate", dreqdate); + detailJson.put("dsuggestdate", dsuggestdate); + detailJson.put("pk_employee", pk_employee); + detailJson.put("pk_suggestsupplier", pk_suggestsupplier); + detailJson.put("pk_purchaseorg", pk_purchaseorg); + po_praybill_b.add(detailJson); + } + responseJson.put("po_praybill_b", po_praybill_b); + String url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/nccloud/api/pu/praybillext/add"; + JSONObject tokenInfo = thirdInfoUtil.getToken(); + if (tokenInfo.get("success").equals("true")){ + JSONObject data = tokenInfo.getJSONObject("data"); + String token = data.getString("access_token"); + JSONObject request = thirdInfoUtil.transferInfo(url, token, responseJson); + String success = request.get("success").toString(); + if ("true".equals(success)){ + return WeaResult.success(thirdInfoUtil.getResultMapForAction(weaverResultMap, "result", Action.SUCCESS, requestinfo.getRequestManager())); + }else { + log.info("PurchaseRequisitionInfoAction execute error--推送失败"); + return WeaResult.fail("PurchaseRequisitionInfoAction execute error--推送失败"); + } + }else { + log.info("PurchaseRequisitionInfoAction execute error--token调用失败"); + return WeaResult.fail("PurchaseRequisitionInfoAction execute error--token调用失败"); + } + }else { + log.info("PurchaseRequisitionInfoAction execute error--查询不到数据"); + return WeaResult.fail("PurchaseRequisitionInfoAction execute error--查询不到数据"); + } + }else { + log.info("PurchaseRequisitionInfoAction execute error--查询失败"); + return WeaResult.fail("PurchaseRequisitionInfoAction execute error--查询失败"); + } + } catch (Exception e) { + log.error("PurchaseRequisitionInfoAction execute error", e); + return WeaResult.fail("PurchaseRequisitionInfoAction execute error", e); + } + } +} diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/ReimbursementInfoAction.java b/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/ReimbursementInfoAction.java new file mode 100644 index 0000000..f14dd7a --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/action/info/ReimbursementInfoAction.java @@ -0,0 +1,228 @@ +package com.weaver.secondev.action.info; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.ebuilder.datasource.api.enums.SourceType; +import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; +import com.weaver.eteams.file.client.file.FileData; +import com.weaver.file.ud.api.FileDownloadService; +import com.weaver.secondev.util.DataOperateUtil; +import com.weaver.secondev.util.ThirdInfoUtil; +import com.weaver.verupgrade.file.ImageFileManager; +import com.weaver.verupgrade.interfaces.workflow.action.Action; +import com.weaver.verupgrade.soa.workflow.request.RequestInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.InputStream; +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-06-03 + * @Description: 应付单数据推送 + */ + +@Slf4j +@Service("workflow_action_ReimbursementInfoAction") +public class ReimbursementInfoAction implements EsbServerlessRpcRemoteInterface { + + @Autowired + private RequestInfo requestInfoTemp; + + @Autowired + private DataOperateUtil dataOperateUtil; + + @Autowired + private ThirdInfoUtil thirdInfoUtil; + + @Autowired + private FileDownloadService fileDownloadService; + + @Override + public WeaResult> execute(Map requestInfoMap) { + log.error("ReimbursementInfoAction execute start"); + log.error("ReimbursementInfoAction execute params : " + requestInfoMap); + try { + Map weaverResultMap = new HashMap<>(); + Long requestIdTemp = Long.parseLong(String.valueOf(requestInfoMap.getOrDefault("requestid", -1))); + Long userIdTemp = Long.parseLong(String.valueOf(requestInfoMap.getOrDefault("userid", -1))); + RequestInfo requestinfo = requestInfoTemp.getRequestInfo(requestIdTemp, userIdTemp); + String wokflowId = requestinfo.getWorkflowid(); + String tableName = requestinfo.getRequestManager().getBillTableName(); + String formDataId = dataOperateUtil.getFormDataId(String.valueOf(requestIdTemp)); + String sql = "select * from " + tableName + " where form_data_id = " + formDataId; + log.error("ReimbursementInfoAction execute sql : " + sql); + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-workflow-report-serviceworkflowreport"; + Map datas = dataOperateUtil.executeForQuery(sourceType, groupId, sql); + JSONObject responseJson = new JSONObject(); + String xgfj = ""; + if(String.valueOf(datas.get("status")).equals("OK")){ + List> records = (List>)datas.get("records"); + if (records.size()>0){ + String pk_org_v = dataOperateUtil.null2String(records.get(0).get("pk_org_v")); + String pk_org = dataOperateUtil.null2String(records.get(0).get("pk_org")); + String billdate = dataOperateUtil.null2String(records.get(0).get("billdate")); + String busidate = dataOperateUtil.null2String(records.get(0).get("busidate")); + String objtype = "3"; + String pk_tradetypeid = "D1"; + String pk_busitype = "AP01"; + String scomment = dataOperateUtil.null2String(records.get(0).get("scomment")); + String billmaker = dataOperateUtil.null2String(records.get(0).get("billmaker")); + String def21 = wokflowId; + String def22 = String.valueOf(requestIdTemp); + String pu_org = dataOperateUtil.getDepartmentCode(dataOperateUtil.null2String(records.get(0).get("pu_org"))).toString(); + String pu_deptid_v = dataOperateUtil.getDepartmentCode(dataOperateUtil.null2String(records.get(0).get("pu_deptid_v"))).toString(); + //报销人待确认 + String pk_psndoc = dataOperateUtil.getJobNum(dataOperateUtil.null2String(records.get(0).get("pk_psndoc"))).toString(); + String pk_currtype = "CNY"; + String local_money = dataOperateUtil.null2String(records.get(0).get("local_money")); + String grouprate = dataOperateUtil.null2String(records.get(0).get("grouprate")); + String grouplocal = dataOperateUtil.null2String(records.get(0).get("grouplocal")); + String globalrate = dataOperateUtil.null2String(records.get(0).get("globalrate")); + String globallocal = dataOperateUtil.null2String(records.get(0).get("globallocal")); + String rate = dataOperateUtil.null2String(records.get(0).get("rate")); + String money = dataOperateUtil.null2String(records.get(0).get("money")); + xgfj = dataOperateUtil.null2String(records.get(0).get("xgfj")); + responseJson.put("pk_org_v", pk_org_v); + responseJson.put("pk_org", pk_org); + responseJson.put("billdate", billdate); + responseJson.put("busidate", busidate); + responseJson.put("objtype", objtype); + responseJson.put("pk_tradetypeid", pk_tradetypeid); + responseJson.put("pk_busitype", pk_busitype); + responseJson.put("scomment", scomment); + responseJson.put("billmaker", billmaker); + responseJson.put("def21", def21); + responseJson.put("def22", def22); + responseJson.put("pu_org", pu_org); + responseJson.put("pu_deptid_v", pu_deptid_v); + responseJson.put("pk_psndoc", pk_psndoc); + responseJson.put("pk_currtype", pk_currtype); + responseJson.put("local_money", local_money); + responseJson.put("grouprate", grouprate); + responseJson.put("grouplocal", grouplocal); + responseJson.put("globalrate", globalrate); + responseJson.put("globallocal", globallocal); + responseJson.put("rate", rate); + responseJson.put("money", money); + }else { + log.error("ReimbursementInfoAction execute error", "主表查询不到数据"); + return WeaResult.fail("ReimbursementInfoAction execute error--主表查询不到数据"); + } + }else { + log.error("ReimbursementInfoAction execute error", "主表数据查询失败"); + return WeaResult.fail("ReimbursementInfoAction execute error--主表数据查询失败"); + } + + List detailTableNameList = dataOperateUtil.getDetailTableName(wokflowId); + String detailTableName = detailTableNameList.get(0); + String detailTableSql = "select * from " + detailTableName + " where form_data_id = " + formDataId; + log.error("ReimbursementInfoAction execute sql : " + detailTableSql); + Map detailDatas = dataOperateUtil.executeForQuery(sourceType, groupId, detailTableSql); + if(String.valueOf(detailDatas.get("status")).equals("OK")){ + List> detailRecords = (List>)detailDatas.get("records"); + if (detailRecords.size()>0){ + JSONArray items = new JSONArray(); + for (int i = 0; i < detailRecords.size(); i++) { + JSONObject detailJson = new JSONObject(); + Map detailMap = detailRecords.get(i); + String project = dataOperateUtil.null2String(detailMap.get("project")); + String objtype = dataOperateUtil.null2String(detailMap.get("objtype")); + String pk_deptid_v = dataOperateUtil.getDepartmentCode(dataOperateUtil.null2String(detailMap.get("pk_deptid_v"))).toString(); + String pk_psndoc = dataOperateUtil.getJobNum(dataOperateUtil.null2String(detailMap.get("pk_psndoc"))).toString(); + String pk_subjcode = dataOperateUtil.null2String(detailMap.get("pk_subjcode")); + String pk_currtype = "CNY"; + String rate = "1"; + String def21 = dataOperateUtil.null2String(detailMap.get("def21")); + String def22 = dataOperateUtil.null2String(detailMap.get("def22")); + String money_cr = dataOperateUtil.null2String(detailMap.get("money_cr")); + String local_money_cr = dataOperateUtil.null2String(detailMap.get("local_money_cr")); + String axcodeid = dataOperateUtil.null2String(detailMap.get("axcodeid")); + String taxrate = dataOperateUtil.null2String(detailMap.get("taxrate")); + String local_tax_cr = dataOperateUtil.null2String(detailMap.get("local_tax_cr")); + String notax_cr = dataOperateUtil.null2String(detailMap.get("notax_cr")); + String local_notax_cr = dataOperateUtil.null2String(detailMap.get("local_notax_cr")); + String recaccount = dataOperateUtil.null2String(detailMap.get("recaccount")); + String grouprate = dataOperateUtil.null2String(detailMap.get("grouprate")); + String groupcrebit = dataOperateUtil.null2String(detailMap.get("groupcrebit")); + String globalrate = dataOperateUtil.null2String(detailMap.get("globalrate")); + String globalcrebit = dataOperateUtil.null2String(detailMap.get("globalcrebit")); + String quantity_cr = "1"; + String price = dataOperateUtil.null2String(detailMap.get("price")); + String taxcodeid = dataOperateUtil.null2String(detailMap.get("taxcodeid")); + detailJson.put("project", project); + detailJson.put("objtype", objtype); + detailJson.put("pk_deptid_v", pk_deptid_v); + detailJson.put("pk_psndoc", pk_psndoc); + detailJson.put("pk_subjcode", pk_subjcode); + detailJson.put("pk_currtype", pk_currtype); + detailJson.put("rate", rate); + detailJson.put("def21", def21); + detailJson.put("def22", def22); + detailJson.put("money_cr", money_cr); + detailJson.put("local_money_cr", local_money_cr); + detailJson.put("axcodeid", axcodeid); + detailJson.put("taxrate", taxrate); + detailJson.put("local_tax_cr", local_tax_cr); + detailJson.put("notax_cr", notax_cr); + detailJson.put("local_notax_cr", local_notax_cr); + detailJson.put("recaccount", recaccount); + detailJson.put("grouprate", grouprate); + detailJson.put("groupcrebit", groupcrebit); + detailJson.put("globalrate", globalrate); + detailJson.put("globalcrebit", globalcrebit); + detailJson.put("quantity_cr", quantity_cr); + detailJson.put("price", price); + detailJson.put("taxcodeid", taxcodeid); + items.add(detailJson); + } + responseJson.put("items", items); + String url = dataOperateUtil.getConfig("ip_address") + "/nccloud/api/arap/payablebill/insert"; + JSONObject tokenInfo = thirdInfoUtil.getToken(); + if (tokenInfo.get("success").equals("true")){ + JSONObject data = tokenInfo.getJSONObject("data"); + String token = data.getString("access_token"); + JSONObject request = thirdInfoUtil.transferInfo(url, token, responseJson); + String success = request.get("success").toString(); + if ("true".equals(success)){ + JSONObject data1 = request.getJSONObject("data"); + String pk_bill = data1.getString("pk_bill"); + List xgfjList = Arrays.asList(xgfj.split(",")); + for (String fileId : xgfjList) { + FileData fileData = fileDownloadService.downloadFileLazy(Long.valueOf(fileId)); + InputStream inputStream = fileData.getInputStream(); + String fileName = dataOperateUtil.getFileName(fileId); + Boolean isUpdate = thirdInfoUtil.updateFile(pk_bill, fileName, inputStream); + if (!isUpdate){ + log.info("updateFile error:上传附件失败"); + return WeaResult.fail("上传附件失败"); + } + } + }else { + log.info("transferInfo error:{}", request); + return WeaResult.fail("推送表单数据失败"); + } + } + return WeaResult.success(thirdInfoUtil.getResultMapForAction(weaverResultMap, "result", Action.SUCCESS, requestinfo.getRequestManager())); + }else { + log.info("getToken error:明细表为空" ); + return WeaResult.fail("明细表为空"); + } + }else { + log.info("getToken error:查询数据失败"); + return WeaResult.fail("查询数据失败"); + } + } catch (Exception e) { + log.error("ReimbursementInfoAction execute error", e); + return WeaResult.fail("ReimbursementInfoAction execute error", e); + } + } +} diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/util/DataOperateUtil.java b/secondev-ww-action/src/main/java/com/weaver/secondev/util/DataOperateUtil.java new file mode 100644 index 0000000..7736346 --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/util/DataOperateUtil.java @@ -0,0 +1,164 @@ +package com.weaver.secondev.util; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.weaver.ebuilder.datasource.api.entity.ExecuteSqlEntity; +import com.weaver.ebuilder.datasource.api.enums.SourceType; +import com.weaver.ebuilder.datasource.api.service.DataSetService; +import com.weaver.framework.rpc.context.impl.TenantRpcContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-04-25 + * @Description: 数据操作工具 + */ + +@Component +@Slf4j +public class DataOperateUtil { + + @Autowired + private DataSetService dataSetService; + + public List getDetailTableName(String workflowId) { + log.info("getDetailFormId start : " + workflowId ); + List tableNameList = new ArrayList(); + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-basic-schedule-service"; + try { + String sql = "select table_name 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); + Map datas = executeForQuery(sourceType, groupId, sql); +// log.info("getConfig datas-->" + datas); + if(String.valueOf(datas.get("status")).equals("OK")){ + List> records = (List>)datas.get("records"); + for (int i = 0; i < records.size(); i++) { + Map map = records.get(i); + String table_name = map.get("table_name").toString(); + tableNameList.add(table_name); + } + return tableNameList; + }else { + log.error("getDetailFormId status-->"+ datas.get("status")); + return tableNameList; + } + }catch (Exception e){ + log.error("getDetailFormId e--> ",e); + return tableNameList; + } + } + + public String getDepartmentCode(String departmentId){ + String sql = "select code from eteams.dbo.department where id = " + departmentId; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-hrm-service"; + Map stringObjectMap = executeForQuery(sourceType, groupId, sql); + if(String.valueOf(stringObjectMap.get("status")).equals("OK")){ + List> records = (List>)stringObjectMap.get("records"); + Map map = records.get(0); + return map.get("code").toString(); + }else { + log.error("getDepartmentCode status-->"+ stringObjectMap.get("status")); + return ""; + } + } + + public String getJobNum(String jobId){ + String sql = "select job_num from eteams.dbo.job where id = " + jobId; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-hrm-service"; + Map stringObjectMap = executeForQuery(sourceType, groupId, sql); + if(String.valueOf(stringObjectMap.get("status")).equals("OK")){ + List> records = (List>)stringObjectMap.get("records"); + Map map = records.get(0); + return map.get("job_num").toString(); + }else { + log.error("getJobNum status-->"+ stringObjectMap.get("status")); + return ""; + } + } + + public String getFileName(String fileId){ + String sql = " select name from fileobj where id = " + fileId; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-file-service"; + Map stringObjectMap = executeForQuery(sourceType, groupId, sql); + if(String.valueOf(stringObjectMap.get("status")).equals("OK")){ + List> records = (List>)stringObjectMap.get("records"); + Map map = records.get(0); + return map.get("name").toString(); + }else { + log.error("getFileName status-->"+ stringObjectMap.get("status")); + return ""; + } + } + + public String getFormDataId(String requestid){ + String sql = " select dataid from wfc_form_data where requestid = " + requestid; + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-workflow-report-serviceworkflowreport"; + Map stringObjectMap = executeForQuery(sourceType, groupId, sql); + if(String.valueOf(stringObjectMap.get("status")).equals("OK")){ + List> records = (List>)stringObjectMap.get("records"); + Map map = records.get(0); + return map.get("dataid").toString(); + }else { + log.error("getFormDataId status-->"+ stringObjectMap.get("status")); + return ""; + } + } + + public String getConfig(String key){ + String sourceType = String.valueOf(SourceType.LOGIC); + String groupId = "weaver-basic-schedule-service"; + try { + String sql = "select config_value from ecology10.dbo.uf_config where config_key = '" + key + "'"; +// log.info("getConfig sql-->" + sql); + Map datas = executeForQuery(sourceType, groupId, sql); +// 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(); + }else { + log.info("getConfig status-->"+ datas.get("status")); + return ""; + } + }catch (Exception e){ + log.info("getConfig e--> ",e); + return ""; + } + } + public Map executeForQuery(String sourceType, String groupId, String sql) { +// log.info("executeForQuery sourceType-->" + sourceType + ",groupId-->" + groupId + ",sql-->" + sql); + TenantRpcContext.setTargetTenantKey("temkc46eme"); + ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity(); + executeSqlEntity.setSql(cn.hutool.core.codec.Base64.encode(sql)); + executeSqlEntity.setGroupId(groupId); //groupid,可以访问 E10地址/api/datasource/ds/group?sourceType=LOGIC 获取 + executeSqlEntity.setSourceType(SourceType.valueOf(sourceType)); +// log.info("executeForQuery executeSqlEntity-->"+executeSqlEntity.getSql()+"-->"+executeSqlEntity.getGroupId()+"-->"+executeSqlEntity.getSourceType()); + Map datas = dataSetService.executeSql(executeSqlEntity); + log.info("executeForQuery datas-->" + datas); + TenantRpcContext.removeTargetTenantKey(); + return datas; + } + + public static String null2String(String s){ + return s == null ? "" : s; + } + + public static String null2String(Object o){ + return o == null ? "" : o.toString(); + } + + public static String null2String(String s1,String s2){ + return s1 == null ? (s2 == null ? "" : s2) : s1; + } +} diff --git a/secondev-ww-action/src/main/java/com/weaver/secondev/util/ThirdInfoUtil.java b/secondev-ww-action/src/main/java/com/weaver/secondev/util/ThirdInfoUtil.java new file mode 100644 index 0000000..e260b8e --- /dev/null +++ b/secondev-ww-action/src/main/java/com/weaver/secondev/util/ThirdInfoUtil.java @@ -0,0 +1,119 @@ +package com.weaver.secondev.util; +import com.alibaba.fastjson.JSONObject; +import cn.hutool.http.HttpRequest; +import com.weaver.verupgrade.workflow.request.RequestManager; +import lombok.extern.slf4j.Slf4j; +import okhttp3.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +/** + * @Author: calyrex + * @CreateTime: 2025-06-03 + * @Description: 用友三方接口获取工具 + */ + + +@Component +@Slf4j +public class ThirdInfoUtil { + + @Autowired + private DataOperateUtil dataOperateUtil; + public JSONObject getToken(){ + String ipAddress = dataOperateUtil.getConfig("ip_address"); + String bizCenter = dataOperateUtil.getConfig("biz_center"); + String grantType = dataOperateUtil.getConfig("grant_type"); + String clientId = dataOperateUtil.getConfig("client_id"); + String clientSecret = dataOperateUtil.getConfig("client_secret"); + String signature = dataOperateUtil.getConfig("signature"); + String url = ipAddress + "/nccloud/opm/accesstoken?grant_type=" + grantType + "&client_id=" + clientId + "&client_secret=" + clientSecret + "&signature=" + signature + "&biz_center=" + bizCenter; + String body = HttpRequest.post(url) + .header("Content-Type", "application/x-www-form-urlencoded") + .execute().body(); + JSONObject result = JSONObject.parseObject(body); + return result; + } + + public Boolean transferStatusInfo(String url, String token, JSONObject body){ + String request = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("client_id", dataOperateUtil.getConfig("client_id")) + .header("signature", dataOperateUtil.getConfig("signature")) + .header("access_token", token) + .header("ucg_flag", "Y") + .header("repeat_check", "y") + .body(String.valueOf(body)) + .execute().body(); + log.info("transferInfo request:{}", request); + boolean result = Boolean.parseBoolean(JSONObject.parseObject(request).get("success").toString()); + return result; + } + + public JSONObject transferInfo(String url, String token, JSONObject body){ + String request = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("client_id", dataOperateUtil.getConfig("client_id")) + .header("signature", dataOperateUtil.getConfig("signature")) + .header("access_token", token) + .header("ucg_flag", "Y") + .header("repeat_check", "y") + .body(String.valueOf(body)) + .execute().body(); + log.info("transferInfo request:{}", request); + return JSONObject.parseObject(request); + } + + public Boolean updateFile(String parentPath,String imageFileName, InputStream inputStream) throws IOException { + OkHttpClient client = new OkHttpClient().newBuilder().build(); + MediaType mediaType = MediaType.parse("text/plain"); + String url = dataOperateUtil.null2String(dataOperateUtil.getConfig("oa_address")) + "/service/FileUpLoad"; + RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM) + .addFormDataPart("file1",imageFileName, +// RequestBody.create(MediaType.parse("application/octet-stream"), new File("D:\\works\\fwsz\\管委会\\test.pdf"))) + RequestBody.create(MediaType.parse("application/octet-stream"), toByteArray(inputStream))) + .build(); + Request request = new Request.Builder() + .url(url) + .header("operType","upload") + .header("dsName",dataOperateUtil.getConfig("dsName")) + .header("parentPath",parentPath) + .method("POST", body) + .build(); + Response response = client.newCall(request).execute(); + String string = response.body().string(); + JSONObject result = JSONObject.parseObject(string); + return result.getBoolean("success"); + } + + public Map getResultMapForAction(Map map, String key, Object value, RequestManager requestManager) { + if (key != null && !key.isEmpty()) { + map.put(key, value); + } + String msgContent = requestManager.getMessagecontent(); + if (msgContent != null && !msgContent.isEmpty()) { + map.put("msgContent", msgContent); + } + String msgId = requestManager.getMessageid(); + if (msgId != null && !msgId.isEmpty()) { + map.put("msgId", msgId); + } + return map; + } + + public static byte[] toByteArray(InputStream input) throws IOException { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024*4]; + int n = 0; + while (-1 != (n = input.read(buffer))) { + output.write(buffer, 0, n); + } + return output.toByteArray(); + } + +}