北广待上架查询

This commit is contained in:
sez 2025-10-30 17:34:30 +08:00
parent f4bedb7f23
commit 4220afb829
1 changed files with 174 additions and 67 deletions

View File

@ -1,7 +1,10 @@
package tqq9.lc123.cloud.app.plugin.operate.pm; package tqq9.lc123.cloud.app.plugin.operate.pm;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; 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.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn; 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.exception.KDBizException;
import kd.bos.logging.Log; import kd.bos.logging.Log;
import kd.bos.logging.LogFactory; 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.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -19,6 +24,7 @@ import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
//收货通知单待上架查询
public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn { public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn {
private final static Log logger = LogFactory.getLog(PmReceiptNoticeOpPlugin.class); private final static Log logger = LogFactory.getLog(PmReceiptNoticeOpPlugin.class);
@ -35,15 +41,74 @@ public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn {
dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "pm_receiptnotice"); dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "pm_receiptnotice");
String ownerCode = "LICHI"; String ownerCode = "LICHI";
String billno = dataEntity.getString("billno"); String billno = dataEntity.getString("billno");
String warehouseCode = null; DynamicObject receiveorg = dataEntity.getDynamicObject("receiveorg");
DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry"); DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry");
if (null != receiveorg) {
String number = receiveorg.getString("number");
//BJLC 北京励齿
//GZLC 广州励齿
//SHLC 上海励齿
HashMap<String, Object> body = new HashMap<>();
body.put("cVouCode", billno);
body.put("VoucherType", "采购订单");
String jsonBody = JSON.toJSONString(body);
Map<String, String> 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);
Map<Long, Double> 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<Long, Double> 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) { for (DynamicObject entry : billentry) {
DynamicObject warehouse = entry.getDynamicObject("warehouse"); DynamicObject warehouse = entry.getDynamicObject("warehouse");
if (null != warehouse) { if (null != warehouse) {
warehouseCode = warehouse.getString("number"); warehouseCode = warehouse.getString("number");
} }
} }
String ttx_customerId = ConfigUtils.getThirdConfigByNumber("Ttx_CustomerId"); String ttx_customerId = ConfigUtils.getThirdConfigByNumber("Ttx_CustomerId");
String ttx_mainUrl = ConfigUtils.getThirdConfigByNumber("Ttx_MainURL"); String ttx_mainUrl = ConfigUtils.getThirdConfigByNumber("Ttx_MainURL");
Map<String, String> headMap = new HashMap<>(); Map<String, String> headMap = new HashMap<>();
@ -56,11 +121,11 @@ public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn {
StringBuilder xmlBuilder = new StringBuilder(); StringBuilder xmlBuilder = new StringBuilder();
xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0); HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0);
logger.info("待上架库存查询接口xml" + xmlBuilder); logger.info("上海待上架库存查询接口xml" + xmlBuilder);
ttx_mainUrl = ttx_mainUrl + "?method=checkInReport.query&v=2.0&format=xml&customerId=" + ttx_customerId; ttx_mainUrl = ttx_mainUrl + "?method=checkInReport.query&v=2.0&format=xml&customerId=" + ttx_customerId;
try { try {
String response = HttpRequestUtils.postXml(ttx_mainUrl, xmlBuilder.toString(), headMap); String response = HttpRequestUtils.postXml(ttx_mainUrl, xmlBuilder.toString(), headMap);
logger.info("待上架库存查询接口结果:" + response); logger.info("上海待上架库存查询接口结果:" + response);
if (StringUtils.isNotBlank(response)) { if (StringUtils.isNotBlank(response)) {
JSONObject resJSON = HttpRequestUtils.xmlToJson(response); JSONObject resJSON = HttpRequestUtils.xmlToJson(response);
if (null != resJSON) { if (null != resJSON) {
@ -122,9 +187,51 @@ public class PmReceiptNoticeOpPlugin extends AbstractOperationServicePlugIn {
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
} }
}
} }
}
}
}
/**
* 返回北广待上架数量
*
* @param response 北广返回信息
* @return
*/
private static Map<Long, Double> BGQtyResult(String response) {
Map<Long, Double> 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;
}
} }