3 Commit-ok 5f68b903d0 ... 20a84e4478

Szerző SHA1 Üzenet Dátum
  wangxiaoming 20a84e4478 Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent 5 éve
  wangxiaoming b6c9f5e2db 1.新增京东仓库发货状态 5 éve
  wangxiaoming abfa878f7f 发货错误记录 5 éve
16 módosított fájl, 453 hozzáadás és 31 törlés
  1. 1 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  2. 1 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/OrderSyncLog.java
  3. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/ProductColor.java
  4. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  5. 9 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderSyncLogService.java
  6. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  7. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  8. 138 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  9. 183 20
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java
  10. 2 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productColorMapper.xml
  11. 17 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  12. 12 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderPlatformController.java
  13. 12 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  14. 5 2
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  15. 7 1
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl
  16. 36 1
      watero-rst-web/src/main/webapp/common/js/salesOrder/salesOrder.js

+ 1 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -22,7 +22,7 @@ public class SalesOrder implements Serializable {
     private Integer salesDiscountMoney;     //优惠金额
     private Integer salesPledgeMoney;       //押金金额
     private Integer salesRemainDeposit;     //待提取金额
-    private Integer salesStatus;            //确认状态  0(未确认)1(确认)2(挂起)3(作废)
+    private Integer salesStatus;            //确认状态  0(未确认)1(确认)2(挂起)3(作废) 4:京东自发
     private Integer salesSendType;          //送货方式 1:线下送货,2:物流发货
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

+ 1 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/order/OrderSyncLog.java

@@ -18,7 +18,7 @@ public class  OrderSyncLog  implements  Serializable {
     private Integer syncPlatId;
     //类型:1;拉取订单  2.发货
     private Integer syncLogType;
-    //更新模式 1:定时任务 2:手动同步 3:同步发货
+    //更新模式 1:定时任务 2:手动同步 3:同步发货到小亚通 4.同步状态到rst
     private Integer syncLogMode;
     //同步总数量
     private Integer syncLogRecentNum;

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/ProductColor.java

@@ -65,6 +65,8 @@ public class ProductColor implements Serializable {
 
     private Integer productIsSplit; //录入是否需要拆分  1需要 2不需要
 
+    private Integer colorIsJdAuto; //是否是京东仓发货: 1.京东仓自发  2.优尼雅工厂发货
+
     public String getProductName() {
         return productName;
     }
@@ -145,6 +147,14 @@ public class ProductColor implements Serializable {
         this.colorStatus = colorStatus;
     }
 
+    public Integer getColorIsJdAuto() {
+        return colorIsJdAuto;
+    }
+
+    public void setColorIsJdAuto(Integer colorIsJdAuto) {
+        this.colorIsJdAuto = colorIsJdAuto;
+    }
+
     public Date getColorCretaeTime() {
         return colorCretaeTime;
     }

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -46,6 +46,13 @@ public interface SalesOrderService {
     SalesOrder getSalesOrderByIdConcise(Integer salesId);
 
   /**
+     * 根据id查询订单信息 - 简洁
+     * @param salesOrder
+     * @return
+     */
+  List<SalesOrder> getSalesOrderListConcise(SalesOrder salesOrder);
+
+  /**
      * 根据订单id查询订单项信息
      * @param itemOrderId
      * @return

+ 9 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/OrderSyncLogService.java

@@ -44,9 +44,17 @@ public interface OrderSyncLogService {
     /**
      * 小亚通 - 拉取订单
      * @param type
+     * @param status all:为空表示全部  20表示只获取发货
      * @return Integer
      */
-    Integer syncXYTOrder(Integer type,Date creatTime);
+    Integer syncXYTOrder(Integer type,String status,Date creatTime);
+
+    /**
+     * 小亚通 - 同步订单状态
+     * @param salesId  小亚通订单id
+     * @return Integer
+     */
+    Integer syncXYTOrderPostNum(Integer salesId);
 
     /**
      * 小亚通 - 拉取订单-单个

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -126,6 +126,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    public List<SalesOrder> getSalesOrderListConcise(SalesOrder salesOrder){
+        return salesOrderMapper.getSalesOrderListConcise(salesOrder);
+    }
+
+    @Override
     public List<SalesOrderItem> getOrderItemListBySalesId(Integer itemOrderId) {
         return salesOrderMapper.getOrderItemListBySalesId(itemOrderId);
     }

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -30,6 +30,14 @@ public interface SalesOrderMapper {
      * @return
      */
     SalesOrder getSalesOrderByIdConcise(Integer salesId);
+
+    /**
+     * 根据id查询订单信息 - 简洁
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder> getSalesOrderListConcise(SalesOrder salesOrder);
+
     /**
      * 根据订单号查询订单信息 - 简洁
      * @param salesDealCode

+ 138 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -71,6 +71,141 @@
   </select>
 
     <!-- 根据id查询订单信息 -->
+  <select id="getSalesOrderListConcise" resultType="SalesOrder" parameterType="java.lang.Integer" >
+      select
+        t.*
+      from tb_rst_sales_order_info t
+      <where>
+          <if test="salesId!= null ">
+              AND t.sales_id = #{salesId}
+          </if>
+          <if test="salesOrderId != null and salesOrderId != ''">
+              AND t.sales_orderId = #{salesOrderId}
+          </if>
+          <if test="salesDealCode != null and salesDealCode != ''">
+              AND t.sales_deal_code= #{salesDealCode}
+          </if>
+          <if test="salesRemainDeposit!= null ">
+              AND t.sales_remain_deposit = #{salesRemainDeposit}
+          </if>
+          <if test="salesSendType!= null ">
+              AND t.sales_send_type = #{salesSendType}
+          </if>
+          <if test="salesPostNum != null and salesPostNum != ''">
+              AND t.sales_post_num like CONCAT ('%',#{salesPostNum},'%')
+          </if>
+          <if test="salesPostFirm != null and salesPostFirm != ''">
+              AND t.sales_post_firm like CONCAT ('%',#{salesPostFirm},'%')
+          </if>
+          <if test="salesAddressInfo != null and salesAddressInfo != ''">
+              AND t.sales_address_info like CONCAT ('%',#{salesAddressInfo},'%')
+          </if>
+          <if test="salesAddressTel != null and salesAddressTel != ''">
+              AND t.sales_address_tel like CONCAT ('%',#{salesAddressTel},'%')
+          </if>
+          <if test="salesAddressName != null and salesAddressName != ''">
+              AND t.sales_address_name like CONCAT ('%',#{salesAddressName},'%')
+          </if>
+          <if test="salesPayType!= null ">
+              AND t.sales_pay_type = #{salesPayType}
+          </if>
+          <if test="salesAdminRemark != null and salesAdminRemark != ''">
+              AND t.sales_admin_remark like CONCAT ('%',#{salesAdminRemark},'%')
+          </if>
+          <if test="salesUserRemark != null and salesUserRemark != ''">
+              AND t.sales_user_remark like CONCAT ('%',#{salesUserRemark},'%')
+          </if>
+          <if test="salesPayNumber != null and salesPayNumber != ''">
+              AND t.sales_pay_number like CONCAT ('%',#{salesPayNumber},'%')
+          </if>
+          <if test="salesStoreId!= null ">
+              AND t.sales_store_id = #{salesStoreId}
+          </if>
+          <if test="salesCompanyId!= null ">
+              AND t.sales_company_id = #{salesCompanyId}
+          </if>
+          <if test="salesType!= null ">
+              AND t.sales_type = #{salesType}
+          </if>
+          <if test="salesOrderStatus!= null ">
+              AND t.sales_order_status = #{salesOrderStatus}
+          </if>
+          <if test="salesStatus!= null ">
+              AND t.sales_status = #{salesStatus}
+          </if>
+          <if test="salesShippingStatus!= null ">
+              AND t.sales_shipping_status = #{salesShippingStatus}
+          </if>
+          <if test="salesDeliver!= null ">
+              AND t.sales_deliver = #{salesDeliver}
+          </if>
+          <if test="salesPayStatus!= null ">
+              AND t.sales_pay_status = #{salesPayStatus}
+          </if>
+          <if test="salesProcessStatus!= null ">
+              AND t.sales_process_status = #{salesProcessStatus}
+          </if>
+          <if test="salesIsSend!= null ">
+              AND t.sales_is_send = #{salesIsSend}
+          </if>
+          <if test="salesIsLocked!= null ">
+              AND t.sales_is_locked = #{salesIsLocked}
+          </if>
+          <if test="salesIsSeparate!= null ">
+              AND t.sales_is_separate = #{salesIsSeparate}
+          </if>
+          <if test="salesIsDownload!= null ">
+              AND t.sales_is_download = #{salesIsDownload}
+          </if>
+          <if test="salesIsShip!= null ">
+              AND t.sales_is_ship = #{salesIsShip}
+          </if>
+          <if test="salesProcessRefund!= null ">
+              AND t.sales_process_refund = #{salesProcessRefund}
+          </if>
+          <if test="salesWarrantyStatus!= null ">
+              AND t.sales_warranty_status = #{salesWarrantyStatus}
+          </if>
+          <if test="salesMainOrderId != null and salesMainOrderId != ''">
+              AND t.sales_main_order_id like CONCAT ('%',#{salesMainOrderId},'%')
+          </if>
+          <if test="salesBatchId != null and salesBatchId != ''">
+              AND t.sales_batch_id like CONCAT ('%',#{salesBatchId},'%')
+          </if>
+          <if test="salesAddType!= null ">
+              AND t.sales_add_type = #{salesAddType}
+          </if>
+          <if test="salesAdminId!= null ">
+              AND t.sales_admin_id = #{salesAdminId}
+          </if>
+          <if test="salesCustomerId!= null ">
+              AND t.sales_customer_id = #{salesCustomerId}
+          </if>
+          <if test="salesWarehouseId!= null ">
+              AND t.sales_warehouse_id = #{salesWarehouseId}
+          </if>
+          <if test="salesReturnStatus!= null ">
+              AND t.sales_return_status = #{salesReturnStatus}
+          </if>
+          <if test="salesAddressPostcode != null and salesAddressPostcode != ''">
+              AND t.sales_address_postcode like CONCAT ('%',#{salesAddressPostcode},'%')
+          </if>
+          <if test="salesPostageCost!= null ">
+              AND t.sales_postage_cost = #{salesPostageCost}
+          </if>
+          <if test="salesIsSublist!= null ">
+              AND t.sales_is_sublist = #{salesIsSublist}
+          </if>
+          <if test="salesBelongOrderId!= null ">
+              AND t.sales_belong_orderId = #{salesBelongOrderId}
+          </if>
+          <if test="salesExOrderId != null and salesExOrderId != ''">
+              AND t.sales_ex_orderId like CONCAT ('%',#{salesExOrderId},'%')
+          </if>
+      </where>
+  </select>
+
+    <!-- 根据id查询订单信息 -->
   <select id="getSalesOrderByIdConciseByDealCode" resultType="SalesOrder" parameterType="String" >
     select
         t.*
@@ -1226,6 +1361,9 @@
       <if test="salesProcessRefund != null">
           sales_process_refund = #{salesProcessRefund}
       </if >
+      <if test="salesDeliver != null">
+          sales_deliver = #{salesDeliver}
+      </if >
     </set>
     where sales_id = #{salesId}
     <if test="salesOldOrderStatus != null">

+ 183 - 20
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java

@@ -151,7 +151,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      */
     @Override
     @Transactional
-    public synchronized Integer syncXYTOrder(Integer type,Date creatTime) {
+    public synchronized Integer syncXYTOrder(Integer type,String sta,Date creatTime) {
         if(type == 1){
             SysConfig sysConfig = sysConfigMapper.getSysConfigAllLock(CONFIG_ID);
             Date date = new Date();
@@ -173,7 +173,6 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             }
         }
 
-
         OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
         if(orderSyncPlatform.getSyncPlatStatus() != 1){
             logger.info("小亚通接口已关闭!");
@@ -202,12 +201,14 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         conditionTypeList.add(endCreateTimeMap);
 
         //订单状态  只获取代发货的订单
-        Map<String,Object> statusTimeMap = new HashMap<>();
-        statusTimeMap.put("condType","orderStatus");     //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
-        String[] condValueStatuss = new String[1];
-        condValueStatuss[0] = "20"; //只查询待发货
-        statusTimeMap.put("condValue",condValueStatuss);//生成结束时间
-        conditionTypeList.add(statusTimeMap);
+        if(sta != null && !"".equals(sta)){
+            Map<String,Object> statusTimeMap = new HashMap<>();
+            statusTimeMap.put("condType","orderStatus");     //receiverName 收件人姓名 //receiverMobile收件人手机号码 //outOrderId原始订单号 //orderId系统订单号
+            String[] condValueStatuss = new String[1];
+            condValueStatuss[0] = sta; //只查询待发货
+            statusTimeMap.put("condValue",condValueStatuss);//生成结束时间
+            conditionTypeList.add(statusTimeMap);
+        }
 
         StringBuffer stringBuffer = new StringBuffer();
         Integer amountAllNum = 0;   //同步总数量
@@ -316,10 +317,161 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         return amountSuccessAllNum;
     }
 
+    @Override
+    public Integer syncXYTOrderPostNum(Integer salesId){
+        SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(salesId);
+        OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
+        Map<String,Object> paramsMap = new HashMap<>();
+        List<Map<String,Object>> conditionTypeList = new ArrayList<>();
+
+        String[] orderIds = {salesOrder.getSalesDealCode()};
+
+        Map<String,Object> orderIdMap = new HashMap<>();
+        orderIdMap.put("condType","orderId");
+        orderIdMap.put("condValue",orderIds);
+        conditionTypeList.add(orderIdMap);
+
+        boolean flag = true;
+
+        StringBuffer errorMsg = new StringBuffer();
+        errorMsg.append( "京东仓订单同步订单("+ salesOrder.getSalesDealCode() +")状态,京东订单号:"+ salesOrder.getSalesExOrderId() +",");
+
+        Map<String,Object> condMap = new HashMap<>();
+        condMap.put("pageNumber",1);
+        condMap.put("pageSize",20);
+        condMap.put("conditionType",conditionTypeList);
+        paramsMap.put("cond",condMap);
+        String json = this.syncXYT("IOrderService.query",paramsMap);
+        try {
+            JSONObject jsonObj = new JSONObject(json);//转化为json格式
+            String resultMsg = jsonObj.getString("result_msg");
+            if(resultMsg.equals("success")) {
+                JSONObject dataObj = jsonObj.getJSONObject("data");    //数据
+                JSONArray beanListArray = dataObj.getJSONArray("beanList");
+                if (beanListArray.length() > 0) {
+                    for (int i = 0; i < beanListArray.length(); i++) {
+                        JSONObject job = beanListArray.getJSONObject(i);
+                        Long otherOrderId = null;
+                        String otherExtOrderId = null;
+
+//                      JSONObject consigneeObj = job.getJSONObject("consignee");   //用户信息
+                        JSONObject infoObj = job.getJSONObject("info");   //订单基本信息
+//                      JSONArray itemsArray = job.getJSONArray("items");   //订单项基本信息
+
+                        //小亚通订单编号
+                        otherOrderId = infoObj.getLong("orderId");
+                        String otherOrderIdStr = String.valueOf(otherOrderId);
+                        if(!Objects.equals(salesOrder.getSalesDealCode(),otherOrderIdStr)){
+                            errorMsg.append("未查询到该订单!");
+                            flag = false;
+                            continue;
+                        }
+
+                        //订单状态::0 待支付;10 待成团;20 待发货;30 预售中;40 待审批;50 仓库代发货;60 已发货;70 已签收;80 已拒收;999 已作废
+                        Integer orderStatus = infoObj.getInt("orderStatus");
+                        if (60 == orderStatus) {
+                            JSONArray logisticsArray = null;
+                            if(job.has("logistics")){
+                                logisticsArray = job.getJSONArray("logistics");
+                            }
+                            if(logisticsArray.length() < 1){
+                                errorMsg.append("该订单发货异常!");
+                                flag = false;
+                                continue;
+                            }
+                            JSONObject logistics = logisticsArray.getJSONObject(0);
+
+                            String companyCode = logistics.getString("companyCode");
+                            String deliveryNo = logistics.getString("deliveryNo");
+
+                            SalesOrder so = new SalesOrder();
+                            switch (companyCode){
+                                case "2087":{
+                                    so.setSalesPostFirm("jd"); //快递公司
+                                    break;
+                                }
+                                case "STO":{
+                                    so.setSalesPostFirm("STO"); //快递公司
+                                    break;
+                                }
+                                default:{
+                                    so.setSalesPostFirm(companyCode);
+                                    break;
+                                }
+                            }
+                            so.setSalesPostNum(deliveryNo);   //快递单号
+                            so.setSalesId(salesId);
+                            so.setSalesStatus(1);
+                            so.setSalesShippingStatus(1);
+                            so.setSalesDeliver(2);
+                            Integer res = salesOrderMapper.updateSalesOrder(so);
+                            if(res > 0){
+                                //添加操作跟踪信息
+                                OrderTracking orderTracking = new OrderTracking();
+                                orderTracking.setAdminId(1);
+                                orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
+                                orderTracking.setTrackingDesc("发货(同步京东仓发货信息)");
+                                salesOrderService.addTracking(orderTracking);
+                            }
+                        }else if(80 == orderStatus){
+                            errorMsg.append("该订单已被拒收!");
+                            flag = false;
+                            continue;
+                        }else if(999 == orderStatus){
+                            //如果该订单已作废,那么本系统将跟随作废
+                            SalesOrder so = new SalesOrder();
+                            so.setSalesId(salesOrder.getSalesId());
+                            so.setSalesStatus(3);
+                            Integer res = salesOrderService.updateSalesOrder(so);
+                            if(res > 0){
+                                //添加操作跟踪信息
+                                OrderTracking orderTracking = new OrderTracking();
+                                orderTracking.setAdminId(1);
+                                orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
+                                orderTracking.setTrackingDesc("作废订单(同步第三方系统状态已作废)");
+                                salesOrderService.addTracking(orderTracking);
+                            }
+                            errorMsg.append("该订单已被作废,系统自动作废!");
+                            flag = false;
+                            continue;
+                        }else{
+                            continue;
+                        }
+                    }
+                }else{
+                    errorMsg.append("未查询到该订单");
+                    flag = false;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        errorMsg.append("<br>");
+
+        if(!flag){
+            OrderSyncLog orderSyncLog = new OrderSyncLog();
+            orderSyncLog.setSyncPlatId(orderSyncPlatform.getSyncPlatId());
+            orderSyncLog.setSyncLogType(1);
+            orderSyncLog.setSyncLogMode(4);
+            orderSyncLog.setSyncLogRecentNum(1); //同步总数量
+            orderSyncLog.setSyncLogErrorNum(1); //同步失败数量
+            orderSyncLog.setSyncLogMsg("同步状态");   //备注
+            if(!errorMsg.toString().equals("")){
+                String newErrorMsg = errorMsg.toString();
+                if(newErrorMsg.length() > 5000){
+                    newErrorMsg.substring(0,4999);
+                }
+                orderSyncLog.setSyncLogErrorMsg(newErrorMsg);  //失败信息
+            }
+            orderSyncLogMapper.save(orderSyncLog);
+        }
+        return null;
+    }
+
     /**
      * 单个订单拉取
      * @param type
-     * @param orderId  小亚通订单账号
+     * @param orderId  小亚通订单id
      * @return
      */
     @Override
@@ -603,13 +755,21 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
 
             if(salesOrderItemList==null || salesOrderItemList.size()<1){
                 logger.info("小亚通发货失败,未查询到订单信息!");
+                errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:未查询到订单信息;");
                 continue;
             }
 
             HashSet<Long> itemIdSet = new HashSet();
-            for (SalesOrderItem salesOrderItem:salesOrderItemList) {
-                Long otherItemId =  Long.valueOf(salesOrderItem.getItemOtherId());
-                itemIdSet.add(otherItemId);
+            try{
+                for (SalesOrderItem salesOrderItem:salesOrderItemList) {
+                    Long otherItemId =  Long.valueOf(salesOrderItem.getItemOtherId());
+                    itemIdSet.add(otherItemId);
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+                logger.info("小亚通发货失败,订单项没有商城订单项Id!");
+                errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:订单项没有商城订单项Id;");
+                continue;
             }
 
             Long[] itemIds = new Long[itemIdSet.size()];
@@ -852,7 +1012,6 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                         salesOrder.setSalesDealCode(String.valueOf(otherOrderId));  //小亚通订单编号
                         salesOrder.setSalesExOrderId(otherExtOrderId);
 
-
                         //平台 SELF- 自身
                         //有赞平台:KDT  虚拟店铺:OFFLINE  天猫:TMALL  微店:WEIDIAN  京东:JD  阿里巴巴:1688  微盟微商城:WEIMENGWSC
                         //有量平台:YOULIANG  拼多多:PINDUODUO  楚楚街:CHUCHUJIE  蘑菇街:MGJ  美丽说:MLS  贝贝网:BEIBEI  云集:YUNJI
@@ -875,15 +1034,15 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                             }
                             case "JD":{
                                 //JD店铺id:100206182446
-                                salesOrder.setSalesStoreId(40);     //天猫爱贝源旗舰店
+                                salesOrder.setSalesStoreId(40);     //京东
                                 salesOrder.setSalesCompanyId(1);    //深圳爱贝源
-                                salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
+                                salesOrder.setSalesPayType(1);
                                 break;
                             }
                             case "OFFLINE": //小亚通虚拟店铺
                             default:
-                                salesOrder.setSalesStoreId(124);     //天猫爱贝源旗舰店
-                                salesOrder.setSalesCompanyId(1);    //深圳爱贝源
+                                salesOrder.setSalesStoreId(124);     //虚拟店铺
+                                salesOrder.setSalesCompanyId(1);    //
                                 salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
                                 break;
                         }
@@ -1069,7 +1228,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                         salesOrder.setSalesIsSend(0);//是否通知配货0:否1:是
                         salesOrder.setSalesIsLocked(0);//是否锁定0:否1:是
                         salesOrder.setSalesIsSeparate(0);//是否缺货0:否1:是
-                        salesOrder.setSalesStatus(0);  //确认状态0(未确认)
+                        salesOrder.setSalesStatus(0);  //确认状态0(未确认) -- 在订单项判断中,可能会变成京东仓库自发状态
                         salesOrder.setSalesShippingStatus(0);////发货状态0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货)11(已通知配货,后加)
                         salesOrder.setSalesDeliver(1);  //出库状态1:未出库2:已出库
                         salesOrder.setSalesAdminId(1);   //录入人id
@@ -1094,12 +1253,16 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                                 break;
                             }
 
+                            if(productColor.getColorIsJdAuto() == 1 && salesOrder.getSalesStoreId() == 40){
+                                //京东仓自发 && 京东店铺
+                                salesOrder.setSalesStatus(4);  //4:京东自发
+                            }
+
                             Long orderItemId = item.getLong("orderItemId"); //小亚通订单项编号
                             Integer num = item.getInt("num"); //数量
                             Long totalFeeLong = item.getLong("totalFee"); //应付金额是指:购买数量的总应付金额
                             Integer totalFeeInt = totalFeeLong.intValue();
 
-
                             if(productColor.getProductIsSplit() == 1){
                                 List<ProductCombinatInfo> productCombinatList = productMapper.combinatList(productColor.getColorProductId());
                                 if(productCombinatList == null || productCombinatList.size() < 1){
@@ -1384,7 +1547,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                         salesOrderService.addTracking(orderTracking);
                         amountSuccessNum++;
                     }catch (Exception e){
-                        errorMsg.append(otherOrderId+"添加订单失败,失败原因"+ e.getMessage() +";");
+                        errorMsg.append(otherOrderId+"添加订单失败,失败原因"+ e.getMessage() +";</br>");
                         e.printStackTrace();
                         logger.info("XYT拉取订单-添加订单错误-错误信息:"+e.getMessage());
                     }

+ 2 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productColorMapper.xml

@@ -32,7 +32,8 @@
         t.color_is_machine,
         t.color_mode,
         t.color_jd_product_id,
-        t.color_is_weight
+        t.color_is_weight,
+        t.color_is_jd_auto
     </sql>
     <select id="getProductColorList" resultMap="BaseResultMap" parameterType="ProductColor" >
         select

+ 17 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -631,8 +631,24 @@ public class MQTask implements InitializingBean {
 	@Scheduled(cron = "0 0/10 * * * ?")//每十分钟执行一次
 	public void syncXytOrder(){
 		logger.info("-----定时拉取小亚通订单-开始----");
-		Integer num = orderSyncLogService.syncXYTOrder(1,null);
+		Integer num = orderSyncLogService.syncXYTOrder(1,"20",null);
 		logger.info("-----定时拉取小亚通订单,拉取订单数量:"+ num +"-结束----");
 	}
 
+	/**
+	 * 同步拉取京东自发订单的发货单号
+	 */
+//	@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
+	@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+	public void syncXytOrderPostNum(){
+		logger.info("-----定时拉取拉取京东自发订单的发货状态-开始----");
+		SalesOrder salesOrder = new SalesOrder();
+		salesOrder.setSalesStatus(4);
+		List<SalesOrder> salesOrderList = salesOrderService.getSalesOrderListConcise(salesOrder);
+		for (SalesOrder so:salesOrderList) {
+			orderSyncLogService.syncXYTOrderPostNum(so.getSalesId());
+		}
+		logger.info("-----定时拉取拉取京东自发订单的发货状态-结束----");
+	}
+
 }

+ 12 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderPlatformController.java

@@ -73,7 +73,18 @@ public class AdminOrderPlatformController {
     public ResponseJson pullOrder(HttpServletRequest request){
         Calendar calendar = Calendar.getInstance();
         calendar.set(2019,2,4);
-        Integer num = orderSyncLogService.syncXYTOrder(2,calendar.getTime());
+        Integer num = orderSyncLogService.syncXYTOrder(2,"20",calendar.getTime());
+        ResponseJson rj = new ResponseJson();
+        rj.setResultMsg("已同步"+num+"个订单");
+        return  rj;
+    }
+
+    @ResponseBody
+    @RequestMapping("/pull_all")
+    public ResponseJson pullAll(HttpServletRequest request){
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(2019,2,4);
+        Integer num = orderSyncLogService.syncXYTOrder(2,"",calendar.getTime());
         ResponseJson rj = new ResponseJson();
         rj.setResultMsg("已同步"+num+"个订单");
         return  rj;

+ 12 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -1320,8 +1320,19 @@ public class AdminSalesOrderController {
         List<SalesOrder> salesOrderList = salesOrderService.getSalesOrderByIds(salesOrderIds);
 
         for (SalesOrder so : salesOrderList) {
-            if(so.getSalesStatus() != 0 && so.getSalesStatus() != 3){
+            if(so.getSalesStatus() == 1){
                 errorId += so.getSalesDealCode() + ":该订单已确认!;";
+                continue;
+            }
+
+            if(so.getSalesStatus() == 2 || so.getSalesStatus() == 3){
+                errorId += so.getSalesDealCode() + ":该订单已挂起或已作废!;";
+                continue;
+            }
+
+            if(so.getSalesStatus() == 4){
+                errorId += so.getSalesDealCode() + ":该订单为京东自发,无需确认!;";
+                continue;
             }
 
             if(generateKeyUtil.isXytBatchId(so.getSalesBatchId())){

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

@@ -96,6 +96,7 @@
                     >确认</option>
                     <option value ="2" <#if salesOrder.salesStatus??><#if salesOrder.salesStatus == 2 >selected="selected"</#if></#if>>挂起</option>
                     <option value ="3" <#if salesOrder.salesStatus??><#if salesOrder.salesStatus == 3 >selected="selected"</#if></#if>>作废</option>
+                    <option value ="4" <#if salesOrder.salesStatus??><#if salesOrder.salesStatus == 4 >selected="selected"</#if></#if>>京东自发</option>
                 </select>
 
                 <select  class="chosen" name="salesStoreId" id="salesStoreId" style="height: 30px;width: 9%;margin: 0px;margin-bottom: 10px;"">
@@ -252,6 +253,8 @@
                             挂起
                         <#elseif order.salesStatus == 3>
                             <span style="color: #dd0000">作废</span>
+                        <#elseif order.salesStatus == 4>
+                            <span  title="京东仓自发,无需做任何操作!">京东自发</span>
                         </#if>
                     </td>
                     <td>
@@ -415,9 +418,9 @@
                var orderStatus = status[0];
                // 出库状态  1:未出库、2:已出库
                var deliverStatus = status[1];
-               // 确认状态  0:未确认、1:确认、2:挂起、3:作废
+               // 确认状态  0:未确认、1:确认、2:挂起、3:作废 4:京东自发
                var confimStatus = status[2];
-               if (confimStatus == "2" || confimStatus == "3") {
+               if (confimStatus == "2" || confimStatus == "3" || confimStatus == "4") {
                    // 挂起、作废
                    tr.find(".order_details_target").show();
                } else {

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

@@ -240,7 +240,9 @@
                             <#list order.salesOrderItemList as item>
                                 <tr class="text-c">
                                     <input type="hidden" class="item_id" id="" value="${item.itemId}">
+                                    <input type="hidden" class="item_other_id" id="" value="${item.itemOtherId}">
                                     <input type="hidden" class="color_id" id="" value="${item.itemColorId}">
+                                    <input type="hidden" class="item_color_bar" id="" value="${item.itemColorBar}">
                                     <input type="hidden" class="color_price" id="" value="${((item.itemProductPrice/100)?string("0.##"))!''}" >
                                     <input type="hidden" class="color_discount" id="" value="${((item.itemProductDiscount/100)?string("0.##"))!''}" >
                                     <input type="hidden" class="item_total" <#if orderType==1 || orderType==3 > readonly="readonly" isUpdate="2"<#else> isUpdate="1"</#if> id="" value="${((item.itemTotal/100)?string("0.##"))!''}" >
@@ -248,7 +250,8 @@
                                     <td>${item.itemProductColor}</td>
                                     <td>${((item.itemProductPrice/100)?string("0.##"))!''}</td>
                                     <td>${((item.itemProductDiscount/100)?string("0.##"))!''}</td>
-                                    <td style="width: 40px;display: none;"><input type="hidden" class="input-text input-number item_cost decimal_input" style="text-align: center;" value="${((item.itemCost/100)?string("0.##"))!''}"  name="" id="" placeholder="成本价" onkeyup="keyFunDecimal($(this),9999999,0)" myMinVal="0" myMaxVal="9999999"></td>                                    <td>${item.itemColorBar}</td>
+                                    <td style="width: 40px;display: none;"><input type="hidden" class="input-text input-number item_cost decimal_input" style="text-align: center;" value="${((item.itemCost/100)?string("0.##"))!''}"  name="" id="" placeholder="成本价" onkeyup="keyFunDecimal($(this),9999999,0)" myMinVal="0" myMaxVal="9999999"></td>
+                                    <td>${item.itemColorBar}</td>
                                     <td style="width: 30px;">
                                         <input type="text"
                                                class="input-text input-number item-num"
@@ -373,6 +376,9 @@
     //所选店铺是否自营 1:自营 2:非自营
     var dealerSelfOperated = 0;
 
+    //订单项个数
+    var itemNum = $("#add_product").find("tr").length;
+
     $("#salesCompanyId").change(function(){
         var id = $("#salesCompanyId").val();
         setStore(id);

+ 36 - 1
watero-rst-web/src/main/webapp/common/js/salesOrder/salesOrder.js

@@ -2,6 +2,8 @@
 var allCustomerId = "";
 
 
+//删除节点-保存对应删除的节点信息 -- 只有修改页面使用
+var deleteArray = new Array();
 
 /**
  * 打开商品列表
@@ -113,6 +115,7 @@ $(function(){
             $("#add_product").find("tr").each(function(){
                 var orderItem = new Object();
                 orderItem.itemId = cufte($(this).find(".item_id").val());
+                orderItem.itemOtherId = cufte($(this).find(".item_other_id").val());
                 orderItem.itemColorId = $(this).find(".color_id").val();
                 orderItem.itemNum = $(this).find(".item-num").val();
                 orderItem.itemProductPrice = accMul($(this).find(".color_price").val(),100);
@@ -335,7 +338,6 @@ function setSelectCustomer(customerId){
                                 ' <td>'+ cufte(detet.colorName) +'</td>' +
                                 ' </tr>';
                         }
-
                     }
                     $("#detect_product").html(html);
                 }
@@ -402,8 +404,31 @@ function setSelectProduct(colorIds){
                     // if(data.returnMsg.dealerSelfOperated == 2){
                     //     priceHide = 'readonly="readonly"';
                     // }
+
                     for(var i=0;i<data.returnMsg.productColorList.length;i++){
                         var productColor = data.returnMsg.productColorList[i];
+
+                        var newItemOtherId = "";
+                        //如果是删除了新加的,应该将以前的小亚通的id赋值上去 -- 此处将考虑很多种情况
+                        if(isEmpty(deleteArray) && deleteArray.length > 0){
+                            //如果添加的颜色,是刚刚删除的颜色,那么直接赋值
+                            for(var i=0;i<deleteArray.length;i++){
+                                var obj = deleteArray[i];
+                                if(obj.itemColorBar == productColor.colorBar){
+                                    newItemOtherId = obj.itemotherid;
+                                }
+                            }
+                            if(isEmpty(itemNum) && itemNum == 1){
+                                newItemOtherId = deleteArray[0].itemotherid;
+                            }
+                        }else{
+                            //未删除任何颜色,就添加产品,则跟随这订单
+                            var oldItemOtherId  = $("#add_product").find("tr").find(".item_other_id").val();
+                            if(isEmpty(oldItemOtherId)){
+                                newItemOtherId = oldItemOtherId;
+                            }
+                        }
+
                         var discount = accDiv(productColor.colorDiscount,100);
                         /*html += '<tr class="text-c">' +
                             '<input type="hidden" class="color_id" id="" value="'+ productColor.colorId +'" >' +
@@ -418,6 +443,7 @@ function setSelectProduct(colorIds){
                             ' </tr>';*/
                         html += '<tr class="text-c">' +
                             '<input type="hidden" class="color_id" id="" value="'+ productColor.colorId +'" >' +
+                            '<input type="hidden" class="item_other_id" id="" value="'+ newItemOtherId +'" >' +
                             '<input type="hidden" class="color_price" id="" value="'+ accDiv(productColor.colorPrice,100) +'" >' +
                             '<input type="hidden" class="color_discount" id="" value="'+ accDiv(productColor.colorDiscount,100) +'" >' +
                             '<input type="hidden" class="item_total" isUpdate="1" id="" value="'+ accDiv(productColor.colorDiscount,100) +'" >' +
@@ -448,6 +474,15 @@ function setSelectProduct(colorIds){
  *  删除商品
  */
 function delProduct($this){
+    var itemOtherId = $this.parents("tr").find(".item_other_id").val();
+    var itemColorBar = $this.parents("tr").find(".item_color_bar").val();
+    if(isEmpty(itemOtherId)){
+        var obj = new Object();
+        obj.itemotherid = itemOtherId;
+        obj.itemColorBar = itemColorBar;
+        deleteArray.push(obj);
+    }
+
     $this.parents("tr").remove();
     calculatePrice();
 }