xian 5 лет назад
Родитель
Сommit
6ab5b878b7

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

@@ -84,6 +84,11 @@ public class AwaitSendController {
     private static List<LogisticsInfo> LOGISTICSINFO_LIST;
 
     /**
+     * 产品名称和UUID的映射关系 保存在REDIS中的前缀名称
+     */
+    private static final String CACHE_PRODUCT_NAME_TO_UUID_NAME = "UUID_PRODUCT_";
+
+    /**
      * 仓库查询待发货订单
      * @param request
      * @param salesOrder
@@ -254,15 +259,13 @@ public class AwaitSendController {
                                    HttpServletRequest request) {
         // 检查订单状态
         SalesOrder salesOrderInfo = salesOrderService.getSalesOrderById(salesId);
-        if(salesOrderInfo != null){
-            //查询封装售后维修编号
-            List<ComplaintDetectInfo> listDetect  = complaintDetectInfoService.listComplaintDetectBySalesId(salesOrderInfo.getSalesOrderId());
-            salesOrderInfo.setComplaintDetectInfoList(listDetect);
-        }
         assert salesOrderInfo != null;
         if (salesOrderInfo.getSalesShippingStatus() != 11) {
             return ResponseJson.getFAILURE().addResponseKeyValue("error","订单状态非通知配货,无法打印");
         }
+        // 查询封装售后维修编号
+        List<ComplaintDetectInfo> listDetect  = complaintDetectInfoService.listComplaintDetectBySalesId(salesOrderInfo.getSalesOrderId());
+        salesOrderInfo.setComplaintDetectInfoList(listDetect);
         // 检查仓库的发货人信息
         StoreShip storeShip = null;
         if(salesOrderInfo.getSalesStoreId() != null){
@@ -291,6 +294,7 @@ public class AwaitSendController {
         eOrderRequestData.Cost = (0.00);
         eOrderRequestData.OtherCost = (0.0);
         eOrderRequestData.Remark = salesId.toString();
+        eOrderRequestData.IsReturnPrintTemplate = 1;
         // 收件人信息
         String[] addrs = salesOrderInfo.getSalesAddressInfo().split(" ");
         if (addrs.length <= 3) {
@@ -327,8 +331,11 @@ public class AwaitSendController {
         int Goodsquantity = 0;
         for (SalesOrderItem temp : items) {
             goodName.append(temp.getProductAbbreviation())
-                    .append("(").append(temp.getColorAbbreviation()).append(")*")
-                    .append(temp.getItemNum()).append(";");
+                    .append("(")
+                    .append(temp.getColorAbbreviation())
+                    .append(")*")
+                    .append(temp.getItemNum())
+                    .append(";");
             if(temp.getColorIsWeight() != null){
                 colorIsWeight += temp.getColorIsWeight();
             }
@@ -349,10 +356,13 @@ public class AwaitSendController {
         }
         // 20181113增加需求:产品名称后面增加打印订单日期
         goodName.append("【D").append(DateTimeUtil.format(new Date(), "MMdd")).append("】");
-        String uuid = RedisUtils.get(orderId);
+        // 生成一个uuid对应订单的产品信息,因为第三方系统不会完整保存产品名称到电子面单,会导致无法拣货
+        String key = CACHE_PRODUCT_NAME_TO_UUID_NAME + orderId;
+        String uuid = RedisUtils.get(key);
         if(uuid == null){
             uuid = UUIDGenerator.getUUID().substring(0, 8);
-            RedisUtils.put(orderId,uuid);
+            RedisUtils.put(key,uuid);
+            RedisUtils.expire(key, DateTimeUtil.addDay(15));
         }
         // 增加产品信息
         Map<String, Object> product1 = new HashMap<String, Object>();
@@ -363,16 +373,13 @@ public class AwaitSendController {
         commodity.add(product1);
         eOrderRequestData.Commodity = (commodity);
         eOrderRequestData.Weight = (colorIsWeight/1000);
-
-        //如果支持字母件则按照子母件方式传值
+        //如果订单是字母件则按照子母件方式传值
        List<SalesOrder> orders = salesOrderService.listSublistCount(salesId);
         if(logisticsInfo.getLogisticsIsLashSingle() == 1 && orders != null && orders.size() > 0){
             eOrderRequestData.Quantity = (orders.size() + 1);
         }else{
-            eOrderRequestData.Quantity = (1);
+            eOrderRequestData.Quantity = 1;
         }
-
-        eOrderRequestData.IsReturnPrintTemplate = (1);
         try {
             // 向第三方系统【快递鸟】提交订单数据,第三方系统会检测订单是否重复
             String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
@@ -424,23 +431,20 @@ public class AwaitSendController {
                     JSONArray subTemplates = new JSONArray();
                     if(orders.size() == subPrintTemplates.size() && subPrintTemplates.size() == subOrders.size()){
                         // 整个产品的重量
-                        Double productWeight = 0.00;
                         SalesOrderItem it = new SalesOrderItem();
                         for(int i = 0 ;i < subPrintTemplates.size(); i++){
                             String subTemplate = subPrintTemplates.getString(i);
                             StringBuilder productName = new StringBuilder();
-                            int productsquantity = 0;
-
                             it.setItemOrderId(orders.get(i).getSalesId());
                             List<SalesOrderItem> its = salesOrderService.listSalesOrderItem(it);
                             for (SalesOrderItem temp : its) {
-                                productName.append(temp.getProductAbbreviation())
-                                        .append("(").append(temp.getColorAbbreviation()).append(")*")
-                                        .append(temp.getItemNum()).append(";");
-                                if(temp.getColorIsWeight() != null){
-                                    productWeight += temp.getColorIsWeight();
-                                }
-                                productsquantity += temp.getItemNum();
+                                productName
+                                        .append(temp.getProductAbbreviation())
+                                        .append("(")
+                                        .append(temp.getColorAbbreviation())
+                                        .append(")*")
+                                        .append(temp.getItemNum())
+                                        .append(";");
                             }
                             //替换产品名
                             subTemplate = subTemplate.replace(uuid, productName.toString());
@@ -449,8 +453,6 @@ public class AwaitSendController {
                             //替换备注
                             subTemplate = subTemplate.replace(salesId.toString(), orders.get(i).getSalesId().toString());
                             subTemplates.add(subTemplate);
-
-                            //修改订单状态
                             // 订单发货 : 仅针对已经通知通知配货的订单(如果已发货,此处不修改对应的订单数据)
                             SalesOrder order = new SalesOrder();
                             order.setSalesPostNum(subOrders.get(i).toString());
@@ -462,8 +464,6 @@ public class AwaitSendController {
                             if (msg == null || msg <= 0) {
                                 return ResponseJson.getFAILURE().addResponseKeyValue("error", "子订单状态非通知配货,无法打印");
                             }
-
-
                             File fileTwo = new File(dir.getAbsolutePath() + File.separator + orders.get(i).getSalesOrderId() + ".txt");
                             if (!fileTwo.createNewFile()) {
                                 return ResponseJson.getFAILURE().addResponseKeyValue("error", "创建子订单文件失败");
@@ -591,7 +591,7 @@ public class AwaitSendController {
                                  @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
                                  @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
         ResponseJson rj = ResponseJson.getFAILURE();
-        salesOrder.setSalesShippingStatus(11);      //salesShippingStatus
+        salesOrder.setSalesShippingStatus(11);
         salesOrder.setEndOrderNO(pageSize);
 
         // 分页获取订单信息(仓库只能查询已确认的订单)
@@ -606,9 +606,9 @@ public class AwaitSendController {
         StringBuffer ids = new StringBuffer();
         for (int i =0 ;i<salesOrderList.size();i++){
             if(i == 0){
-                ids.append("orderId=" + salesOrderList.get(i).getSalesId());
+                ids.append("orderId=").append(salesOrderList.get(i).getSalesId());
             }else{
-                ids.append("&orderId="+salesOrderList.get(i).getSalesId());
+                ids.append("&orderId=").append(salesOrderList.get(i).getSalesId());
             }
         }
         if(ids.length() < 1){