Procházet zdrojové kódy

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

wangxiaoming před 6 roky
rodič
revize
ed2e1a4a39

+ 5 - 0
watero-common-tool/pom.xml

@@ -24,6 +24,11 @@
             <artifactId>pagehelper</artifactId>
             <version>RELEASE</version>
         </dependency>
+		<dependency>
+			<groupId>org.jsoup</groupId>
+			<artifactId>jsoup</artifactId>
+			<version>1.8.1</version>
+		</dependency>
     </dependencies>
 
 	<build>

+ 63 - 14
watero-common-tool/src/main/java/com/iamberry/wechat/tools/AddrUtil.java

@@ -1,5 +1,11 @@
 package com.iamberry.wechat.tools;
 
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.select.Elements;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.util.TreeMap;
 /**
  * 微信1.0网页地址授权工具类
@@ -11,19 +17,62 @@ import java.util.TreeMap;
  */
 public class AddrUtil {
 
-	public static String getAddress(String url, String access_token){
-		String nonceStr = Sha1Util.getNonceStr(); 
-		String timestamp = Sha1Util.getTimeStamp();
-		TreeMap<String, String> signatureParams = new TreeMap<String, String>();
-		signatureParams.put("noncestr", nonceStr);
-		signatureParams.put("appid", NameUtils.getConfig("appId"));
-		signatureParams.put("timestamp", timestamp);
-		signatureParams.put("url", url);//当前页面链接
-		signatureParams.put("accesstoken", access_token);//网页授权得到
-		String s1 = TenpayUtil.getKeyValue(signatureParams);
-		String addrSign = Sha1Util.getSha1(s1);
-		String json = "{\"nonceStr\":\"%s\",\"appId\":\"%s\",\"timeStamp\":\"%s\",\"addrSign\":\"%s\"}";
-		json = String.format(json, nonceStr, NameUtils.getConfig("appId"), timestamp, addrSign);
-		return json;
+	/**
+	 * 发货时处理省份问题
+	 * @param province
+	 * @return
+	 */
+	public static String dealProvince(String province) {
+		// 判断是否为直辖市
+		if (province.contains("北京")) {
+			return "北京市";
+		} else if (province.contains("上海")) {
+			return "上海市";
+		} else if (province.contains("天津")) {
+			return "天津市";
+		} else if (province.contains("重庆")) {
+			return "重庆市";
+		}
+
+		// 自治区
+		if (province.contains("内蒙古")) {
+			return "内蒙古自治区";
+		} else if (province.contains("广西")) {
+			return "广西壮族自治区";
+		} else if (province.contains("西藏")) {
+			return "西藏自治区";
+		} else if (province.contains("宁夏")) {
+			return "宁夏回族自治区";
+		} else if (province.contains("新疆")) {
+			return "新疆维吾尔自治区";
+		}
+
+		// 其他省份,不能缺少省
+		if (!province.contains("省")) {
+			return province + "省";
+		}
+		return province;
+	}
+
+	public static void main(String[] args) {
+		System.out.println(getPostCode("宣恩县"));
+	}
+
+	public static String getPostCode(String addr) {
+		try {
+			String url = "http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=" + URLEncoder.encode(addr + "邮编", "UTF-8");
+			Document doc = Jsoup.parse(HttpClient431Util.doGet(null, url));
+			Elements rows = doc.select(".op_exactqa_s_answer");
+			return rows.text().trim();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public static String dealCite(String cite) {
+		//
+
+		return null;
 	}
 }

+ 35 - 12
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -9,6 +9,8 @@ import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.utils.OrderUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.AddrUtil;
+import com.iamberry.wechat.tools.HttpClient431Util;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
@@ -115,27 +117,48 @@ public class AwaitSendController {
         eOrderRequestData.setExpType("1");
         eOrderRequestData.setCost(0.00);
         eOrderRequestData.setOtherCost(0.0);
-//        if (post.equalsIgnoreCase("DBL")) {
-//            eOrderRequestData.setCustomerName("testdbl");
-//        }
-//        if(post.equalsIgnoreCase("sto")){ //申通
-//            eOrderRequestData.setCustomerName("2868442074");
-//        }else if(post.equalsIgnoreCase("sf")){ //顺丰
-//            eOrderRequestData.setCustomerName("7690035114");
-//        }else if(post.equalsIgnoreCase("ems")){ //EMS
-//            eOrderRequestData.setCustomerName("90000009971400");
-//        }
+
+        // 不同的快递公司需要做不同的处理
+        if (post.equalsIgnoreCase("EMS")) {
+            // 省内EMS
+            eOrderRequestData.setCustomerName("90000009971400");
+            eOrderRequestData.setCustomerPwd("90000009971400");
+        } else if (post.equalsIgnoreCase("SF")) {
+            // 顺丰
+            eOrderRequestData.setMonthCode("7690035114");
+        } else if (post.equalsIgnoreCase("YZBK")) {
+            // 省外EMS (无需操作)
+        } else if (post.equalsIgnoreCase("STO")) {
+            // 申通快递
+            eOrderRequestData.setCustomerName("爱贝源母婴直销店");
+            eOrderRequestData.setCustomerPwd("客户密码");
+            eOrderRequestData.setSendSite("广东东莞公司");
+        } else if (post.equalsIgnoreCase("DBL")) {
+            eOrderRequestData.setCustomerName("月结编码");
+        }
         // 收件人信息
         String[] addrs = salesOrderInfo.getSalesAddressInfo().split("-");
         if (addrs.length <= 3) {
             addrs = salesOrderInfo.getSalesAddressInfo().split(" ");
         }
+
+        // 获取收件人邮编
+        String PostCode = AddrUtil.getPostCode(addrs[2]);
+        if (PostCode == null) {
+            PostCode = AddrUtil.getPostCode(addrs[1]);
+        }
+        if (PostCode == null) {
+            PostCode = AddrUtil.getPostCode(addrs[0]);
+        }
+
         Map<String, Object> Receiver = new HashMap<String, Object>();
         Receiver.put("Name", salesOrderInfo.getSalesAddressName());
         Receiver.put("Tel", salesOrderInfo.getSalesAddressTel());
-        Receiver.put("ProvinceName", addrs[0]);
+        Receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
         Receiver.put("CityName", addrs[1]);
+        Receiver.put("ExpAreaName", addrs[2]);
         Receiver.put("Address", salesOrderInfo.getSalesAddressInfo());
+        Receiver.put("PostCode", PostCode);
         eOrderRequestData.setReceiver(Receiver);
         // 发件人信息
         Map<String, Object> Sender = new HashMap<String, Object>();
@@ -143,7 +166,7 @@ public class AwaitSendController {
         Sender.put("Tel", "13112639663");
         Sender.put("ProvinceName", "广东省");
         Sender.put("CityName", "东莞市");
-        Sender.put("Address", "东莞清溪三中金龙工业区徐福记对面优尼雅电子科技");
+        Sender.put("Address", "东莞清溪三中金龙工业区优尼雅电子科技");
         eOrderRequestData.setSender(Sender);
         // 产品信息
         List<Map<String, Object>> Commodity = new ArrayList<>();

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/utils/OrderUtils.java

@@ -31,7 +31,7 @@ public class OrderUtils {
     private static final String AppKey="3597c368-9dc0-40b5-9cf2-86d9cb90e38a";
     // 正式环境地址:http://api.kdniao.cc/api/Eorderservice
     // 测试环境地址:http://testapi.kdniao.cc:8081/api/EOrderService
-    private static final String ReqURL="http://testapi.kdniao.cc:8081/api/Eorderservice";
+    private static final String ReqURL="http://api.kdniao.cc/api/Eorderservice";
 
     public static void main(String[] args) throws Exception {
         EOrderRequestData eOrderRequestData = new EOrderRequestData();

+ 23 - 27
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl

@@ -128,35 +128,31 @@
     });
 
     function re_print_order(orderId) {
-        layer.confirm('请确认您已经设置好默认打印机?', {
-            btn: ['确认','取消打印'] //按钮
-        }, function(){
-            $.ajax({
-                type: "POST",
-                data: {
-                    "orderId":orderId
-                },
-                async: true,
-                url: "${path}/admin/await_send/rePrintOrder",
-                success: function(data){
-                    // 请求成功
-                    var res = $.parseJSON(data.returnMsg.json);
-                    if (data.resultMsg && res.Success) {
-                        var html = res.PrintTemplate;
-                        LODOP.PRINT_INIT('打印订单');
-                        LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
-                        LODOP.ADD_PRINT_HTM("2mm","2mm","100%","100%", html);
-                        var flag = LODOP.PRINT();
-                        if (flag) {
-                            layer.msg("打印成功",{icon: 6,time:3000});
-                        }
-                    } else {
-                        layer.msg(res.Reason,{icon: 2,time:3000});
+        // 选择打印设备
+        LODOP.SELECT_PRINTER();
+        $.ajax({
+            type: "POST",
+            data: {
+                "orderId":orderId
+            },
+            async: true,
+            url: "${path}/admin/await_send/rePrintOrder",
+            success: function(data){
+                // 请求成功
+                var res = $.parseJSON(data.returnMsg.json);
+                if (data.resultMsg && res.Success) {
+                    var html = res.PrintTemplate;
+                    LODOP.PRINT_INIT('打印订单');
+                    LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
+                    LODOP.ADD_PRINT_HTM("2mm","2mm","100%","100%", html);
+                    var flag = LODOP.PRINT();
+                    if (flag) {
+                        layer.msg("打印成功",{icon: 6,time:3000});
                     }
+                } else {
+                    layer.msg(res.Reason,{icon: 2,time:3000});
                 }
-            });
-        }, function(){
-
+            }
         });
 
 

+ 7 - 5
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/print_order.ftl

@@ -9,7 +9,7 @@
     <link rel="Bookmark" href="/favicon.ico" >
     <link rel="Shortcut Icon" href="/favicon.ico" />
     <#include "/base/add_base.ftl">
-    <script type="text/javascript" src="//s.iamberry.com/js/LodopFuncs.js"></script>
+    <script type="text/javascript" src="https://s.iamberry.com/js/LodopFuncs.js"></script>
     <title>打单发货</title>
 
 </head>
@@ -19,6 +19,7 @@
 
         <div>
             本次共 <span style="color: red;">${(page.dataList?size)!"0"}</span> 个订单
+            <p style="margin-top: 5px;color: blue;">请设置好默认打印机:Windows开始菜单 >> 设备和打印机 >> 寻找到要打印的机器,将其设置为默认打印机</p>
         </div>
         <div class="mt-20" style="height: 330px;overflow: auto;overflow-x: hidden;margin-bottom: 12px;border: 1px solid #ddd;">
             <table class="table table-border table-bordered table-bg table-hover table-sort">
@@ -63,7 +64,7 @@
                     <option value="${(d.logisticsRstCode)!}">${(d.logisticsName)!}</option>
                 </#list>
             </select>
-            <select class="select" id="print-machine" style="height: 31px;width: 150px">
+            <select class="select" id="print-machine" style="height: 31px;width: 150px;display: none">
             </select>
             <button type="button" class="btn btn-primary" style="background: #32a3d8;color: #fff;" id="sub-post">开始打印</button>
         </div>
@@ -77,6 +78,7 @@
 </tfoot>
 
 <script type="text/javascript">
+    // 选择打印设备
     var LODOP=getLodop();
     $(function () {
         // 获取系统的打印机
@@ -85,18 +87,18 @@
             var count = LODOP.GET_PRINTER_COUNT() - 1;
             for (var i = 0; i <= count; i++) {
                 var text = LODOP.GET_PRINTER_NAME(i+":PrinterName");
-                $("#print-machine").append("<option value='" + text + "'>" + text + "</option>")
+                $("#print-machine").append("<option value='" + i + "'>" + text + "</option>")
             }
         }
         // 开始打印
         $("#sub-post").click(function() {
+            LODOP.SELECT_PRINTER();
+
             var orders = $(".wait-print-order");
             if (orders == null || orders.length <= 0) {
                 layer.msg("未选中订单",{icon: 2,time:3000});
                 return;
             }
-            // 指定打印设备
-            LODOP.SET_PRINTER_INDEX($("#print-machine").val());
             // 启动打印
             startPrint();
         });