组装数据发往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 }

 

posted @ 2022-04-18 21:14  MING5135  阅读(34)  评论(0编辑  收藏  举报