组装数据发往RPA
1 /**
2 * Asn 发送RPA
3 */
4 @Named("IService.AsnSendDataToRPAService")
5 public class AsnSendDataToRPAService extends AsnBaseExecSubProcess {
6
7 private static final ILogger LOG = JalorLoggerFactory.getLogger(AsnSendDataToRPAService.class);
8 /**
9 * 箱单协同服务接口.
10 */
11 @Inject
12 protected IBusinessPlsService plsService;
13
14 /**
15 * The Http client util.
16 */
17 @Inject
18 private IHttpClientUtil httpClientUtil;
19
20 @Inject
21 private IUrlConfigService urlConfigService;
22
23 private final String GET_SHIPINFO_FROM_HTM = "GET_SHIPINFO_FROM_HTM";
24
25 private static final String CONTENT_TYPE = "Content-Type";
26
27 @Override
28 public BaseChannelVO execProccess(BaseChannelVO vo)
29 throws RuntimeException, ApplicationException, B2BChannelException {
30 // 接取上游数据
31 String messageBody = vo.getMessageBody();
32 InternalAsnXmlVO asn = XmlUtil.unmarshal(messageBody, InternalAsnXmlVO.class);
33 AsnHeadXmlVO b2bAsnHead = asn.getB2bAsnHead();
34 String shipmentNo = b2bAsnHead.getXmlShipmentNo();
35
36 List<ExtendXmlVO> xmlB2bExtend = b2bAsnHead.getXmlB2bExtend();
37 String customerPoNo = "";
38 for (ExtendXmlVO extendVO : xmlB2bExtend) {
39 String extendName = extendVO.getXmlExtendName();
40 if (extendName.equals("customerPoNo")) {
41 customerPoNo = extendVO.getXmlExtendValue();
42 }
43 }
44
45 // 查找 UMP_B2B_PLS_DT 的入库数据
46 List<PLSLineDetailVO> detailVOList = new ArrayList<>();
47 try{
48 detailVOList = plsService.findPlsLineDetailByShipmentNo(shipmentNo);
49 }catch(Exception e){
50 logStep(vo,"查找detailVOList数据异常");
51 }
52
53 // 调用HTM接口
54 String serviceUrl = urlConfigService.getUrlByKey(GET_SHIPINFO_FROM_HTM);
55 String url = serviceUrl + "/" + shipmentNo;
56 Map<String, String> header = new HashMap<>();
57 header.put(CONTENT_TYPE, "application/json");
58 header.put("Charset", "UTF-8");
59 RemoteRequestVO requestVO = httpClientUtil.get(url, header, null, true, false);
60 String responseResult = requestVO.getResponseResult();
61 if (responseResult == null) {
62 logStep(vo, "responseResult == null");
63 return vo;
64 }
65
66 JSONObject jsonObject1 = getJsonObject(vo, shipmentNo, customerPoNo, detailVOList, responseResult);
67
68 // 通过UMP发送数据到RPA
69 String string = jsonObject1.toJSONString();
70 String beanName = getParameter(vo, "beanName", "AsnSendDataToRPAService");
71 ResultVO<String> rt = jmsOperationService.sendUmpJms(beanName, shipmentNo, "T_B2B_DT_3B2_RPA", string);
72 if (rt.getStatusCode() != "1") {
73 logStep(vo, "通过UMP发送数据到RPA失败" + rt.getStatusCode());
74 }
75 // 打印日志
76 logStep(vo, "response", rt.getStatusMsg());
77 return vo;
78 }
79
80 private JSONObject getJsonObject(BaseChannelVO vo, String shipmentNo, String customerPoNo,
81 List<PLSLineDetailVO> detailVOList, String responseResult) {
82 JSONObject jsonObject1 = new JSONObject();
83 jsonObject1 = getJsonObject(vo, responseResult, jsonObject1);
84 // 组装上游数据
85 jsonObject1.put("shipmentNo", shipmentNo);
86 jsonObject1.put("customerPoNo", customerPoNo);
87
88 // 组装数据库数据
89 JSONArray array = new JSONArray();
90 for (int i = 0; i < detailVOList.size(); i++) {
91 JSONObject jsonObject2 = new JSONObject();
92 String itemCode = detailVOList.get(i).getItemCode();
93 String quantity = detailVOList.get(i).getQuantity();
94 String engDescription = detailVOList.get(i).getEngDescription();
95 String barcode = detailVOList.get(i).getBarcode();
96 jsonObject2.put("itemCode", itemCode);
97 jsonObject2.put("quantity", quantity);
98 jsonObject2.put("engDescription", engDescription);
99 jsonObject2.put("barcode", barcode);
100 array.add(jsonObject2);
101 }
102 jsonObject1.put("lineInformation", array);
103 return jsonObject1;
104 }
105
106 private JSONObject getJsonObject(BaseChannelVO vo, String responseResult, JSONObject jsonObject1) {
107 // 取HTM接口内数据
108 JSONObject json1 = JSONObject.parseObject(responseResult);
109 JSONArray jsonArray = json1.getJSONArray("resultBody");
110 if (jsonArray.size() == 0) {
111 LOG.error("responseBody is empty");
112 } else {
113 Object object = jsonArray.get(0);
114 JSONObject json2 = JSONObject.parseObject(String.valueOf(object));
115
116 JSONObject releaseRemark = (JSONObject) json2.get("releaseRemark");
117 JSONObject releaseHeader = (JSONObject) json2.get("releaseHeader");
118 JSONObject releaseRefnum = (JSONObject) json2.get("releaseRefnum");
119
120 Object detailDeliveryAddressObject = releaseRemark.get("detailDeliveryAddress");
121 Object totalItemPackageCountObject = releaseHeader.get("totalItemPackageCount");
122 Object totalGrossWeightObject = releaseHeader.get("totalGrossWeight");
123 Object submitTenderDateObject = releaseHeader.get("submitTenderDate");
124 Object estimatedArrivalDateObject = releaseRefnum.get("estimatedArrivalDate");
125 Object sourceLocationObject = releaseHeader.get("sourceLocation");
126
127 String detailDeliveryAddress = String.valueOf(detailDeliveryAddressObject);
128 String totalItemPackageCount = String.valueOf(totalItemPackageCountObject);
129 String totalGrossWeight = String.valueOf(totalGrossWeightObject);
130 String submitTenderDate = String.valueOf(submitTenderDateObject);
131 String estimatedArrivalDate = String.valueOf(estimatedArrivalDateObject);
132 String sourceLocation = String.valueOf(sourceLocationObject);
133
134 // 组装接口数据
135 jsonObject1.put("detailDeliveryAddress", detailDeliveryAddress);
136 jsonObject1.put("totalItemPackageCount", totalItemPackageCount);
137 jsonObject1.put("totalGrossWeight", totalGrossWeight);
138 jsonObject1.put("submitTenderDate", submitTenderDate);
139 jsonObject1.put("estimatedArrivalDate", estimatedArrivalDate);
140 jsonObject1.put("sourceLocation", sourceLocation);
141 }
142 return jsonObject1;
143 }
144 }