lc/lc123/cloud/app/plugin/operate/pm/PmReceiptNoticeOpPlugin.java

117 lines
6.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tqq9.lc123.cloud.app.plugin.operate.pm;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
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.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import org.apache.commons.lang3.StringUtils;
import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils;
import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils;
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);
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities1 = e.getDataEntities();
if (null == dataEntities1 || dataEntities1.length == 0) {
throw new KDBizException("请至少选择一条数据");
} else {
for (DynamicObject dataEntity : dataEntities1) {
dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "pm_receiptnotice");
String ownerCode = "LICHI";
String billno = dataEntity.getString("billno");
String warehouseCode = null;
DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry");
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<String, String> headMap = new HashMap<>();
Map<String, Object> request = new HashMap<>();
request.put("receiptCode", billno);
request.put("ownerCode", ownerCode);
request.put("warehouseCode", warehouseCode);
Map<String, Object> finalMap = new HashMap<>();
finalMap.put("request", request);
StringBuilder xmlBuilder = new StringBuilder();
xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\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<String, Integer> result = new HashMap<>();
JSONObject items = responseJson.getJSONObject("items");
if (null != items) {
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});
}
}
}
}
}
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
}
}