import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader;
private List<YDElectronWayBillRespVO> resolvePlaceOrderResp(String resp, boolean isUseCustomerYDElectronWaybillFlag, Map<Integer, YDWayBillPrintNoticeLAndPickLDto> noticeAndPickMap) { if (logger.isDebugEnabled()){ logger.debug("two-dimension sys place order response:" + resp); } SAXReader saxReader = new SAXReader(); Document document = null; try { document = saxReader.read(new ByteArrayInputStream(resp.getBytes())); } catch (Exception e) { logger.error("解析下单接口返回结果异常:" + e); e.printStackTrace(); } if (null == document) { logger.error("下单接口无返回结果。"); throw new YDIllegalArgumentException("下单接口无返回结果。"); } Element root = document.getRootElement(); List<Element> elements = root.elements("response"); List<YDElectronWayBillRespVO> vos = new ArrayList<YDElectronWayBillRespVO>(); for (Element ele : elements){ YDElectronWayBillRespVO vo = new YDElectronWayBillRespVO(); Node serialNo = ele.element("order_serial_no"); // 唯一序列号 Node status = ele.element("status"); // 发送状态 Node msg = ele.element("msg"); // 返回消息 Node waybillNo = ele.element("mail_no"); // 运单号 Node pdfData = ele.element("pdf_info"); // PDF数据 //System.out.println("返回数据:" + pdfData.getText().trim()); Map<String, String> parameterMap = new HashMap<>(); vo.setResult(status.getText().trim()); //如果使用自定义电子面单模板,则将返回的明文信息取出 if ("1".equals(status.getText().trim()) && isUseCustomerYDElectronWaybillFlag) { try { parameterMap = (Map<String, String>) JSON.parse(JSON.parseArray(JSON.parseArray(pdfData.getText().trim()).toArray()[0].toString()).toArray()[0].toString()); vo.setSenderBranchJc(parameterMap.get("sender_branch_jc")); vo.setSenderName(parameterMap.get("sender_name")); vo.setSenderAreaNames(parameterMap.get("sender_area_names")); vo.setSenderCompany(parameterMap.get("sender_company")); vo.setSenderPostcode(parameterMap.get("sender_postcode")); vo.setSenderAddress(parameterMap.get("sender_address")); vo.setPackageWd(parameterMap.get("package_wd")); vo.setPackageWdjc(parameterMap.get("package_wdjc")); vo.setSenderMobile(parameterMap.get("sender_mobile")); vo.setSenderPhone(parameterMap.get("sender_phone")); vo.setQrcode(parameterMap.get("qrcode")); vo.setMailnoBarcode(parameterMap.get("mailno_barcode")); vo.setPositionNo(parameterMap.get("position_no")); vo.setPosition(parameterMap.get("position")); vo.setReceiverName(parameterMap.get("receiver_name")); vo.setReceiverCompany(parameterMap.get("receiver_company")); vo.setReceiverAreaNames(parameterMap.get("receiver_area_names")); vo.setReceiverPostcode(parameterMap.get("receiver_postcode")); vo.setReceiverAddress(parameterMap.get("receiver_address")); vo.setReceiverPhone(parameterMap.get("receiver_phone")); vo.setReceiverMobile(parameterMap.get("receiver_mobile")); vo.setSize(parameterMap.get("size")); vo.setWeight(parameterMap.get("weight")); vo.setMailType(parameterMap.get("mail_type")); vo.setEmsFlag(parameterMap.get("ems_flag")); vo.setCusArea1(parameterMap.get("cus_area1")); vo.setCusArea2(parameterMap.get("cus_area2")); vo.setCusArea3(parameterMap.get("cus_area3")); vo.setOrderId(parameterMap.get("order_id")); vo.setOrderType(parameterMap.get("order_type")); vo.setStatus(parameterMap.get("status")); vo.setTime(parameterMap.get("time")); vo.setBigpenCode(parameterMap.get("bigpen_code")); vo.setPositionZz(parameterMap.get("position_zz")); vo.setTradeCode(parameterMap.get("trade_code")); vo.setLatticeMouthNo(parameterMap.get("lattice_mouth_no")); if (null != noticeAndPickMap && noticeAndPickMap.size() > 0) { String serialNoString = serialNo.getText().trim(); Integer onhId = Integer.parseInt(serialNoString.substring(ORDER_SERIAL_NO_PREFIX.length(), serialNoString.lastIndexOf("_"))); YDWayBillPrintNoticeLAndPickLDto noticeLAndPickLDto = noticeAndPickMap.get(onhId); vo.setOwnName(noticeLAndPickLDto.getOnhOwnerName()); vo.setOnhRemark(noticeLAndPickLDto.getOnhRemark()); vo.setOnhCellNo(noticeLAndPickLDto.getOnhCellNo()); vo.setNoticeItems(noticeLAndPickLDto.getNoticeItems()); vo.setPickItems(noticeLAndPickLDto.getPickItems()); vo.setOnhBuyerMessage(noticeLAndPickLDto.getOnhBuyerMessage()); vo.setOnhSellerMessage(noticeLAndPickLDto.getOnhSellerMessage()); vo.setOnhBuyerNickname(noticeLAndPickLDto.getOnhBuyerNickname()); vo.setOnhPlatformName(noticeLAndPickLDto.getOnhPlatformName()); vo.setOnhShopName(noticeLAndPickLDto.getOnhShopName()); vo.setOnhNoticeNo(noticeLAndPickLDto.getOnhNoticeNo()); vo.setOnhOwnerNo(noticeLAndPickLDto.getOnhOwnerNo()); vo.setOnhIsCod(noticeLAndPickLDto.getOnhIsCod()); vo.setOnhCodAmount(noticeLAndPickLDto.getOnhCodAmount()); vo.setOnhParcelInsurance(noticeLAndPickLDto.getOnhParcelInsurance()); vo.setOnhInsuranceAmount(noticeLAndPickLDto.getOnhInsuranceAmount()); vo.setOnhWaveNo(noticeLAndPickLDto.getOnhWaveNo()); vo.setOnhWaveRoundNo(noticeLAndPickLDto.getOnhWaveRoundNo()); } } catch (Exception e) { String errorMsg = ""; logger.error(errorMsg); throw new YDIllegalArgumentException(errorMsg); } } vo.setSerialNo(serialNo.getText().trim()); vo.setWaybillNo(waybillNo.getText().trim()); vo.setRemark(msg.getText().trim()); vo.setPdfInfo(pdfData.getText().trim()); vo.setResult(status.getText().trim()); vo.setQrcode(vo.getWaybillNo() + "," + vo.getTime() + "," + vo.getPackageWdjc()); vos.add(vo); } return vos; }