浏览代码

快递面单打印需求

yangbo 4 年之前
父节点
当前提交
d0a2acbb61

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/AddressInfoDao.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao;
 
 
 import com.kmall.admin.entity.AddressInfoEntity;
+import com.kmall.admin.entity.StoreExprActiveDto;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
@@ -38,4 +39,5 @@ public interface AddressInfoDao extends BaseDao<AddressInfoEntity> {
      */
     List<AddressInfoEntity> queryCourieId(@Param("courieId") Integer courieId);
 
+    StoreExprActiveDto queryByStoreId(Long storeId);
 }

+ 56 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/StoreExprActiveDto.java

@@ -0,0 +1,56 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+
+public class StoreExprActiveDto implements Serializable {
+
+    private Long storeId;
+
+    private Long exprId;
+
+    private String exprTypeId;
+
+    private String exprCode;
+
+    private String exprName;
+
+    public Long getStoreId() {
+        return storeId;
+    }
+
+    public String getExprTypeId() {
+        return exprTypeId;
+    }
+
+    public void setExprTypeId(String exprTypeId) {
+        this.exprTypeId = exprTypeId;
+    }
+
+    public void setStoreId(Long storeId) {
+        this.storeId = storeId;
+    }
+
+    public Long getExprId() {
+        return exprId;
+    }
+
+    public void setExprId(Long exprId) {
+        this.exprId = exprId;
+    }
+
+    public String getExprCode() {
+        return exprCode;
+    }
+
+    public void setExprCode(String exprCode) {
+        this.exprCode = exprCode;
+    }
+
+    public String getExprName() {
+        return exprName;
+    }
+
+    public void setExprName(String exprName) {
+        this.exprName = exprName;
+    }
+}

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/service/AddressInfoService.java

@@ -3,6 +3,7 @@ package com.kmall.admin.service;
 
 import com.kmall.admin.entity.AddressInfoEntity;
 import com.kmall.admin.entity.ShopAndAddrVo;
+import com.kmall.admin.entity.StoreExprActiveDto;
 import com.kmall.admin.entity.shop.StoreAddrVo;
 
 import java.util.List;
@@ -33,6 +34,9 @@ public interface AddressInfoService {
     AddressInfoEntity queryIds(ShopAndAddrVo shopAndAddrVo);
 
     List<AddressInfoEntity> queryCourieId(Integer courieId);
+
+    StoreExprActiveDto queryByStoreId(Long storeId);
+
     /**
      * 分页查询
      *

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/AddressInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.kmall.admin.service.impl;
 import com.kmall.admin.dao.AddressInfoDao;
 import com.kmall.admin.entity.AddressInfoEntity;
 import com.kmall.admin.entity.ShopAndAddrVo;
+import com.kmall.admin.entity.StoreExprActiveDto;
 import com.kmall.admin.entity.shop.StoreAddrVo;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.AddressInfoService;
@@ -46,6 +47,11 @@ public class AddressInfoServiceImpl implements AddressInfoService {
     }
 
     @Override
+    public StoreExprActiveDto queryByStoreId(Long storeId) {
+        return addressInfoDao.queryByStoreId(storeId);
+    }
+
+    @Override
     public List<AddressInfoEntity> queryList(Map<String, Object> map) {
         return addressInfoDao.queryList(map);
     }

+ 30 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -180,6 +180,9 @@ public class OrderServiceImpl implements OrderService {
     @Autowired
     private OrderExceptionRecordService orderExceptionRecordService;
 
+    @Autowired
+    private AddressInfoService addressInfoService;
+
 
     @Autowired
     private KtoEccsService ktoEccsService;
@@ -482,8 +485,20 @@ public class OrderServiceImpl implements OrderService {
         }
         TicketMailInfo mailInfo = new TicketMailInfo();
         String exprNo = orderProcessRecordEntity.getLogisticsNo();
+        if (StringUtils.isNullOrEmpty(exprNo)) {
+            throw new RRException("快递面单为空,请联系客服");
+        }
         mailInfo.setExprNo(exprNo);
-        mailInfo.setExprLogoUrl("/statics/img/bestex_logo3.png");
+        String logoUrl = "/statics/img/yto_logo.jpg";
+
+        Map<String, String> logoMap = new HashMap<>();
+        logoMap.put("best", "/statics/img/yto_logo.jpg");
+        logoMap.put("yto", "/statics/img/bestex_logo3.png");
+        if (logoMap.containsKey(orderEntity.getShippingCode())) {
+            logoUrl = logoMap.get(orderEntity.getShippingCode());
+        }
+
+        mailInfo.setExprLogoUrl(logoUrl);
         byte[] barCode128 = BarcodeUtil.generateBarCode128(exprNo, null, null, true, false);
         String exprNoBase64Img = new String(Base64.getEncoder().encode(barCode128));
         mailInfo.setShopTel("0752-2688660");
@@ -3451,6 +3466,20 @@ public class OrderServiceImpl implements OrderService {
         orderInfo.setIsOnfflineOrder(Dict.isOnfflineOrder.item_1.getItem());
         orderInfo.setOrderBizType(Dict.orderBizType.item_10.getItem());
 
+        // 添加快递信息
+
+        try {
+            StoreExprActiveDto activeExpr = addressInfoService.queryByStoreId(storeId);
+            if (activeExpr == null) {
+                throw new RRException("门店未配置快递信息");
+            }
+
+            orderInfo.setShipping_id(activeExpr.getExprId());
+            orderInfo.setShipping_code(activeExpr.getExprCode());
+            orderInfo.setShipping_name(activeExpr.getExprName());
+        } catch (Exception e) {
+            LOGGER.error("订单写入门店快递配置信息有误:", e);
+        }
         return orderInfo;
     }
 

+ 17 - 0
kmall-admin/src/main/resources/mybatis/mapper/shop/AddressInfoDao.xml

@@ -41,6 +41,14 @@
 			ms.`store_name`,
 			ecs.`express_name`
 	</sql>
+	<sql id="storeActiveExpr">
+		a.store_id as storeId,
+        a.id as exprId,
+        a.exprtype_id as exprTypeId,
+        b.express_id as exprCode,
+        b.express_name as exprName
+	</sql>
+
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.AddressInfoEntity">
 		select
@@ -69,6 +77,15 @@
 	    and is_valid = 1
 	</select>
 
+	<select id="queryByStoreId" resultType="com.kmall.admin.entity.StoreExprActiveDto">
+		select
+		<include refid="storeActiveExpr" />
+		from mall2_express_address_info a
+		LEFT JOIN mall2_express_company b on a.courie_id = b.id
+		where a.store_id = #{storeId}
+		and a.is_valid = 1
+	</select>
+
 	<select id="queryStatus" resultType="com.kmall.admin.entity.AddressInfoEntity">
 		select
 		<include refid="addrInfo"></include>

+ 20 - 0
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -391,6 +391,26 @@
         </div>
     </div>
 </div>
+<script type="application/javascript">
+    let mailTypes = ["best", "yto"];
+    var strategies = {
+        "best": function(data){
+            return render_of_best(data);
+        },
+        "yto": function(data){
+            return render_of_yto(data);
+        }
+    };
+    for (let i = 0; i < mailTypes.length; i++) {
+        strategies[mailTypes[i]] = "";
+    }
+
+
+
+    var renderMailInfo = function(exprCode, data){
+        return strategies[exprCode](data);
+    };
+</script>
 <script src="${rc.contextPath}/statics/dist/js7_jsAddress.js"></script>
 <script src="${rc.contextPath}/js/sale/sale.js?_${date.systemTime}"></script>
 <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>

+ 20 - 4
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1276,11 +1276,11 @@ function openWebSocket() {
         //无法使用wss,浏览器打开WebSocket时报错
         //ws对应http、wss对应https。
         //kmall测试环境
-        // webSocket = new WebSocket("ws://183.62.225.124:8080/ws/server/"+storeId);
+        webSocket = new WebSocket("ws://183.62.225.124:8080/ws/server/"+storeId);
         //kmall正式环境
         // webSocket = new WebSocket("ws://8.135.102.238:8080//ws/server/"+storeId);
         //kmall本地环境
-        webSocket = new WebSocket("ws://127.0.0.1:9090//ws/server/"+163);
+        // webSocket = new WebSocket("ws://127.0.0.1:9090//ws/server/"+163);
         // webSocket = new WebSocket("wss://cb.k1net.cn/ws/server/"+storeId);
         if (webSocket.readyState === webSocket.CONNECTING) {
             console.log('1.连接正在打开......');
@@ -1519,6 +1519,22 @@ function getPrintContentOrder(ticket) {
     content += "关注CW大药房客服号,获取更多优惠信息"
     content += "</div>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+
+    // var strategies = {
+    //     "best": function(data){
+    //         return render_of_best(data);
+    //     },
+    //     "yto": function(data){
+    //         return render_of_yto(data);
+    //     }
+    // };
+    //
+    // var renderMailInfo = function(exprCode, data){
+    //     return strategies[exprCode](data);
+    // };
+    //
+    // renderMailInfo('best', ticket);
+
     // 面单打印
     content += `
     <div style="width: 100%; height: 82px; border: 1px solid black;">
@@ -1529,7 +1545,7 @@ function getPrintContentOrder(ticket) {
 
     <!-- 面单条码 -->
     <div style="width: 100%;height: 98px; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
-        <div style="width: 200px; height: 78px; overflow: hidden;">
+        <div style="width: 200px; height: 88px; overflow: hidden;">
             <img src='data:image/png;base64,${ticket.ticketMailInfo.exprNoBase64Img}' style='max-width:199px;' />
         </div>
     
@@ -1562,7 +1578,7 @@ function getPrintContentOrder(ticket) {
     </div>
     `;
     let box = "<div style='width: 100%; position: relative;'>";
-    for (var i = 0;i < ticket.goods.length; i++){
+    for (let i = 0;i < ticket.goods.length; i++){
         let topBorder = 0, bottomBorder = 0;
         // if (i === 0) {
         //     topBorder = "1px";

二进制
kmall-admin/src/main/webapp/statics/img/yto_logo.jpg