From 4220afb82981c0d7cc569dbff25dd371f95fc505 Mon Sep 17 00:00:00 2001 From: sez Date: Thu, 30 Oct 2025 17:34:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=97=E5=B9=BF=E5=BE=85=E4=B8=8A=E6=9E=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/pm/PmReceiptNoticeOpPlugin.java | 241 +++++++++++++----- 1 file changed, 174 insertions(+), 67 deletions(-) diff --git a/lc123/cloud/app/plugin/operate/pm/PmReceiptNoticeOpPlugin.java b/lc123/cloud/app/plugin/operate/pm/PmReceiptNoticeOpPlugin.java index 8d6f767..2919152 100644 --- a/lc123/cloud/app/plugin/operate/pm/PmReceiptNoticeOpPlugin.java +++ b/lc123/cloud/app/plugin/operate/pm/PmReceiptNoticeOpPlugin.java @@ -1,7 +1,10 @@ package tqq9.lc123.cloud.app.plugin.operate.pm; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; @@ -9,6 +12,8 @@ import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.exception.KDBizException; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import org.apache.commons.lang3.StringUtils; @@ -19,6 +24,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +//收货通知单待上架查询 public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn { private final static Log logger = LogFactory.getLog(PmReceiptNoticeOpPlugin.class); @@ -35,96 +41,197 @@ public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn { dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "pm_receiptnotice"); String ownerCode = "LICHI"; String billno = dataEntity.getString("billno"); - String warehouseCode = null; + DynamicObject receiveorg = dataEntity.getDynamicObject("receiveorg"); DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry"); - for (DynamicObject entry : billentry) { - DynamicObject warehouse = entry.getDynamicObject("warehouse"); - if (null != warehouse) { - warehouseCode = warehouse.getString("number"); - } - } + if (null != receiveorg) { + String number = receiveorg.getString("number"); + //BJLC 北京励齿 + //GZLC 广州励齿 + //SHLC 上海励齿 + HashMap body = new HashMap<>(); + body.put("cVouCode", billno); + body.put("VoucherType", "采购订单"); + String jsonBody = JSON.toJSONString(body); + Map jsonHeadMap = new HashMap<>(); + if ("BJLC".equals(number)) { + DynamicObject BJURL = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "BJ_POSTURL")}); + String BJ_URL = BJURL.getString("name"); + logger.info("北京待上架库存查询接口body:" + jsonBody); + try { + String response = HttpRequestUtils.postJson(BJ_URL + "/api/WMS/ASNInfo", jsonBody, jsonHeadMap); + logger.info("北京待上架库存查询接口返回结果:" + response); - String ttx_customerId = ConfigUtils.getThirdConfigByNumber("Ttx_CustomerId"); - String ttx_mainUrl = ConfigUtils.getThirdConfigByNumber("Ttx_MainURL"); - Map headMap = new HashMap<>(); - Map request = new HashMap<>(); - request.put("receiptCode", billno); - request.put("ownerCode", ownerCode); - request.put("warehouseCode", warehouseCode); - Map finalMap = new HashMap<>(); - finalMap.put("request", request); - StringBuilder xmlBuilder = new StringBuilder(); - xmlBuilder.append("\n"); - HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0); - logger.info("待上架库存查询接口xml:" + xmlBuilder); - ttx_mainUrl = ttx_mainUrl + "?method=checkInReport.query&v=2.0&format=xml&customerId=" + ttx_customerId; - try { - String response = HttpRequestUtils.postXml(ttx_mainUrl, xmlBuilder.toString(), headMap); - logger.info("待上架库存查询接口结果:" + response); - if (StringUtils.isNotBlank(response)) { - JSONObject resJSON = HttpRequestUtils.xmlToJson(response); - if (null != resJSON) { - JSONObject responseJson = resJSON.getJSONObject("response"); - if (null != responseJson) { - String flag = responseJson.getString("flag"); - String code = responseJson.getString("code"); - JSONObject containerDetail = responseJson.getJSONObject("containerDetail"); - if (null != containerDetail && "success".equals(flag) && "200".equals(code)) { - Map result = new HashMap<>(); - JSONObject items = responseJson.getJSONObject("items"); - if (null != items) { - Object item1 = items.get("item"); - if (item1 instanceof JSONObject){ - JSONObject item = items.getJSONObject("item"); - String erpOrderLineNum = item.getString("erpOrderLineNum").replace("\"", "");//行号 - int quantity = item.getIntValue("quantity"); - if (result.containsKey(erpOrderLineNum)) { - int currentSum = result.get(erpOrderLineNum); - result.put(erpOrderLineNum, currentSum + quantity); - } else { - result.put(erpOrderLineNum, quantity); - } - } else if (item1 instanceof JSONArray) { - JSONArray jsonArray = items.getJSONArray("item"); - if (null != jsonArray && jsonArray.size() > 0) { - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject item = jsonArray.getJSONObject(i); + Map result = BGQtyResult(response); + if (null != result && result.size() > 0) { + for (DynamicObject entry : billentry) { + long entryId = entry.getLong("id"); + if (result.containsKey(entryId)) { + entry.set("tqq9_ckqty", result.get(entryId)); + } + } + SaveServiceHelper.save(new DynamicObject[]{dataEntity}); + } + + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } else if ("GZLC".equals(number)) { + DynamicObject GZURL = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", + new QFilter[]{new QFilter("number", QCP.equals, "GZ_POSTURL")}); + String GZ_URL = GZURL.getString("name"); + logger.info("广州待上架库存查询接口body:" + jsonBody); + try { + String response = HttpRequestUtils.postJson(GZ_URL + "/api/WMS/ASNInfo", jsonBody, jsonHeadMap); + logger.info("广州待上架库存查询接口返回结果:" + response); + + Map result = BGQtyResult(response); + if (null != result && result.size() > 0) { + for (DynamicObject entry : billentry) { + long entryId = entry.getLong("id"); + if (result.containsKey(entryId)) { + entry.set("tqq9_ckqty", result.get(entryId)); + } + } + SaveServiceHelper.save(new DynamicObject[]{dataEntity}); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } else if ("SHLC".equals(number)) { + + String warehouseCode = null; + + for (DynamicObject entry : billentry) { + DynamicObject warehouse = entry.getDynamicObject("warehouse"); + if (null != warehouse) { + warehouseCode = warehouse.getString("number"); + } + } + String ttx_customerId = ConfigUtils.getThirdConfigByNumber("Ttx_CustomerId"); + String ttx_mainUrl = ConfigUtils.getThirdConfigByNumber("Ttx_MainURL"); + Map headMap = new HashMap<>(); + Map request = new HashMap<>(); + request.put("receiptCode", billno); + request.put("ownerCode", ownerCode); + request.put("warehouseCode", warehouseCode); + Map finalMap = new HashMap<>(); + finalMap.put("request", request); + StringBuilder xmlBuilder = new StringBuilder(); + xmlBuilder.append("\n"); + HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0); + logger.info("上海待上架库存查询接口xml:" + xmlBuilder); + ttx_mainUrl = ttx_mainUrl + "?method=checkInReport.query&v=2.0&format=xml&customerId=" + ttx_customerId; + try { + String response = HttpRequestUtils.postXml(ttx_mainUrl, xmlBuilder.toString(), headMap); + logger.info("上海待上架库存查询接口结果:" + response); + if (StringUtils.isNotBlank(response)) { + JSONObject resJSON = HttpRequestUtils.xmlToJson(response); + if (null != resJSON) { + JSONObject responseJson = resJSON.getJSONObject("response"); + if (null != responseJson) { + String flag = responseJson.getString("flag"); + String code = responseJson.getString("code"); + JSONObject containerDetail = responseJson.getJSONObject("containerDetail"); + if (null != containerDetail && "success".equals(flag) && "200".equals(code)) { + Map result = new HashMap<>(); + + JSONObject items = responseJson.getJSONObject("items"); + if (null != items) { + Object item1 = items.get("item"); + if (item1 instanceof JSONObject) { + JSONObject item = items.getJSONObject("item"); String erpOrderLineNum = item.getString("erpOrderLineNum").replace("\"", "");//行号 - int quantity = item.getIntValue("quantity");//数量 + int quantity = item.getIntValue("quantity"); if (result.containsKey(erpOrderLineNum)) { int currentSum = result.get(erpOrderLineNum); result.put(erpOrderLineNum, currentSum + quantity); } else { result.put(erpOrderLineNum, quantity); } + } else if (item1 instanceof JSONArray) { + JSONArray jsonArray = items.getJSONArray("item"); + if (null != jsonArray && jsonArray.size() > 0) { + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject item = jsonArray.getJSONObject(i); + String erpOrderLineNum = item.getString("erpOrderLineNum").replace("\"", "");//行号 + int quantity = item.getIntValue("quantity");//数量 + if (result.containsKey(erpOrderLineNum)) { + int currentSum = result.get(erpOrderLineNum); + result.put(erpOrderLineNum, currentSum + quantity); + } else { + result.put(erpOrderLineNum, quantity); + } + } + } } + + + } + + if (result.size() > 0) { + for (DynamicObject entry : billentry) { + String entryId = String.valueOf(entry.getLong("id")); + if (result.containsKey(entryId)) { + entry.set("tqq9_ckqty", result.get(entryId)); + } + } + SaveServiceHelper.save(new DynamicObject[]{dataEntity}); } } - - - } - - if (result.size() > 0) { - for (DynamicObject entry : billentry) { - String entryId = String.valueOf(entry.getLong("id")); - if (result.containsKey(entryId)) { - entry.set("tqq9_ckqty", result.get(entryId)); - } - } - SaveServiceHelper.save(new DynamicObject[]{dataEntity}); } } } + } catch (IOException ex) { + throw new RuntimeException(ex); } } - } catch (IOException ex) { - throw new RuntimeException(ex); + } + + } } } + /** + * 返回北广待上架数量 + * + * @param response 北广返回信息 + * @return + */ + private static Map BGQtyResult(String response) { + Map result = new HashMap<>(); + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = objectMapper.readTree(response); + // 获取基本字段 + String code = rootNode.get("code").asText(); + String message = rootNode.get("message").asText(); + // 遍历数组 + JsonNode dataArray = rootNode.get("data"); + + for (JsonNode item : dataArray) { + long iVouID = item.get("iVouID").asLong(); + double iTQuantity = item.get("iTQuantity").asDouble();//收货数量 + double iGQuantity = item.get("iGQuantity").asDouble();// 上架数量 + double qty = iTQuantity - iGQuantity; + if (result.containsKey(iVouID)) { + double currentSum = result.get(iVouID); + result.put(iVouID, currentSum + qty); + } else { + result.put(iVouID, qty); + } + } + + return result; + + } catch (Exception exception) { + exception.printStackTrace(); + } + return result; + } }