Browse Source

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

liujiankang 5 years ago
parent
commit
2b301f863f
24 changed files with 940 additions and 67 deletions
  1. 1 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  2. 13 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. 20 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. 141 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  9. 256 23
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java
  10. 5 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderSyncLogMapper.xml
  11. 18 6
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productColorMapper.xml
  12. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysConfigMapper.java
  13. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysConfigMapper.xml
  14. 17 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  15. 92 12
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderPlatformController.java
  16. 12 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  17. 29 10
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  18. 7 1
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl
  19. 163 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/sync/order_sync.ftl
  20. 17 4
      watero-rst-web/src/main/webapp/WEB-INF/views/product/add_product.ftl
  21. 20 3
      watero-rst-web/src/main/webapp/WEB-INF/views/product/update_product.ftl
  22. 24 1
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machine/machine_print_List.ftl
  23. 27 0
      watero-rst-web/src/main/webapp/common/js/product/product.js
  24. 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")

+ 13 - 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;
@@ -32,6 +32,10 @@ public class  OrderSyncLog  implements  Serializable {
     @DateTimeFormat( pattern = "yyyy-MM-dd HH:mm:ss" )
     @JsonFormat ( pattern = "yyyy-MM-dd", timezone = "GMT+8" )
     private Date syncLogCreateDate;
+
+    //平台名称
+    private String syncPlatName;
+
     public Integer getSyncLogId(){
         return syncLogId;
     }
@@ -86,4 +90,12 @@ public class  OrderSyncLog  implements  Serializable {
     public void setSyncLogCreateDate(Date syncLogCreateDate){
         this.syncLogCreateDate = syncLogCreateDate;
     }
+
+    public String getSyncPlatName() {
+        return syncPlatName;
+    }
+
+    public void setSyncPlatName(String syncPlatName) {
+        this.syncPlatName = syncPlatName;
+    }
 }

+ 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

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

@@ -1,6 +1,7 @@
 package com.iamberry.rst.faces.order;
 
 import com.iamberry.rst.core.order.OrderSyncLog;
+import com.iamberry.rst.core.page.PagedResult;
 
 import java.util.Date;
 import java.util.List;
@@ -17,6 +18,16 @@ public interface OrderSyncLogService {
      * @return List
      */
     List<OrderSyncLog> getSyncLogList(OrderSyncLog orderSyncLog);
+
+    /**
+     * 页面
+     * @param pageNO
+     * @param pageSize
+     * @param orderSyncLog
+     * @param isTotalNum
+     * @return
+     */
+    PagedResult<OrderSyncLog> listOrderSyncLogPage(int pageNO, int pageSize, OrderSyncLog orderSyncLog, boolean isTotalNum);
     /**
      * 查询单条数据
      * @param  id
@@ -33,9 +44,17 @@ public interface OrderSyncLogService {
     /**
      * 小亚通 - 拉取订单
      * @param type
+     * @param status all:为空表示全部  20表示只获取发货
+     * @return Integer
+     */
+    Integer syncXYTOrder(Integer type,String status,Date creatTime);
+
+    /**
+     * 小亚通 - 同步订单状态
+     * @param salesId  小亚通订单id
      * @return Integer
      */
-    Integer syncXYTOrder(Integer type,Date creatTime);
+    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

+ 141 - 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">
@@ -1952,6 +2090,9 @@
             <if test="salesReturnGoods != null and salesReturnGoods == 2">
                 AND  oi.item_return_num <![CDATA[>]]> 0
             </if>
+            <if test="salesExOrderId != null">
+                AND tt.sales_ex_orderId = #{salesExOrderId}
+            </if>
             <if test="salesPostNum !=null and salesPostNum !=''">
                 AND tt.sales_post_num = #{salesPostNum}
             </if>

+ 256 - 23
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderSyncLogServiceImpl.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.order;
 
+import com.github.pagehelper.PageHelper;
 import com.iamberry.app.tool.util.MD5;
 import com.iamberry.rst.core.address.City;
 import com.iamberry.rst.core.address.District;
@@ -9,6 +10,8 @@ import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.dm.DealerChannel;
 import com.iamberry.rst.core.dm.DealerProduct;
 import com.iamberry.rst.core.order.*;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.SysConfig;
 import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.address.AddressService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
@@ -22,7 +25,9 @@ import com.iamberry.rst.service.order.mapper.OrderSyncLogMapper;
 import com.iamberry.rst.service.order.mapper.OrderSyncPlatformMapper;
 import com.iamberry.rst.service.product.mapper.ProductColorMapper;
 import com.iamberry.rst.service.product.mapper.ProductMapper;
+import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.GenerateKeyUtil;
+import com.iamberry.rst.util.PageUtil;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.methods.HttpPost;
@@ -35,10 +40,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -74,6 +81,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
     private AddressService addressService;
     @Autowired
     private ProductMapper productMapper;
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
 
     //Map最大容量
     static int maxSize = 20;
@@ -93,6 +102,10 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         return orderSyncPlatformMapper.getSyncPlatformById(XYT_ID);
     }
 
+    //配置小亚通拉取订单时间参数设置id
+    private static final Integer CONFIG_ID = 9;
+    SimpleDateFormat SYS_CONFIG_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
 
     /**
      * 获取集合
@@ -104,6 +117,13 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
         return  orderSyncLogMapper.getSyncLogList(orderSyncLog);
     }
 
+    @Override
+    public PagedResult<OrderSyncLog> listOrderSyncLogPage(int pageNO, int pageSize,OrderSyncLog orderSyncLog, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        List<OrderSyncLog> list = orderSyncLogMapper.getSyncLogList(orderSyncLog);
+        return PageUtil.getPage(list);
+    }
+
     /**
      * 查询单条数据
      * @param  id
@@ -130,7 +150,29 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      * @return
      */
     @Override
-    public synchronized Integer syncXYTOrder(Integer type,Date creatTime) {
+    @Transactional
+    public synchronized Integer syncXYTOrder(Integer type,String sta,Date creatTime) {
+        if(type == 1){
+            SysConfig sysConfig = sysConfigMapper.getSysConfigAllLock(CONFIG_ID);
+            Date date = new Date();
+            try {
+                date = SYS_CONFIG_SDF.parse(sysConfig.getConfigRemarks());
+            } catch (ParseException e) {
+                e.printStackTrace();
+                logger.info("获取配置文件失败!");
+                return 0;
+            }
+            Long timeDifference = date.getTime() - new Date().getTime();
+            timeDifference = Math.abs(timeDifference);
+            if(timeDifference < 270000){
+                Integer configParameter = Integer.valueOf(sysConfig.getConfigParameter());
+                if(2 == configParameter){
+                    logger.info("该定时任务已经运行!");
+                    return 0;
+                }
+            }
+        }
+
         OrderSyncPlatform orderSyncPlatform =  getXYTPlatform();
         if(orderSyncPlatform.getSyncPlatStatus() != 1){
             logger.info("小亚通接口已关闭!");
@@ -159,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;   //同步总数量
@@ -218,13 +262,25 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             orderSyncLog.setSyncLogErrorMsg(newErrorMsg);  //失败信息
         }
         //因为系统每10分钟拉取一次订单,日志过多,所以在此控制,没有必要的日志,没有必要录入
-        if(orderSyncLog.getSyncLogRecentNum() != 0){
+        if(type == 1){
+            if(orderSyncLog.getSyncLogRecentNum() != 0){
+                //该条查询当天最近的一条日志,与当前日志想匹配,如果错误相同,则不处理,如果不相同与添加日志,进一步节省sql存储空间
+                OrderSyncLog osl = orderSyncLogMapper.getSyncLogLast(orderSyncPlatform.getSyncPlatId());
+                if(osl != null && orderSyncLog.getSyncLogErrorMsg() != null){
+                    if(!orderSyncLog.getSyncLogErrorMsg().equals(osl.getSyncLogErrorMsg())){
+                        orderSyncLogMapper.save(orderSyncLog);
+                    }
+                }else{
+                    orderSyncLogMapper.save(orderSyncLog);
+                }
+            }
+        }else{
             orderSyncLogMapper.save(orderSyncLog);
         }
 
         if(type == 1){
             //刷新定会任务最新获取时间-小亚通订单生成之后还需要审核操作,所以中间会存在时间差导致订单拉取不过来,
-            // 因此时间不会及时刷新,考虑到系统等问题,因为时间调整每晚12点刷新拉取时间
+            // 因此时间不会及时刷新,考虑到系统等问题,因为时间调整7天前的时间
             Calendar endCreateTimeCalendar = Calendar.getInstance();
             endCreateTimeCalendar.setTime(orderSyncPlatform.getSyncOrderLastTime());
             endCreateTimeCalendar.add(Calendar.DATE, 7);//增加7天
@@ -236,7 +292,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                 newDateCalendar.set(Calendar.HOUR_OF_DAY,0);
                 newDateCalendar.set(Calendar.MINUTE,0);
                 newDateCalendar.set(Calendar.SECOND,0);
-                newDateCalendar.add(Calendar.DATE, -1);
+                newDateCalendar.add(Calendar.DATE, -7);
                 endCreateTime = newDateCalendar.getTime();
                 orderSyncPlatform.setSyncOrderLastTime(endCreateTime);
 
@@ -246,13 +302,176 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                 orderSyncPlatformMapper.update(newOrderSyncPlatform);
             }
         }
+
+        if(type == 1){
+            //修改配置文件
+            Calendar newConfigDate = Calendar.getInstance();
+            newConfigDate.set(Calendar.SECOND,0);
+
+            SysConfig newSysConfig = new SysConfig();
+            newSysConfig.setConfigId(CONFIG_ID);
+            newSysConfig.setConfigParameter("2");
+            newSysConfig.setConfigRemarks(SYS_CONFIG_SDF.format(newConfigDate.getTime()));
+            sysConfigMapper.updateSysConfig(newSysConfig);
+        }
         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
@@ -509,6 +728,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
      */
     @Override
     public boolean syncXYTOrderShip(Integer[] salesOrderIds) {
+        boolean flag = true;
         Integer successNum = 0,errorNum = 0;
         StringBuffer allSb = new StringBuffer();
         StringBuffer errorSb = new StringBuffer();
@@ -535,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()];
@@ -594,10 +822,12 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
                     salesOrderService.update(shipSalesOrder);
                     successNum++;
                 }else{
+                    flag = false;
                     errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:"+shipResultJson+";");
                     errorNum++;
                 }
             }catch (Exception e){
+                flag = false;
                 errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:"+shipResultJson+";");
                 errorNum++;
                 e.printStackTrace();
@@ -623,7 +853,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
             }
             orderSyncLogMapper.save(orderSyncLog);
         }
-        return true;
+        return  flag;
     }
 
     @Override
@@ -782,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
@@ -805,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;
                         }
@@ -999,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
@@ -1024,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){
@@ -1314,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());
                     }

+ 5 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderSyncLogMapper.xml

@@ -23,7 +23,7 @@
         t.sync_log_error_msg,
         t.sync_log_create_date
     </sql>
-    <select id="getOrderSyncLogList" resultMap="BaseResultMap" parameterType="OrderSyncLog" >
+    <select id="getSyncLogList" resultMap="BaseResultMap" parameterType="OrderSyncLog" >
         select
         <include refid="Base_List" />
         from tb_rst_order_sync_log t
@@ -41,6 +41,7 @@
                 AND t.sync_log_mode = #{syncLogMode}
             </if>
         </where>
+        ORDER BY t.sync_log_id DESC
     </select>
     <select id="getSyncLogLast" resultMap="BaseResultMap" parameterType="Integer" >
         select
@@ -48,7 +49,10 @@
         from tb_rst_order_sync_log t
         where
         t.sync_plat_id = #{syncPlatId}
+        AND t.sync_log_mode = 1
+        AND date_format(t.sync_log_create_date,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
         ORDER BY t.sync_log_id DESC
+        LIMIT 1
     </select>
     <select id="getSyncLogById" resultMap="BaseResultMap" parameterType="OrderSyncLog" >
         select

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

@@ -15,6 +15,7 @@
         <result    column="color_update_time"    property="colorUpdateTime" />
         <result    column="color_is_machine"    property="colorIsMachine" />
         <result    column="color_is_weight"    property="colorIsWeight" />
+        <result    column="color_is_jd_auto"    property="colorIsJdAuto" />
         <result    column="inventory_good_product_num"    property="inventoryGoodProductNum" />
     </resultMap>
     <sql    id="Base_List" >
@@ -32,7 +33,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
@@ -94,7 +96,8 @@
         color_status,
         color_cretae_time,
         color_is_machine,
-        color_is_weight
+        color_is_weight,
+        color_is_jd_auto
         )
         values
         (
@@ -108,7 +111,8 @@
         #{colorStatus},
         #{colorCretaeTime},
         #{colorIsMachine},
-        #{colorIsWeight}
+        #{colorIsWeight},
+        #{colorIsJdAuto}
         )
     </insert>
     <update id="update" parameterType="ProductColor" >
@@ -146,7 +150,10 @@
                 color_is_machine = #{colorIsMachine},
             </if >
             <if test="colorIsWeight != null ">
-                color_is_weight = #{colorIsWeight}
+                color_is_weight = #{colorIsWeight},
+            </if >
+            <if test="colorIsJdAuto != null ">
+                color_is_jd_auto = #{colorIsJdAuto}
             </if >
         </set >
         where color_id= #{colorId}
@@ -172,7 +179,8 @@
         color_is_machine,
         color_jd_product_id,
         color_mode,
-        color_is_weight
+        color_is_weight,
+        color_is_jd_auto
         )
         values
         <foreach collection="list" item="node" index="index" separator="," open="" close="">
@@ -189,7 +197,8 @@
             #{node.colorIsMachine},
             #{node.colorJdProductId},
             #{node.colorMode},
-            #{node.colorIsWeight}
+            #{node.colorIsWeight},
+            #{node.colorIsJdAuto}
             )
         </foreach >
     </insert>
@@ -232,6 +241,9 @@
                 <if test="node.colorIsWeight != null ">
                     color_is_weight = #{node.colorIsWeight},
                 </if >
+                <if test="node.colorIsJdAuto != null ">
+                    color_is_jd_auto = #{node.colorIsJdAuto},
+                </if >
                 <if test="node.colorJdProductId != null and node.colorJdProductId != ''">
                     color_jd_product_id = #{node.colorJdProductId}
                 </if >

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysConfigMapper.java

@@ -10,6 +10,9 @@ public interface SysConfigMapper {
     //获取配置参数
     SysConfig getSysConfigAll(Integer configId);
 
+    //获取配置参数
+    SysConfig getSysConfigAllLock(Integer configId);
+
     //设置配置参数
     Boolean updateSysConfig(SysConfig sysConfig);
 

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysConfigMapper.xml

@@ -20,6 +20,15 @@
 		WHERE config_id = #{configId}
 	</select>
 
+	<!-- 获取配置参数 -->
+	<select id="getSysConfigAllLock" parameterType="Integer" resultType="SysConfig">
+		SELECT
+			*
+		FROM
+		tb_rst_sys_config
+		WHERE config_id = #{configId} FOR UPDATE
+	</select>
+
 	<update id="updateSysConfig" parameterType="SysConfig" >
 		update tb_rst_sys_config
 		<set >

+ 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("-----定时拉取拉取京东自发订单的发货状态-结束----");
+	}
+
 }

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

@@ -1,18 +1,30 @@
 package com.iamberry.rst.controllers.order;
 
 
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.order.OrderSyncLog;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.order.OrderSyncLogService;
 import com.iamberry.rst.faces.order.OrderSyncPlatformService;
+import com.iamberry.rst.util.GenerateKeyUtil;
+import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * 同步订单
@@ -27,13 +39,52 @@ public class AdminOrderPlatformController {
     private OrderSyncPlatformService orderSyncPlatformService;
     @Autowired
     private OrderSyncLogService orderSyncLogService;
+    @Autowired
+    private SalesOrderService salesOrderService;
+    @Autowired
+    private GenerateKeyUtil generateKeyUtil ;
+
+    /**
+     * 批次列表
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("salesOrder:sync:salesOrder")
+    @RequestMapping("/sync_list")
+    public ModelAndView syncList(HttpServletRequest request, OrderSyncLog orderSyncLog,
+                                         @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                         @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                         @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
+        ModelAndView mv = new ModelAndView("order/sync/order_sync");
+
+        PagedResult<OrderSyncLog> pagedResult = orderSyncLogService.listOrderSyncLogPage(pageNO, pageSize, orderSyncLog, totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+
+        StitchAttrUtil.getSa()
+                .addDatePro("yyyy-MM-dd HH:mm:ss", "startDate", "endDate","syncLogCreateDate")
+                .setModelAndView(orderSyncLog, mv, "/admin/sync_order/sync/sync_list", pagedResult);
+        return mv;
+    }
 
     @ResponseBody
     @RequestMapping("/pull")
     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;
@@ -55,20 +106,49 @@ public class AdminOrderPlatformController {
 
     @ResponseBody
     @RequestMapping("/send")
-    public ResponseJson sendOrder(HttpServletRequest request,Integer orderId){
+    public ResponseJson sendOrder(HttpServletRequest request,String salesExOrderId){
         ResponseJson rj = ResponseJson.getFAILURE();
-        Integer[] orderIds = new Integer[1];
-        orderIds[0] = orderId;
-        boolean flag = orderSyncLogService.syncXYTOrderShipInspec(orderId);
-        if(flag){
-            boolean shipFlag = orderSyncLogService.syncXYTOrderShip(orderIds);
-            if(shipFlag){
-                rj = ResponseJson.getSUCCESS();
-                rj.setResultMsg("上传单号成功");
-                return rj;
+        if(salesExOrderId == null || "".equals(salesExOrderId)){
+            rj.setResultMsg("请输入商家订单号");
+            return rj;
+        }
+
+        salesExOrderId = salesExOrderId.trim();
+
+        SalesOrder salesOrder = new SalesOrder();
+        salesOrder.setSalesExOrderId(salesExOrderId);
+        List<SalesOrder> salesOrderList = salesOrderService.salesOrderListAndItem(salesOrder);
+
+        if(salesOrderList != null && salesOrderList.size() > 0){
+            Set<Integer> set = new HashSet<>();
+            for (SalesOrder so:salesOrderList){
+                if(!generateKeyUtil.isXytBatchId(so.getSalesBatchId())){    //不是小亚通第三方的订单,直接通过,不走该程序
+                    rj.setResultMsg("发货失败,该订单不是小亚通的订单");
+                    return rj;
+                }
+                boolean flag = orderSyncLogService.syncXYTOrderShipInspec(so.getSalesId());
+                if(flag){
+                    set.add(so.getSalesId());
+                }
+            }
+            if(set.size() > 0){
+                Integer[] orderIds = set.toArray(new Integer[]{});
+                boolean shipFlag = orderSyncLogService.syncXYTOrderShip(orderIds);
+                if(shipFlag){
+                    rj = ResponseJson.getSUCCESS();
+                    rj.setResultMsg("上传单号成功");
+                    return rj;
+                }else{
+                    rj.setResultMsg("发货失败,请检查状态重试");
+                    return rj;
+                }
+            }else{
+                rj.setResultMsg("改订单检测发货未通过,请在RST和小亚通系统核对该订单状态");
+                return  rj;
             }
+        }else{
+            rj.setResultMsg("未查询到订单");
         }
-        rj.setResultMsg("上传订单失败");
         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())){

+ 29 - 10
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;"">
@@ -145,7 +146,7 @@
             <div style="width: 90%;margin-left: 10%;">
                 <#--<input type="text" class="my-input trim_input"  style="margin-top: -3px;text-indent: 1em;width:8.9%;margin-right: 0px;height: 28px;padding: 0px;" value="${salesOrder.salesOrderId!}" placeholder="订单号" name="salesOrderId" id="salesOrderId">-->
                 <input type="text" class="my-input trim_input"  style="margin-top: -3px;text-indent: 1em;width:8.9%;margin-right: 0px;height: 28px;padding: 0px;" value="${salesOrder.salesDealCode!}" placeholder="交易号" name="salesDealCode" id="salesDealCode">
-                <input type="text" class="my-input trim_input"  style="margin-top: -3px;text-indent: 1em;width:8.9%;margin-right: 0px;height: 28px;padding: 0px;" value="${salesOrder.salesExOrderId!}" placeholder="第三方订单号" name="salesExOrderId" id="salesExOrderId">
+                <input type="text" class="my-input trim_input"  style="margin-top: -3px;text-indent: 1em;width:8.9%;margin-right: 0px;height: 28px;padding: 0px;" value="${salesOrder.salesExOrderId!}" placeholder="商城编号" name="salesExOrderId" id="salesExOrderId">
 
                 <input type="text" class="my-input trim_input"  style="margin-top: -3px;width:8.9%;text-indent: 1em;margin-right: 0px;height: 28px;padding: 0px;" value="${salesOrder.salesBatchId!}" placeholder="订单批次号" name="salesBatchId" id="salesBatchId">
 
@@ -167,11 +168,14 @@
         <table class="table table-border table-bg table-bordered">
             <thead>
             <tr class="text-c">
-                <th width="16"><input type="checkbox" ></th>
-                <th width="50">订单类型</th>
+                <th width="13"><input type="checkbox" ></th>
+                <th width="30">类型</th>
                 <th width="60">交易号</th>
-                <th width="72">批次号</th>
-                <th width="72">下单管理员</th>
+                <#--<#if admin.adminDept==1 ||  admin.adminDept==2>-->
+                    <th width="69">商城编号</th>
+                <#--</#if>-->
+                <th width="68">批次号</th>
+                <th width="40">录入人</th>
                 <th width="75">姓名/电话</th>
                 <th width="100">收货地址</th>
                 <th width="50">是否打单</th>
@@ -181,7 +185,7 @@
                 <th width="50">用户备注</th>
                 <th width="50">产品</th>
                 <th width="65">创建时间</th>
-                <th width="50">操作</th>
+                <th width="80">操作</th>
             </tr>
             </thead>
             <tbody>
@@ -201,7 +205,20 @@
                             正常
                         </#if>
                     </td>
-                    <td>${order.salesDealCode!''}</td>
+                    <td>
+                        <#if (order.storeName)?? && (order.storeName?index_of("京东") != -1)>
+                            <img title="来自:${(order.storeName)!}" style="width: 20px;height: 20px" src="https://s.iamberry.com/rst/img/jd.png">
+                        <#elseif (order.storeName)?? && (order.storeName?index_of("天猫") != -1)>
+                            <img title="来自:${(order.storeName)!}" style="width: 20px;height: 20px" src="https://s.iamberry.com/rst/img/tm.png">
+                        <#elseif (order.storeName)?? && (order.storeName?index_of("淘宝") != -1)>
+                            <img title="来自:${(order.storeName)!}" style="width: 20px;height: 20px" src="https://s.iamberry.com/rst/img/tb.png">
+                        </#if>
+                        ${order.salesDealCode!''}
+                    </td>
+                    <#--<#if admin.adminDept==1 ||  admin.adminDept==2>-->
+                        <td>${order.salesExOrderId!''}</td>
+                    <#--</#if>-->
+
                     <td>${order.salesBatchId!''}</td>
                     <td>${order.salesAdminName!''}</td>
                     <td>${order.salesAddressName!''}${order.salesAddressTel!''}</td>
@@ -243,6 +260,8 @@
                             挂起
                         <#elseif order.salesStatus == 3>
                             <span style="color: #dd0000">作废</span>
+                        <#elseif order.salesStatus == 4>
+                            <span  title="京东仓自发,无需做任何操作!">京东自发</span>
                         </#if>
                     </td>
                     <td>
@@ -281,7 +300,7 @@
                         ${(order.salesCreateTime?string("yy-MM-dd"))!''}</br>
                         ${(order.salesCreateTime?string("HH:mm:ss"))!''}
                     </td>
-                    <td class="operating_td" style="min-width: 100px;">
+                    <td class="operating_td" style="">
                         <#if order.salesWarrantyStatus?? && order.salesWarrantyStatus != 0>
                             <#if order.salesProcessRefund?? && order.salesProcessRefund == 0>
                                 <a style="text-decoration:none" href="javascript:;" title="确认退款信息"
@@ -406,9 +425,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);

+ 163 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/sync/order_sync.ftl

@@ -0,0 +1,163 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+<#include "/base/list_base.ftl">
+    <title>订单同步</title>
+    <style>
+        html{-webkit-text-size-adjust:none;}
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-11.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #50a2ea;padding: 1px 25px;height: 32px;background-color: #fff;color: #50a2ea;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">/</span> 订单同步管理
+    <span class="c-gray en">/</span> 日志列表
+    <a class="btn radius r" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/order_batch/batch_list" method="post">
+            <button type="button" class="my-btn-search" onclick="sync_order_fun()" >拉取全部订单</button>
+
+
+            <input type="text" class="my-input trim_input" id="salesExOrderId" style="margin-top: -3px;width:118px;margin-left: 50px;height: 32px;padding: 0px 0px 0px 2px;" value="" placeholder="商城订单编号" />
+
+            <button type="button" class="my-btn-search" onclick="sync_order_send()" >发货</button>
+        </form>
+    </div>
+
+    <div class="mt-20">
+        <table class="table table-border table-bordered table-bg table-hover table-sort">
+        <thead>
+        <tr class="text-c">
+            <th width="40">同步类型</th>
+            <th width="30">总数量</th>
+            <th width="30">失败数量</th>
+            <th width="100">备注</th>
+            <th width="200">错误信息</th>
+            <th width="50">同步时间</th>
+        </tr>
+        </thead>
+        <tbody>
+            <#if page.dataList?? &&  (page.dataList?size > 0) >
+                    <#list page.dataList as orderSyncLog>
+                        <tr class="text-c">
+                            <#--<td>${orderSyncLog.syncPlatName!''}</td>-->
+                            <td>
+                                <#if orderSyncLog.syncLogMode == 1>
+                                    定时同步
+                                <#elseif orderSyncLog.syncLogMode == 2>
+                                    手动同步
+                                <#elseif orderSyncLog.syncLogMode == 3>
+                                    发货
+                                </#if>
+                            </td>
+                            <td>${orderSyncLog.syncLogRecentNum!''}</td>
+                            <td>${orderSyncLog.syncLogErrorNum!''}</td>
+                            <td>${orderSyncLog.syncLogMsg!''}</td>
+                            <td>${orderSyncLog.syncLogErrorMsg!''}</td>
+                            <td>${(orderSyncLog.syncLogCreateDate?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                        </tr>
+                    </#list>
+            <#else>
+                <tr><td colspan="9" class="td-manage text-c" >暂时没有日志,请添加!</td></tr>
+            </#if>
+        </tbody>
+    </table>
+    </div>
+</div>
+
+<tfoot>
+<#include "/base/page_util.ftl">
+</tfoot>
+<script>
+    $(function () {
+    });
+
+    /**
+     * 拉取订单
+     */
+    function sync_order_fun(){
+        var loadIndex = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+        $.ajax('${path}/admin/sync_order/pull?dates=' + new Date().getTime(), {
+            data: {},
+            dataType: 'json',
+            type: 'post',
+            timeout: 15000,
+            success: function(dt) {
+                layer.msg("拉取成功", {icon: 1, time: 3000});
+                if(loadIndex != 0 ){
+                    layer.close(loadIndex);
+                }
+                location.reload();
+            },
+            error: function(xhr, type, errorThrown) {
+                layer.msg("拉取失败,请重试!", {icon: 5, time: 3000});
+                if(loadIndex != 0 ){
+                    layer.close(loadIndex);
+                }
+            }
+        });
+    }
+
+    /**
+     * 订单发货
+     */
+    function sync_order_send(){
+        var salesExOrderId = $("#salesExOrderId").val();
+        if(!isEmpty(salesExOrderId)){
+            layer.msg("请输入商城订单编号", {icon: 2, time: 3000});
+            return false;
+        }
+        var loadIndex = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+        $.ajax('${path}/admin/sync_order/send?dates=' + new Date().getTime(), {
+            data: {
+                salesExOrderId:salesExOrderId
+            },
+            dataType: 'json',
+            type: 'post',
+            timeout: 15000,
+            success: function(dt) {
+                if(loadIndex != 0 ){
+                    layer.close(loadIndex);
+                }
+                var index = layer.alert(dt.resultMsg, function (index) {
+                    if (dt.returnCode == 200) {
+                        layer.close(index);
+                        location.reload();
+                    }else {
+                        layer.close(index);
+                        location.reload();
+                    }
+                });
+            },
+            error: function(xhr, type, errorThrown) {
+                layer.msg("发货失败,请重试!", {icon: 5, time: 3000});
+                if(loadIndex != 0 ){
+                    layer.close(loadIndex);
+                }
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 17 - 4
watero-rst-web/src/main/webapp/WEB-INF/views/product/add_product.ftl

@@ -220,6 +220,7 @@
                                 <th style="text-align: center;" width="10"><span class="c-red">*</span>重量(g)</th>
                                 <th style="text-align: center;" width="10">型号</th>
                                 <th style="text-align: center;" width="10"><span class="c-red">*</span>是否为水机</th>
+                                <th style="text-align: center;" width="10"><span class="c-red">*</span>发货仓库</th>
                                 <th style="text-align: center;" width="10"><span class="c-red">*</span>状态</th>
                                 <th style="text-align: center;" width="20">图片</th>
                                 <th style="text-align: center;" width="20">库存</th>
@@ -227,7 +228,7 @@
                             </tr>
                         </thead>
                         <tbody id="add_color_id">
-                            <tr><td colspan="13" class="td-manage text-c" >暂时没有颜色,请添加!</td></tr>
+                            <tr><td colspan="15" class="td-manage text-c" >暂时没有颜色,请添加!</td></tr>
                         </tbody>
                     </table>
 
@@ -295,14 +296,26 @@
 
                 <div class="row cl" id="" style="">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>是否为水机:</label>
-                    <div class="formControls col-5 col-sm-5 skin-minimal">
+                    <div class="formControls col-2 col-sm-2 skin-minimal">
                         <div class="radio-box">
                             <input type="radio" class="colorIsMachine" id="colorIsMachine-1" name="colorIsMachine" value="1" >
-                            <label for="colorIsMachine-1">水机产品</label>
+                            <label for="colorIsMachine-1">水机</label>
                         </div>
                         <div class="radio-box">
                             <input type="radio" class="colorNoMachine" id="colorIsMachine-2" name="colorIsMachine" value="2" checked>
-                            <label for="colorIsMachine-2">其他产品</label>
+                            <label for="colorIsMachine-2">其他</label>
+                        </div>
+                    </div>
+
+                    <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>发货渠道:</label>
+                    <div class="formControls col-2 col-sm-2 skin-minimal">
+                        <div class="radio-box">
+                            <input type="radio" class="colorIsJdAuto" id="colorIsJdAuto-1" name="colorIsJdAuto" value="1" >
+                            <label for="colorIsJdAuto-1">京东仓</label>
+                        </div>
+                        <div class="radio-box">
+                            <input type="radio" class="colorNoJdAuto" id="colorIsJdAuto-2" name="colorIsJdAuto" value="2" checked>
+                            <label for="colorIsJdAuto-2">优尼雅</label>
                         </div>
                     </div>
                 </div>

+ 20 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/product/update_product.ftl

@@ -233,6 +233,7 @@
                             <th  width="10"><span class="c-red">*</span>重量(g)</th>
                             <th  width="10">型号</th>
                             <th  width="10"><span class="c-red">*</span>是否为水机</th>
+                            <th style="text-align: center;" width="10"><span class="c-red">*</span>发货仓库</th>
                             <th  width="10"><span class="c-red">*</span>状态</th>
                             <th  width="20">图片</th>
                             <th  width="20">库存</th>
@@ -259,6 +260,10 @@
                                             <span class="colorIsMachineMsg"><#if productColor.colorIsMachine==1>水机产品</#if><#if productColor.colorIsMachine==2>其他产品</#if></span>
                                             <input type="hidden" class="colorIsMachine" value="${productColor.colorIsMachine!''}">
                                         </td>
+                                        <td width="10">
+                                            <span class="colorIsJdAutoMsg"><#if productColor.colorIsJdAuto==1>京东仓</#if><#if productColor.colorIsJdAuto==2>优尼雅</#if></span>
+                                            <input type="hidden" class="colorIsJdAuto" value="${productColor.colorIsJdAuto!''}">
+                                        </td>
                                         <td width="10" >
                                             <span class="colorStatusMsg"><#if productColor.colorStatus==1>使用</#if><#if productColor.colorStatus==2>禁用</#if></span>
                                             <input type="hidden" class="colorStatus" value="${productColor.colorStatus!''}">
@@ -344,14 +349,26 @@
 
                 <div class="row cl" id="" style="">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>是否为水机:</label>
-                    <div class="formControls col-5 col-sm-5 skin-minimal">
+                    <div class="formControls col-2 col-sm-2 skin-minimal">
                         <div class="radio-box">
                             <input type="radio" class="colorIsMachine" id="colorIsMachine-1" name="colorIsMachine" value="1" >
-                            <label for="colorIsMachine-1">水机产品</label>
+                            <label for="colorIsMachine-1">水机</label>
                         </div>
                         <div class="radio-box">
                             <input type="radio" class="colorNoMachine" id="colorIsMachine-2" name="colorIsMachine" value="2" checked>
-                            <label for="colorIsMachine-2">其他产品</label>
+                            <label for="colorIsMachine-2">其他</label>
+                        </div>
+                    </div>
+
+                    <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>发货渠道:</label>
+                    <div class="formControls col-2 col-sm-2 skin-minimal">
+                        <div class="radio-box">
+                            <input type="radio" class="colorIsJdAuto" id="colorIsJdAuto-1" name="colorIsJdAuto" value="1" >
+                            <label for="colorIsJdAuto-1">京东仓</label>
+                        </div>
+                        <div class="radio-box">
+                            <input type="radio" class="colorNoJdAuto" id="colorIsJdAuto-2" name="colorIsJdAuto" value="2" checked>
+                            <label for="colorIsJdAuto-2">优尼雅</label>
                         </div>
                     </div>
                 </div>

+ 24 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machine/machine_print_List.ftl

@@ -229,6 +229,18 @@
                                     '<img style="position: absolute;right: 5px;top:18px;width: 76px;height: 76px; display: none;" id="qrcodeImg" src="'+machineQrcode+'" /> ' +
                                     '<span style="position: absolute;right: 9px;top: 85px;font-size: 12px;">'+ produceCreateTime +'</span>' +
                                     '</div>');
+                        } else if(produceName === "西班牙Bermax") {
+                            // 西班牙
+
+                            $("#printlist").append('<div style="width: 242px;height: 122px;position: relative;">' +
+                                    '<span style="position: absolute;left: 10px;font-size: 14px;">Bermax</span>' +
+                                    '<span style="position: absolute;top: 25px;left: 10px;font-size: 12px;visibility:hidden;">型号:'+producePattern+'-'+produceModel+'</span>' +
+                                    '<span style="position: absolute;top: 40px;left: 10px;font-size: 12px;visibility:hidden;">S/N</span>' +
+                                    '<div style="position: absolute;left: 5px;top: 64px;height: 30px;" id="bcTarget2" class="barcodeImg">'+barcodes+'</div>' +
+                                    '<span style="position: absolute;top: 85px;left: 10px;font-size: 12px;width: 116px;text-align: center;" id="barcodeId">'+machineBarcode+'</span>' +
+                                    '<img style="position: absolute;right: 5px;top:18px;width: 76px;height: 76px; display: none;" id="qrcodeImg" src="'+machineQrcode+'" /> ' +
+                                    '<span style="position: absolute;right: 9px;top: 85px;font-size: 12px;">'+ produceCreateTime +'</span>' +
+                                    '</div>');
                         }else{
                             $("#printlist").append('<div style="width: 242px;height: 122px;position: relative;">' +
                                     '<span style="position: absolute;left: 10px;font-size: 14px;">反渗透净水机</span>' +
@@ -466,7 +478,18 @@
                             /* '<span style="position: absolute;padding-top: 100px;padding-left: -100px;" id="barcodeId">'+machineBarcode+'</span>' +*/
                             '</div>');
                     // $("#printlist").append();
-                }else{
+                } else if(produceName === "西班牙Bermax") {
+                    // 西班牙
+                    $("#printlist").append('<div style="width: 242px;height: 120px;position: relative;">' +
+                            '<span style="position: absolute;left: 10px;font-size: 14px;">Bermax</span>' +
+                            '<span style="position: absolute;top: 25px;left: 10px;font-size: 12px;visibility:hidden;">型号:'+producePattern+'-'+produceModel+'</span>' +
+                            '<span style="position: absolute;top: 40px;left: 10px;font-size: 12px;visibility:hidden;">S/N</span>' +
+                            '<div style="position: absolute;left: 5px;top: 64px;height: 30px;" id="bcTarget2" class="barcodeImg">'+barcodes+'</div>' +
+                            '<span style="position: absolute;top: 85px;left: 10px;font-size: 12px;width: 116px;text-align: center;" id="barcodeId">'+machineBarcode+'</span>' +
+                            '<img style="position: absolute;right: 5px;top:18px;width: 76px;height: 76px; display: none;" id="qrcodeImg" src="'+machineQrcode+'" /> ' +
+                            '<span style="position: absolute;right: 9px;top: 85px;font-size: 12px;">'+ produceCreateTime +'</span>' +
+                            '</div>');
+                } else{
                     $("#printlist").append('<div style="width: 242px;height: 120px;position: relative;">' +
                             '<span style="position: absolute;left: 10px;font-size: 14px;">反渗透净水机</span>' +
                             '<span style="position: absolute;top: 25px;left: 10px;font-size: 12px;visibility:hidden;">型号:'+producePattern+'-'+produceModel+'</span>' +

+ 27 - 0
watero-rst-web/src/main/webapp/common/js/product/product.js

@@ -40,6 +40,15 @@ function add_color(isUpdate){
         }
         colorHtml += '<td width="40" ><span class="colorIsMachineMsg">'+colorIsMachineStr+'</span><input type="hidden" class="colorIsMachine" name="colorIsMachine" id="colorIsMachine" value="'+ colorIsMachine +'"></td>';
 
+        var colorIsJdAuto = $(':radio[name="colorIsJdAuto"]:checked').val();
+        var colorIsJdAutoStr = '';
+        if(colorIsJdAuto == 1){
+            colorIsJdAutoStr = '京东仓';
+        }else{
+            colorIsJdAutoStr = '优尼雅';
+        }
+        colorHtml += '<td width="40" ><span class="colorIsJdAutoMsg">'+colorIsJdAutoStr+'</span><input type="hidden" class="colorIsJdAuto" name="colorIsJdAuto" id="colorIsJdAuto" value="'+ colorIsJdAuto +'"></td>';
+
         var colorStatus = $(':radio[name="colorStatus"]:checked').val();
         var colorStatusStr = '';
         if(colorStatus == 1){
@@ -104,6 +113,16 @@ function add_color(isUpdate){
                 }
                 $(this).find(".colorIsMachineMsg").html(colorIsMachineStr);
 
+                var colorIsJdAuto = $(':radio[name="colorIsJdAuto"]:checked').val();
+                $(this).find(".colorIsJdAuto").val(colorIsJdAuto);
+                var colorIsJdAutoStr = '';
+                if(colorIsJdAuto == 1){
+                    colorIsJdAutoStr = '京东仓';
+                }else{
+                    colorIsJdAutoStr = '优尼雅';
+                }
+                $(this).find(".colorIsJdAutoMsg").html(colorIsJdAutoStr);
+
                 var colorStatus = $(':radio[name="colorStatus"]:checked').val();
                 $(this).find(".colorStatus").val(colorStatus);
                 var colorStatusStr = '';
@@ -330,6 +349,7 @@ function getColorList(){
         color.colorMode = cufte($(this).find(".colorMode").html());
         color.colorPicture = cufte($(this).find(".colorPicture").val());
         color.colorIsMachine = cufte($(this).find('.colorIsMachine').val());
+        color.colorIsJdAuto = cufte($(this).find('.colorIsJdAuto').val());
         color.colorStatus = cufte($(this).find('.colorStatus').val());
         color.inventoryGoodProductNum = cufte($(this).find('.colorInventory').html());
         colorList.push(color);
@@ -400,6 +420,13 @@ function updTr($this) {
         $(".colorNoMachine").iCheck('check');
     }
 
+    var colorIsJdAuto = $this.find('.colorIsJdAuto').val();
+    if(colorIsJdAuto == 1){
+        $(".colorIsJdAuto").iCheck('check');
+    }else{
+        $(".colorNoJdAuto").iCheck('check');
+    }
+
     var colorStatus = $this.find('.colorStatus').val();
     if(colorStatus == 1){
         $(".colorIsStatus").iCheck('check');

+ 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();
 }