收货通知单待上架查询
This commit is contained in:
		
							parent
							
								
									4c83d98db0
								
							
						
					
					
						commit
						2c18180a26
					
				|  | @ -0,0 +1,116 @@ | ||||||
|  | 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); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -106,7 +106,7 @@ public class WmsScsSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||||
|                 logger.info("wms生产商同步——request:" + request); |                 logger.info("wms生产商同步——request:" + request); | ||||||
|                 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"); | ||||||
|                 buildXml(xmlBuilder, finalMap, 0); |                 HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0); | ||||||
|                 logger.info("wms生产商同步——xml:" + xmlBuilder); |                 logger.info("wms生产商同步——xml:" + xmlBuilder); | ||||||
|                 HashMap<String, String> headMap = new HashMap<>(); |                 HashMap<String, String> headMap = new HashMap<>(); | ||||||
|                 try { |                 try { | ||||||
|  | @ -119,63 +119,5 @@ public class WmsScsSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static void buildXml(StringBuilder xmlBuilder, Map<String, Object> map, int indent) { |  | ||||||
|         String indentStr = createIndent(indent); |  | ||||||
| 
 | 
 | ||||||
|         for (Map.Entry<String, Object> entry : map.entrySet()) { |  | ||||||
|             String key = entry.getKey(); |  | ||||||
|             Object value = entry.getValue(); |  | ||||||
| 
 |  | ||||||
|             if (value instanceof Map) { |  | ||||||
|                 // 处理嵌套Map |  | ||||||
|                 xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); |  | ||||||
|                 buildXml(xmlBuilder, (Map<String, Object>) value, indent + 1); |  | ||||||
|                 xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); |  | ||||||
|             } else if (value instanceof List) { |  | ||||||
|                 // 处理List |  | ||||||
|                 List<?> list = (List<?>) value; |  | ||||||
|                 for (Object item : list) { |  | ||||||
|                     if (item instanceof Map) { |  | ||||||
|                         xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); |  | ||||||
|                         buildXml(xmlBuilder, (Map<String, Object>) item, indent + 1); |  | ||||||
|                         xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); |  | ||||||
|                     } else { |  | ||||||
|                         xmlBuilder.append(indentStr).append("<").append(key).append(">") |  | ||||||
|                                 .append(escapeXml(item.toString())) |  | ||||||
|                                 .append("</").append(key).append(">\n"); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 // 处理普通值 |  | ||||||
|                 if (value == null) { |  | ||||||
|                     xmlBuilder.append(indentStr).append("<").append(key).append("/>\n"); |  | ||||||
|                 } else { |  | ||||||
|                     xmlBuilder.append(indentStr).append("<").append(key).append(">") |  | ||||||
|                             .append(escapeXml(value.toString())) |  | ||||||
|                             .append("</").append(key).append(">\n"); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * XML特殊字符转义 |  | ||||||
|      */ |  | ||||||
|     private static String escapeXml(String text) { |  | ||||||
|         if (text == null) return ""; |  | ||||||
|         return text.replace("&", "&") |  | ||||||
|                 .replace("<", "<") |  | ||||||
|                 .replace(">", ">") |  | ||||||
|                 .replace("\"", """) |  | ||||||
|                 .replace("'", "'"); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // 自定义缩进方法 |  | ||||||
|     private static String createIndent(int indent) { |  | ||||||
|         StringBuilder sb = new StringBuilder(); |  | ||||||
|         for (int i = 0; i < indent; i++) { |  | ||||||
|             sb.append("    "); // 4个空格 |  | ||||||
|         } |  | ||||||
|         return sb.toString(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -140,7 +140,7 @@ public class WmsZczSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||||
|                 logger.info("wms注册证同步request:" + request); |                 logger.info("wms注册证同步request:" + request); | ||||||
|                 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"); | ||||||
|                 buildXml(xmlBuilder, finalMap, 0); |                 HttpRequestUtils.buildXml(xmlBuilder, finalMap, 0); | ||||||
|                 logger.info("wms注册证同步xml:" + xmlBuilder); |                 logger.info("wms注册证同步xml:" + xmlBuilder); | ||||||
|                 HashMap<String, String> headMap = new HashMap<>(); |                 HashMap<String, String> headMap = new HashMap<>(); | ||||||
|                 try { |                 try { | ||||||
|  | @ -153,64 +153,6 @@ public class WmsZczSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static void buildXml(StringBuilder xmlBuilder, Map<String, Object> map, int indent) { |  | ||||||
|         String indentStr = createIndent(indent); |  | ||||||
| 
 | 
 | ||||||
|         for (Map.Entry<String, Object> entry : map.entrySet()) { |  | ||||||
|             String key = entry.getKey(); |  | ||||||
|             Object value = entry.getValue(); |  | ||||||
| 
 |  | ||||||
|             if (value instanceof Map) { |  | ||||||
|                 // 处理嵌套Map |  | ||||||
|                 xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); |  | ||||||
|                 buildXml(xmlBuilder, (Map<String, Object>) value, indent + 1); |  | ||||||
|                 xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); |  | ||||||
|             } else if (value instanceof List) { |  | ||||||
|                 // 处理List |  | ||||||
|                 List<?> list = (List<?>) value; |  | ||||||
|                 for (Object item : list) { |  | ||||||
|                     if (item instanceof Map) { |  | ||||||
|                         xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); |  | ||||||
|                         buildXml(xmlBuilder, (Map<String, Object>) item, indent + 1); |  | ||||||
|                         xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); |  | ||||||
|                     } else { |  | ||||||
|                         xmlBuilder.append(indentStr).append("<").append(key).append(">") |  | ||||||
|                                 .append(escapeXml(item.toString())) |  | ||||||
|                                 .append("</").append(key).append(">\n"); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 // 处理普通值 |  | ||||||
|                 if (value == null) { |  | ||||||
|                     xmlBuilder.append(indentStr).append("<").append(key).append("/>\n"); |  | ||||||
|                 } else { |  | ||||||
|                     xmlBuilder.append(indentStr).append("<").append(key).append(">") |  | ||||||
|                             .append(escapeXml(value.toString())) |  | ||||||
|                             .append("</").append(key).append(">\n"); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * XML特殊字符转义 |  | ||||||
|      */ |  | ||||||
|     private static String escapeXml(String text) { |  | ||||||
|         if (text == null) return ""; |  | ||||||
|         return text.replace("&", "&") |  | ||||||
|                 .replace("<", "<") |  | ||||||
|                 .replace(">", ">") |  | ||||||
|                 .replace("\"", """) |  | ||||||
|                 .replace("'", "'"); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // 自定义缩进方法 |  | ||||||
|     private static String createIndent(int indent) { |  | ||||||
|         StringBuilder sb = new StringBuilder(); |  | ||||||
|         for (int i = 0; i < indent; i++) { |  | ||||||
|             sb.append("    "); // 4个空格 |  | ||||||
|         } |  | ||||||
|         return sb.toString(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -418,4 +418,63 @@ public class HttpRequestUtils { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |     public static void buildXml(StringBuilder xmlBuilder, Map<String, Object> map, int indent) { | ||||||
|  |         String indentStr = createIndent(indent); | ||||||
|  | 
 | ||||||
|  |         for (Map.Entry<String, Object> entry : map.entrySet()) { | ||||||
|  |             String key = entry.getKey(); | ||||||
|  |             Object value = entry.getValue(); | ||||||
|  | 
 | ||||||
|  |             if (value instanceof Map) { | ||||||
|  |                 // 处理嵌套Map | ||||||
|  |                 xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); | ||||||
|  |                 buildXml(xmlBuilder, (Map<String, Object>) value, indent + 1); | ||||||
|  |                 xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); | ||||||
|  |             } else if (value instanceof List) { | ||||||
|  |                 // 处理List | ||||||
|  |                 List<?> list = (List<?>) value; | ||||||
|  |                 for (Object item : list) { | ||||||
|  |                     if (item instanceof Map) { | ||||||
|  |                         xmlBuilder.append(indentStr).append("<").append(key).append(">\n"); | ||||||
|  |                         buildXml(xmlBuilder, (Map<String, Object>) item, indent + 1); | ||||||
|  |                         xmlBuilder.append(indentStr).append("</").append(key).append(">\n"); | ||||||
|  |                     } else { | ||||||
|  |                         xmlBuilder.append(indentStr).append("<").append(key).append(">") | ||||||
|  |                                 .append(escapeXml(item.toString())) | ||||||
|  |                                 .append("</").append(key).append(">\n"); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 // 处理普通值 | ||||||
|  |                 if (value == null) { | ||||||
|  |                     xmlBuilder.append(indentStr).append("<").append(key).append("/>\n"); | ||||||
|  |                 } else { | ||||||
|  |                     xmlBuilder.append(indentStr).append("<").append(key).append(">") | ||||||
|  |                             .append(escapeXml(value.toString())) | ||||||
|  |                             .append("</").append(key).append(">\n"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * XML特殊字符转义 | ||||||
|  |      */ | ||||||
|  |     public static String escapeXml(String text) { | ||||||
|  |         if (text == null) return ""; | ||||||
|  |         return text.replace("&", "&") | ||||||
|  |                 .replace("<", "<") | ||||||
|  |                 .replace(">", ">") | ||||||
|  |                 .replace("\"", """) | ||||||
|  |                 .replace("'", "'"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // 自定义缩进方法 | ||||||
|  |     public static String createIndent(int indent) { | ||||||
|  |         StringBuilder sb = new StringBuilder(); | ||||||
|  |         for (int i = 0; i < indent; i++) { | ||||||
|  |             sb.append("    "); // 4个空格 | ||||||
|  |         } | ||||||
|  |         return sb.toString(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue