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;
}