Prechádzať zdrojové kódy

modify_百胜邮政调用地址更换

zhangjie 2 rokov pred
rodič
commit
ec8720a796

+ 112 - 12
edi/com/behosoft/edi/ws/processor/logisticsInfomation/EmsFetchMailNoProcessor.java

@@ -12,20 +12,14 @@
  */
 package com.behosoft.edi.ws.processor.logisticsInfomation;
 
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
+import cn.hutool.http.HttpUtil;
 import com.behosoft.edi.dtomodel.common.FetchMailNoRequestDto;
 import com.behosoft.edi.dtomodel.common.FetchMailNoResponseDto;
 import com.behosoft.edi.dtomodel.ems.EmsFetchMailNoResponseDto;
 import com.behosoft.edi.dtomodel.ws.xiangjia.CallOutServiceHeaderDto;
 import com.behosoft.edi.dtomodel.ws.xiangjia.CallOutWsStandardDto;
+import com.behosoft.edi.dtomodel.ws.xiangjia.LisWsReqDataDto;
+import com.behosoft.edi.ws.factory.OutWsClientFactory;
 import com.behosoft.edi.ws.processor.AbstractCallWsProcessor;
 import com.behosoft.util.Base64Util;
 import com.behosoft.util.ChineseNumber;
@@ -33,6 +27,14 @@ import com.behosoft.util.DtoXmlUtils;
 import com.ibm.icu.text.DecimalFormat;
 import com.wondersgroup.framework.security.encoder.impl.MD5PasswordEncoderImpl;
 import com.wondersgroup.framework.util.preloadutil.AppContextUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.xml.bind.JAXBException;
+import java.nio.charset.Charset;
+import java.util.*;
 
 /**
  * <p>
@@ -97,7 +99,7 @@ public class EmsFetchMailNoProcessor extends AbstractCallWsProcessor {
 		//double total_weight = countTotalWeight(content.getWeight());
 		String receiverAddress = subReceiverAddress(content.getReceiverAddress());
 		
-		//int businessType = 1;
+		int businessType = 1;
 		MD5PasswordEncoderImpl md5PasswordEncoder =
 				(MD5PasswordEncoderImpl) AppContextUtils.getApplicationContext().getBean("md5PasswordEncoder");
 		StringBuffer sb = new StringBuffer();
@@ -105,11 +107,11 @@ public class EmsFetchMailNoProcessor extends AbstractCallWsProcessor {
 		sb.append("<XMLInfo>");
 		sb.append("<sysAccount>" + dto.getBody().getLogisticsFetchMailNo().getContent().getBigaccountid()
 				+ "</sysAccount>");
-		//sb.append("<businessType>" + businessType + "</businessType>");
+		sb.append("<businessType>" + businessType + "</businessType>");
 		sb.append("<passWord>"
 				+ md5PasswordEncoder.encodePassword(dto.getBody().getLogisticsFetchMailNo().getContent().getPassword(),
 						null) + "</passWord>");
-		//sb.append("<billNoAmount>" + 1 + "</billNoAmount>");
+		sb.append("<billNoAmount>" + 1 + "</billNoAmount>");
 		sb.append("<mailType>1</mailType>");
 		
 		if ("VE131106000000200".equals(content.getCarrierId()) || "VE131106000000300".equals(content.getCarrierId())){
@@ -172,6 +174,13 @@ public class EmsFetchMailNoProcessor extends AbstractCallWsProcessor {
 
 	}
 
+	public static String getEMSFetchParamStringNew(String dto,String mailNo) {
+		String sb = dto.replaceAll("</procdate>", "</procdate><billno>" + mailNo + "</billno><businessType>1</businessType>");
+		String str = Base64Util.encode(sb.toString().getBytes(Charset.forName("utf-8")));
+		logger.info(str);
+		return str;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * @see com.behosoft.edi.ws.processor.AbstractCallWsProcessor#getRequestUrl()
@@ -264,4 +273,95 @@ public class EmsFetchMailNoProcessor extends AbstractCallWsProcessor {
 		
 		return Double.parseDouble(df.format(total_weight));
 	}
+
+	public Object callWs(String reqData) throws Exception {
+		long startTime = new Date().getTime();
+		Object response = null;
+		// 把请求的xml转传成LisRequestDataDto
+		LisWsReqDataDto lisWsReqData = null;
+		try {
+			Object obj = DtoXmlUtils.xmlToDto(reqData, LisWsReqDataDto.class);
+			lisWsReqData = (LisWsReqDataDto) obj;
+		}
+		catch (JAXBException e) {
+			log.error("报文格式不合法", e);
+			throw new Exception("报文格式不合法");
+		}
+
+		List<LisWsReqDataDto.MethodParameter> paramList = lisWsReqData.getBody().getParamList();
+
+		Class[] argsClass = new Class[lisWsReqData.getBody().getParamList().size()];
+		Object[] args = new Object[paramList.size()];
+		// param参数进行排序
+		for (int i = 0; i < paramList.size(); i++) {
+			if ("String".equalsIgnoreCase(paramList.get(i).getParamType())) {
+				argsClass[i] = String.class;
+				args[i] = paramList.get(i).getParamValue();
+			}
+			else if ("Integer".equalsIgnoreCase(paramList.get(i).getParamType())) {
+				argsClass[i] = Integer.class;
+				args[i] = Integer.valueOf(paramList.get(i).getParamValue());
+			}
+			else if ("int".equalsIgnoreCase(paramList.get(i).getParamType())) {
+				argsClass[i] = int.class;
+				args[i] = Integer.valueOf(paramList.get(i).getParamValue()).intValue();
+			}
+
+		}
+		long tmptotal = new Date().getTime() - startTime;
+		System.out.println("调用外部ws组装耗时" + tmptotal);
+		log.info("调用外部ws组装耗时" + tmptotal);
+		try {
+			startTime = new Date().getTime();
+			OutWsClientFactory outWsClientFactory =
+					(OutWsClientFactory) AppContextUtils.getApplicationContext().getBean("outWsClientFactory");
+			log.info("==========开始调用外部WS:"+ args);
+			Object wsClient = outWsClientFactory.getOutWsClient(lisWsReqData.getHeader().getAnalyzeType());
+
+			//todo此处调用获取邮政单号
+			for(int i = 0; i < paramList.size(); i++) {
+				LisWsReqDataDto.MethodParameter methodParameter = paramList.get(i);
+				String paramValue = methodParameter.getParamValue();
+				//获取单号
+				String url = "http://ebi.ems.com.cn/ext-web/a/chinapost/thermalforward";//指定URL
+				Map map = new HashMap<String, Object>();//存放参数
+				map.put("method", "getBillNumBySys");
+				map.put("xml", paramValue);
+				log.info("获取单号请求报文:" + paramValue);
+				response = HttpUtil.get(url, map);
+				logger.error("获取单号响应报文:"+response);
+
+				String responseXML = new String(Base64Util.decode(response.toString()), Charset.forName("UTF-8"));
+				EmsFetchMailNoResponseDto fetchMailNoResponseDto = (EmsFetchMailNoResponseDto)DtoXmlUtils.xmlToDto(responseXML, EmsFetchMailNoResponseDto.class);
+				String mailNo = fetchMailNoResponseDto.getAssignIds().getAssignId().get(0).getBillNo();
+
+				String paramValueXML = new String(Base64Util.decode(paramValue.toString()), Charset.forName("UTF-8"));
+				String emsFetchParamString = getEMSFetchParamStringNew(paramValueXML,mailNo);
+
+				Map map2 = new HashMap<String, Object>();
+				map2.put("method", "updatePrintDatas");
+				map2.put("xml", emsFetchParamString);
+				log.error("回传订单(已打印),将详情单打印信息更新到自助服务系统请求报文:" + emsFetchParamString);
+				String response2 = "";
+				response2 = HttpUtil.get(url, map2);
+				log.error("回传订单(已打印),将详情单打印信息更新到自助服务系统响应报文:"+response2);
+
+				Map map3 = new HashMap<String, Object>();
+				map3.put("method", "getPrintDatas");
+				map3.put("xml", emsFetchParamString);
+				String response3 = "";
+				response3 = HttpUtil.get(url, map3);
+				log.error("回传订单(客户端打印)唯一传未打印订单接口响应报文:"+response3);
+			}
+
+			tmptotal = new Date().getTime() - startTime;
+			log.info("动态调用外部ws耗时" + tmptotal +","+wsClient.getClass());
+		}
+		catch (Exception e) {
+			log.error("调用第三方web服务报错", e);
+			throw new Exception("调用第三方web服务报错");
+		}
+		return response;
+
+	}
 }

+ 59 - 0
edi/com/behosoft/edi/ws/processor/logisticsInfomation/Test.java

@@ -0,0 +1,59 @@
+package com.behosoft.edi.ws.processor.logisticsInfomation;
+
+import com.behosoft.edi.dtomodel.common.FetchMailNoRequestDto;
+import com.behosoft.edi.dtomodel.common.FetchMailNoResponseDto;
+import com.behosoft.edi.dtomodel.ems.EmsFetchMailNoResponseDto;
+import com.behosoft.util.Base64Util;
+import com.behosoft.util.DtoXmlUtils;
+
+import java.nio.charset.Charset;
+
+/**
+ * 邮政请求/返回参数解密测试
+ */
+public class Test {
+   public static void main(String[] args) {
+        Object obj = null;
+        String resq = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cmVzcG9uc2U+PHJlc3VsdD4xPC9yZXN1bHQ+PGVycm9yRGVzYz7kv53lrZjmiJDlip88L2Vycm9yRGVzYz48ZXJyb3JDb2RlPjwvZXJyb3JDb2RlPjxlcnJvckRldGFpbD48ZGF0YUlEPjwvZGF0YUlEPjxkYXRhRXJyb3I+PC9kYXRhRXJyb3I+PGRFcnJvckNvZGU+PC9kRXJyb3JDb2RlPjwvZXJyb3JEZXRhaWw+PC9yZXNwb25zZT4=";
+        try {
+            String response = new String(Base64Util.decode(resq.toString()), Charset.forName("UTF-8"));
+            System.err.println(response);
+//            obj = DtoXmlUtils.xmlToDto(response, EmsFetchMailNoResponseDto.class);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+//        if (obj != null) {
+//            EmsFetchMailNoResponseDto responseDto = (EmsFetchMailNoResponseDto) obj;
+//
+//            FetchMailNoResponseDto fetchMailNoResponseDto = new FetchMailNoResponseDto();
+//            FetchMailNoResponseDto.Header header = new FetchMailNoResponseDto.Header();
+//            FetchMailNoResponseDto.Body body = new FetchMailNoResponseDto.Body();
+//            FetchMailNoResponseDto.Body.LogisticsFetchMailNoResponese logisticsMailNoResponse =
+//                    new FetchMailNoResponseDto.Body.LogisticsFetchMailNoResponese();
+//            FetchMailNoResponseDto.Body.LogisticsFetchMailNoResponese.Header bodyHeader =
+//                    new FetchMailNoResponseDto.Body.LogisticsFetchMailNoResponese.Header();
+//            bodyHeader.setMailno(responseDto.getAssignIds().getAssignId().get(0).getBillNo());
+//            logisticsMailNoResponse.setHeader(bodyHeader);
+//            body.setLogisticsFetchMailNoResponese(logisticsMailNoResponse);
+//            fetchMailNoResponseDto.setHeader(header);
+//            fetchMailNoResponseDto.setBody(body);
+//            try {
+//                System.err.println(DtoXmlUtils.DtoToXml(fetchMailNoResponseDto));
+//            }
+//            catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+
+		String req = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48WE1MSW5mbz48c3lzQWNjb3VudD45MTEwMDA2NDE2MDE2Njwvc3lzQWNjb3VudD48YnVzaW5lc3NUeXBlPjE8L2J1c2luZXNzVHlwZT48cGFzc1dvcmQ+YjFiOGYxMDMwNmFhYTUzNjQzYjM2NjNiZmNhY2VmZmM8L3Bhc3NXb3JkPjxiaWxsTm9BbW91bnQ+MTwvYmlsbE5vQW1vdW50PjxtYWlsVHlwZT4xPC9tYWlsVHlwZT48cHJpbnRLaW5kPjI8L3ByaW50S2luZD48cHJpbnREYXRhcz48cHJpbnREYXRhPjxkYXRlVHlwZT48L2RhdGVUeXBlPjxwcm9jZGF0ZT48L3Byb2NkYXRlPjxiaWxsbm8+MTIxNTgxMjk2NTg2MTwvYmlsbG5vPjxidXNpbmVzc1R5cGU+MTwvYnVzaW5lc3NUeXBlPjxzY29udGFjdG9yPuiRm+W7uuWGmzwvc2NvbnRhY3Rvcj48c2N1c3RNb2JpbGU+bnVsbDwvc2N1c3RNb2JpbGU+PHNjdXN0VGVscGx1cz48L3NjdXN0VGVscGx1cz48c2N1c3RQb3N0PjIxMDAwMDwvc2N1c3RQb3N0PjxzY3VzdEFkZHI+5rGf6IuP55yB5Y2X5Lqs5biCbnVsbDwvc2N1c3RBZGRyPjxzY3VzdENvbXA+5rGf6IuP55m+6IOc55S15a2Q5pyJ6ZmQ5YWs5Y+4PC9zY3VzdENvbXA+PHRjb250YWN0b3I+5LqO57u0572hPC90Y29udGFjdG9yPjx0Y3VzdE1vYmlsZT4xMzYwNTE0MTY3ODwvdGN1c3RNb2JpbGU+PHRjdXN0VGVscGx1cz48L3RjdXN0VGVscGx1cz48dGN1c3RQb3N0PjwvdGN1c3RQb3N0Pjx0Y3VzdEFkZHI+5rGf6IuP55yB5Y2X5Lqs5biC5Y2X5Lqs5Lic5p2o5Z2KMTAw5Y+35Y2X5Lqs6YKu5pS/5Lit5b+D5bGA6YCf6YCS5aSn5qW85LqM5qW85LqO57u0572hMTM2MDUxNDE2NzgqKioqKio8L3RjdXN0QWRkcj48dGN1c3RDb21wPumjnuiFvuaxn+iLj+e7iOerr+WFrOWPuC3msZ/oi4/nm7TkvpvvvIjpobrlt67vvIk8L3RjdXN0Q29tcD48dGN1c3RQcm92aW5jZT7msZ/oi4/nnIE8L3RjdXN0UHJvdmluY2U+PHRjdXN0Q2l0eT7ljZfkuqzluII8L3RjdXN0Q2l0eT48dGN1c3RDb3VudHk+546E5q2m5Yy6PC90Y3VzdENvdW50eT48d2VpZ2h0PjA8L3dlaWdodD48bGVuZ3RoPjA8L2xlbmd0aD48aW5zdXJlPjA8L2luc3VyZT48ZmVlPjAuMDwvZmVlPjxmZWVVcHBlcmNhc2U+6Zu2PC9mZWVVcHBlcmNhc2U+PGNhcmdvRGVzYz7mraPluLjlk4E8L2NhcmdvRGVzYz48Y2FyZ29EZXNjMT48L2NhcmdvRGVzYzE+PGNhcmdvRGVzYzI+PC9jYXJnb0Rlc2MyPjxjYXJnb0Rlc2MzPjwvY2FyZ29EZXNjMz48Y2FyZ29EZXNjND48L2NhcmdvRGVzYzQ+PGNhcmdvVHlwZT7nianlk4E8L2NhcmdvVHlwZT48ZGVsaXZlcnljbGFpbT7ml6A8L2RlbGl2ZXJ5Y2xhaW0+PHJlbWFyaz48L3JlbWFyaz48YmlnQWNjb3VudERhdGFJZD5PMjA4MTEwMDAwMDAxPC9iaWdBY2NvdW50RGF0YUlkPjxwcm9kdWN0Q29kZT4xPC9wcm9kdWN0Q29kZT48L3ByaW50RGF0YT48L3ByaW50RGF0YXM+PC9YTUxJbmZvPg==";
+		try {
+			byte[] decode = Base64Util.decode(req.toString());
+			String request = new String(Base64Util.decode(req.toString()), Charset.forName("UTF-8"));
+			System.err.println(request);
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+		}
+    }
+}

BIN
webapp/WEB-INF/lib/hutool-all-4.0.0.jar