117 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Java
		
	
	
	
| 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);
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| }
 |