Browse Source

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

liujiankang 6 years ago
parent
commit
491ef0e8dc
23 changed files with 779 additions and 121 deletions
  1. 2 2
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResponseJson.java
  2. 21 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  3. 41 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/OrderBatch.java
  4. 15 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  5. 0 34
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  6. 52 26
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  7. 6 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  8. 32 7
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  9. 21 3
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderBatchServiceImpl.java
  10. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderBatchMapper.xml
  11. 41 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  12. 1 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  13. 14 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderBatchController.java
  14. 67 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  15. 4 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java
  16. 16 10
      watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java
  17. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/base/page_util.ftl
  18. 176 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_custome_list.ftl
  19. 28 6
      watero-rst-web/src/main/webapp/WEB-INF/views/order/bacth/order_batch_list.ftl
  20. 23 7
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl
  21. 130 10
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  22. 25 3
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl
  23. 60 2
      watero-rst-web/src/main/webapp/common/js/salesOrder/salesOrder.js

+ 2 - 2
watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResponseJson.java

@@ -35,11 +35,11 @@ public class ResponseJson implements Serializable {
 	public static ResponseJson FAILURE = new ResponseJson(200, "FAILURE", 500);
 
 
-	public static ResponseJson getSUCCESS(){
+	public final static ResponseJson getSUCCESS(){
 		return  new ResponseJson(200, "SUCCESS", 200);
 	}
 
-	public static ResponseJson getFAILURE(){
+	public final static ResponseJson getFAILURE(){
 		return  new ResponseJson(200, "FAILURE", 500);
 	}
 

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

@@ -58,7 +58,7 @@ public class SalesOrder implements Serializable {
     private Integer salesType;              //订单类型  1:购买2:租赁
     private String salesDealCode;           //交易号
     private Integer salesOrderStatus;       //订单状态 订单状态:1:正常 2:换货 3:退货  4:维修  5:补发
-    private Integer salesShippingStatus;    //发货状态 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货)
+    private Integer salesShippingStatus;    //发货状态 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货) 11(已通知配货,后加)
     private Integer salesPayStatus;         //付款状态 0(未付款)2(已付款)
     private Integer salesProcessStatus;     //单据状态  0(正常单)1(问题单)
     private Integer salesIsSend;            //是否通知配货    0:否1:是
@@ -102,6 +102,10 @@ public class SalesOrder implements Serializable {
     private Integer salesAddType;           //增加订单方式 1:手动增加 2:Excel导入
     private Integer salesAdminId;           //录入人id
 
+    private Integer salesCustomerId;           //客诉id
+    //  处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+    private Integer customerIsSolve;
+
     public String getStyleColor() {
         return styleColor;
     }
@@ -597,4 +601,20 @@ public class SalesOrder implements Serializable {
     public void setBatchCreateTime(Date batchCreateTime) {
         this.batchCreateTime = batchCreateTime;
     }
+
+    public Integer getSalesCustomerId() {
+        return salesCustomerId;
+    }
+
+    public void setSalesCustomerId(Integer salesCustomerId) {
+        this.salesCustomerId = salesCustomerId;
+    }
+
+    public Integer getCustomerIsSolve() {
+        return customerIsSolve;
+    }
+
+    public void setCustomerIsSolve(Integer customerIsSolve) {
+        this.customerIsSolve = customerIsSolve;
+    }
 }

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

@@ -27,10 +27,18 @@ public class OrderBatch  implements  Serializable{
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date batchCreateTime;
 
+    //是否有需要确认的订单   0:有   1:没有
+    private Integer isBatchOrderConfirm;
     //订单数量
     private Integer batchOrderNum;
+    //待审核数量
+    private Integer pendingReviewNum;
+    //待发货数量
+    private Integer pendingDeliveredNum;
+    //已发货数量
+    private Integer shippedNum;
 
-    private Integer isBatchOrderConfirm;   //是否有需要确认的订单   0:有   1:没有
+    private Integer salesAdminId;   //录入人id
 
     public String getBatchId(){
         return batchId;
@@ -95,4 +103,36 @@ public class OrderBatch  implements  Serializable{
     public void setIsBatchOrderConfirm(Integer isBatchOrderConfirm) {
         this.isBatchOrderConfirm = isBatchOrderConfirm;
     }
+
+    public Integer getSalesAdminId() {
+        return salesAdminId;
+    }
+
+    public void setSalesAdminId(Integer salesAdminId) {
+        this.salesAdminId = salesAdminId;
+    }
+
+    public Integer getPendingReviewNum() {
+        return pendingReviewNum;
+    }
+
+    public void setPendingReviewNum(Integer pendingReviewNum) {
+        this.pendingReviewNum = pendingReviewNum;
+    }
+
+    public Integer getPendingDeliveredNum() {
+        return pendingDeliveredNum;
+    }
+
+    public void setPendingDeliveredNum(Integer pendingDeliveredNum) {
+        this.pendingDeliveredNum = pendingDeliveredNum;
+    }
+
+    public Integer getShippedNum() {
+        return shippedNum;
+    }
+
+    public void setShippedNum(Integer shippedNum) {
+        this.shippedNum = shippedNum;
+    }
 }

+ 15 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -210,10 +210,24 @@ public interface SalesOrderService {
     Integer getSalesOrderNum(SalesOrder salesOrder);
 
     /**
-     * 批量确认订单
+     * 批量确认订单 根据批次
      * @param salesBatchId
      * @return
      */
     Integer listConfirmSalesOrderByBatch(String salesBatchId);
 
+    /**
+     * 批量确认订单
+     * @param salesId
+     * @return
+     */
+    Integer noticeDistribution(Integer salesId);
+
+
+    /**
+     * 确认订单,需要传入完整的order
+     * @param salesId
+     * @return
+     */
+    Integer confirmSalesOrder(Integer salesId);
 }

+ 0 - 34
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -1325,42 +1325,8 @@ public class CustomerServiceImpl implements CustomerService {
     @Override
     public PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum) {
         PageHelper.startPage(pageNO, pageSize, isTotalNum);
-
         //查询客诉列表
         List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
-
-//        if (customerList != null && customerList.size() > 0) {
-//            for (CustomerInfo customer : customerList) {
-//
-//                CustomerCommon customerCommon = new CustomerCommon();
-//                customerCommon.setCustomerId(customer.getCustomerId());
-//                List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
-//                if(customerCommonList == null || customerCommonList.size() < 1){
-//                    continue;
-//                }
-//                customerCommon = customerCommonList.get(0);
-//                customer.setBackStatus(customerCommon.getRelationBackStatus());
-//                customer.setSendStatus(customerCommon.getRelationSendStatus());
-//                customer.setSendLogisticsNo(customerCommon.getRelationSendLogisticsNo());
-//                customer.setSendLogisticsCompany(customerCommon.getRelationSendLogisticsCompany());
-//                customer.setBackLogisticsNo(customerCommon.getRelationBackLogisticsNo());
-//                customer.setBackLogisticsCompany(customerCommon.getRelationBackLogisticsCompany());
-//                Date date = null;
-//                List<SalesOrder> salesOrderList = customerCommon.getSalesOrderList();
-//                if(salesOrderList != null && salesOrderList.size() > 0){
-//                    for (int k = 0;k<salesOrderList.size();k++){
-//                        SalesOrder so = salesOrderList.get(k);
-//                        List<SalesOrderItem> salesOrderItemList = so.getSalesOrderItemList();
-//                        for (SalesOrderItem soi:salesOrderItemList) {
-//                            if(1 == soi.getItemIsSource()){
-//                                date = so.getSalesPayTime();
-//                            }
-//                        }
-//                    }
-//                }
-//                customer.setSalesTime(date);
-//            }
-//        }
         return PageUtil.getPage(customerList);
     }
 

+ 52 - 26
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -785,14 +785,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
     @Transactional
     @Override
-    public synchronized Integer listConfirmSalesOrderByBatch(String salesBatchId) {
-        /*
-        *  查询订单
-        *  查询订单项
-        *  删除订单
-        *  修改查询的订单状态
-        *  添加订单
-        */
+    public Integer listConfirmSalesOrderByBatch(String salesBatchId) {
         Integer flag = 0;
         SalesOrder salesOrder = new SalesOrder();
         salesOrder.setSalesBatchId(salesBatchId);
@@ -802,26 +795,59 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         }
 
         for (SalesOrder so:salesOrderList){
-            SalesOrderItem salesOrderItem = new SalesOrderItem();
-            salesOrderItem.setItemOrderId(so.getSalesId());
-            List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
-            so.setSalesOrderItemList(salesOrderItemList);
-            //1:确认 状态
-            so.setSalesStatus(1);
-
-            flag = salesOrderMapper.delOrderById(so.getSalesId());
-            if(flag < 1){
-                throw  new RuntimeException("删除订单失败!");
-            }
+            flag = salesOrderService.confirmSalesOrder(so.getSalesId());
+        }
+        return flag;
+    }
 
-            flag = salesOrderMapper.delOrderItem(so.getSalesId());
-            if(flag < 1){
-                throw  new RuntimeException("删除订单项失败!");
-            }
+    @Override
+    public Integer noticeDistribution(Integer salesId) {
+        return salesOrderMapper.noticeDistribution(salesId);
+    }
+
+    @Transactional
+    @Override
+    public Integer confirmSalesOrder(Integer saleId) {
+         /*
+        *  查询订单
+        *  查询订单项
+        *  删除订单
+        *  修改查询的订单状态
+        *  添加订单
+        */
+        if(saleId == null ){
+            throw  new RuntimeException("确认订单-订单id异常!");
         }
-        /* 添加订单 */
-        for (SalesOrder so:salesOrderList){
-            boolean fl = salesOrderService.addRstOrderAndIteminfo(so);
+
+        SalesOrder salesOrder = salesOrderMapper.getSalesOrderById(saleId);
+        if(salesOrder == null){
+            throw  new RuntimeException("确认订单-订单异常!");
+        }
+
+        Integer flag = 0;
+        SalesOrderItem salesOrderItem = new SalesOrderItem();
+        salesOrderItem.setItemOrderId(salesOrder.getSalesId());
+        List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
+        if(salesOrderItemList == null || salesOrderItemList.size()<1){
+            throw  new RuntimeException("确认订单-查询订单项失败!");
+        }
+        salesOrder.setSalesOrderItemList(salesOrderItemList);
+
+        flag = salesOrderMapper.delOrderById(salesOrder.getSalesId());
+        if(flag < 1){
+            throw  new RuntimeException("确认订单-删除订单失败!");
+        }
+
+        flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
+        if(flag < 1){
+            throw  new RuntimeException("确认订单-删除订单项失败!");
+        }
+
+        //1:确认 状态
+        salesOrder.setSalesStatus(1);
+        boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
+        if(!fl){
+            throw  new RuntimeException("确认订单-添加订单失败!");
         }
         return flag;
     }

+ 6 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -177,6 +177,11 @@ public interface SalesOrderMapper {
      */
     Integer delOrderById(Integer ids);
 
-
+    /**
+     * 批量确认订单
+     * @param salesId
+     * @return
+     */
+    Integer noticeDistribution(Integer salesId);
 
 }

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

@@ -47,10 +47,14 @@
       	t.*,
       	trsc.company_name companyName,
       	trsi.store_efast  storeEfast,
-        trsi.store_name  storeName
+        trsi.store_name  storeName,
+        ci.customer_is_solve customerIsSolve,
+        od.batch_create_time  batchCreateTime
     from tb_rst_sales_order_info t
     LEFT JOIN tb_rst_sales_company trsc ON t.sales_company_id = trsc.company_id
     LEFT JOIN tb_rst_store_info trsi ON t.sales_store_id = trsi.store_id
+     LEFT JOIN tb_rst_order_batch od ON t.sales_batch_id = od.batch_id
+    LEFT JOIN tb_rst_customer_info ci ON t.sales_customer_id = ci.customer_id
     where sales_id = #{salesId}
   </select>
 
@@ -60,11 +64,13 @@
     tb_rst_sales_order_info.*,
     trsc.company_name companyName,
     trsi.store_name  storeName,
+    ci.customer_is_solve customerIsSolve,
     od.batch_create_time  batchCreateTime
     from tb_rst_sales_order_info
     LEFT JOIN tb_rst_sales_company trsc ON tb_rst_sales_order_info.sales_company_id = trsc.company_id
     LEFT JOIN tb_rst_store_info trsi ON tb_rst_sales_order_info.sales_store_id = trsi.store_id
     LEFT JOIN tb_rst_order_batch od ON tb_rst_sales_order_info.sales_batch_id = od.batch_id
+    LEFT JOIN tb_rst_customer_info ci ON tb_rst_sales_order_info.sales_customer_id = ci.customer_id
     <where>
       <if test="salesIsDownload !=null and salesIsDownload !=''">
         AND sales_is_download = #{salesIsDownload}
@@ -85,13 +91,13 @@
         AND sales_company_id = #{salesCompanyId}
       </if>
       <if test="salesId !=null">
-        AND sales_id like CONCAT('%',#{salesId},'%')
+        AND sales_id = #{salesId}
       </if>
       <if test="salesOrderId !=null and salesOrderId !=''">
-        AND sales_orderId like CONCAT('%',#{salesOrderId},'%')
+        AND sales_orderId = #{salesOrderId}
       </if>
       <if test="salesDealCode !=null and salesDealCode !=''">
-        AND sales_deal_code like CONCAT('%',#{salesDealCode},'%')
+        AND sales_deal_code = {salesDealCode}
       </if>
       <if test="salesAddressTel !=null and salesAddressTel !=''">
         AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
@@ -108,6 +114,12 @@
       <if test="endDate != null and endDate != ''">
         AND sales_create_time <![CDATA[<=]]> #{endDate}
       </if>
+      <if test="salesAdminId != null ">
+         AND sales_admin_id = #{salesAdminId}
+      </if>
+      <if test="salesAddType != null ">
+         AND sales_add_type = #{salesAddType}
+      </if>
       <if test="salesIds != null and salesIds != ''">
         AND sales_id IN
         <foreach collection="salesIds" item="node" index="index" separator="," open="(" close=")">
@@ -290,7 +302,8 @@
                 sales_batch_id,
                 sales_add_type,
                 sales_create_time,
-                sales_admin_id
+                sales_admin_id,
+                sales_customer_id
             )
         values
             (
@@ -334,7 +347,8 @@
                 #{salesBatchId},
                 #{salesAddType},
                 now(),
-                #{salesAdminId}
+                #{salesAdminId},
+                #{salesCustomerId}
             )
   </insert>
 
@@ -712,12 +726,12 @@
       SELECT
           t.sales_id,
           t.sales_status,
+          t.sales_shipping_status,
           si.store_name
       FROM
           tb_rst_sales_order_info t
       LEFT JOIN tb_rst_store_info si ON t.sales_store_id = si.store_id
       WHERE t.sales_batch_id = #{salesBatchId}
-      GROUP BY t.sales_store_id
   </select>
 
   <!-- 按照批次查询订单项,并下载,订单列表主要按照订单项来排列 -->
@@ -768,4 +782,15 @@
             sales_batch_id = #{salesBatchId}
     </update>
 
+    <!-- 批量配货 -->
+    <update id="noticeDistribution" parameterType="Integer">
+        update tb_rst_sales_order_info
+        SET
+          sales_shipping_status = 11
+        WHERE
+          sales_shipping_status = 0
+        AND
+          sales_id = #{salesId}
+    </update>
+
 </mapper>

+ 21 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/order/OrderBatchServiceImpl.java

@@ -11,6 +11,7 @@ import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashSet;
 import java.util.List;
 
 /**
@@ -42,16 +43,33 @@ public class OrderBatchServiceImpl  implements OrderBatchService {
         List<OrderBatch> list = orderBatchMapper.getOrderBatchList(orderBatch);
         for (OrderBatch ob : list){
             List<SalesOrder> salesOrderList = salesOrderMapper.getOrderStoreName(ob.getBatchId());
-            Integer flag = 1;   //是否有需要确认的订单   0:有   1:没有
-            StringBuffer sb = new StringBuffer();
+            //是否有需要确认的订单   0:有   1:没有
+            Integer flag = 1;
+            //待审核数量  , 代发货 , 已发货
+            Integer pendingReviewNum = 0,pendingDeliveredNum=0,shippedNum=0;
+            HashSet store = new HashSet();
             for (SalesOrder so: salesOrderList) {
-                sb.append( sb.length()<1?so.getStoreName():(","+so.getStoreName()));
+                store.add(so.getStoreName());
                 if(so.getSalesStatus() == null || so.getSalesStatus() == 0){
                     flag = 0;
+                    pendingReviewNum++;
+                }
+                if(so.getSalesShippingStatus() == null || so.getSalesShippingStatus() == 0 ){
+                    pendingDeliveredNum ++;
+                }else if(so.getSalesShippingStatus() == 1){
+                    shippedNum++;
                 }
             }
+
+            StringBuffer sb = new StringBuffer();
+            for(Object s : store){
+                sb.append( sb.length()<1?s:(","+s));
+            }
             ob.setBatchChannel(sb.toString());
             ob.setIsBatchOrderConfirm(flag);
+            ob.setPendingReviewNum(pendingReviewNum);
+            ob.setPendingDeliveredNum(pendingDeliveredNum);
+            ob.setShippedNum(shippedNum);
         }
         return PageUtil.getPage(list);
     }

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/mapper/orderBatchMapper.xml

@@ -24,6 +24,9 @@
         from tb_rst_order_batch t
         LEFT JOIN tb_rst_sales_order_info soi ON t.batch_id = soi.sales_batch_id
         <where>
+            <if test="salesAdminId != null and salesAdminId != ''">
+                AND soi.sales_admin_id = #{salesAdminId}
+            </if >
             <if test="batchId != null and batchId != ''">
                 AND t.batch_id  like  CONCAT ('%',#{batchId},'%')
             </if >

+ 41 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -2357,7 +2357,48 @@ public class AdminCustomerController {
         ResponseJson rj = new ResponseJson(200, "查询成功", 200);
         rj.addResponseKeyValue("listReturnStatisticsInfo", listReturnStatisticsInfo);
         return rj;
+    }
+
+
+    @RequestMapping("/to_add_customer_list")
+    public ModelAndView toAddCustomerList(HttpServletRequest request) throws Exception {
+        ModelAndView mv = new ModelAndView("cm/customer/add_custome_list");
+        return mv;
+    }
+
+    @ResponseBody
+    @RequestMapping("/add_customer_list")
+    public ResponseJson addCustomerList(HttpServletRequest request, CustomerInfo customer,
+            @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) throws Exception {
+
+        PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customer, totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+//
+//        //查询产品类型集合
+//        List<ProductType> typeList = productService.listProductType(new ProductType());
+//        //查询客诉类型集合
+//        List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
+//        //查询客诉类型集合
+//        List<ComplaintSmallClassInfo> complaintSmallClassInfoList = complaintSmallClassInfoService.listComplaintSmallClassInfo(new ComplaintSmallClassInfo());
+
+        //查询跟进客服集合
+        Admin admin = new Admin();
+        admin.setAdminDept(3);
+        admin.setAdminStatus(1);
+        List<Admin> adminList = sysService.listSelectAdmin(admin);
 
+        ResponseJson rj = ResponseJson.getSUCCESS();
+//        rj.addResponseKeyValue("typeList",typeList);
+//        rj.addResponseKeyValue("complaintTypeList",complaintTypeList);
+//        rj.addResponseKeyValue("complaintSmallClassInfoList",complaintSmallClassInfoList);
+        rj.addResponseKeyValue("adminList",adminList);
+        rj.addResponseKeyValue("customerList",pagedResult.getDataList());
+        return rj;
     }
+
 }
 

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

@@ -435,7 +435,7 @@ public class MQTask implements InitializingBean {
 
 
 	/**客诉系统  自动追踪发货信息**/
-	@Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
+	@Scheduled(cron = "0 0/60 * * * ?")//每60分钟执行一次
 //	@Scheduled(cron = "0 0/1 * * * ?")//每1分钟执行一次
 	public void syncSendBackCustomer()throws Exception{
 		CustomerCommon customerCommon = new CustomerCommon();

+ 14 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderBatchController.java

@@ -3,8 +3,10 @@ package com.iamberry.rst.controllers.order;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.order.OrderBatch;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.order.OrderBatchService;
+import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -39,6 +41,12 @@ public class AdminOrderBatchController {
                                          @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
         ModelAndView mv = new ModelAndView("order/bacth/order_batch_list");
 
+        Admin admin = AdminUtils.getLoginAdmin();
+        Integer identity = admin.getAdminDept();
+        if(identity == 2){
+            orderBatch.setSalesAdminId(admin.getAdminId());
+        }
+
         PagedResult<OrderBatch> pagedResult = orderBatchService.listOrderBatchPage(pageNO, pageSize, orderBatch, totalNum == 0);
         if (totalNum != 0){
             pagedResult.setTotal(totalNum);
@@ -65,7 +73,12 @@ public class AdminOrderBatchController {
 
         SalesOrder salesOrder = new SalesOrder();
         /*确认该批次下的所有订单*/
-        Integer flag = salesOrderService.listConfirmSalesOrderByBatch(batchId);
+        Integer flag = 0;
+        try{
+            flag = salesOrderService.listConfirmSalesOrderByBatch(batchId);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
 
         rj = ResponseJson.getSUCCESS();
         rj.addResponseKeyValue("number",flag);

+ 67 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -84,6 +84,13 @@ public class AdminSalesOrderController {
                                         @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
                                         @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
         ModelAndView mv = new ModelAndView("order/salesOrder/sales_order_list");
+
+        Admin admin = AdminUtils.getLoginAdmin();
+        Integer identity = admin.getAdminDept();
+        if(identity == 2){
+            salesOrder.setSalesAdminId(admin.getAdminId());
+        }
+
         //分页获取订单信息
         PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder,totalNum == 0);
         if (totalNum != 0) {
@@ -97,6 +104,7 @@ public class AdminSalesOrderController {
                 .setModelAndView(salesOrder, mv, "/admin/salesOrder/list_order_page", pagedResult);
 
         mv.addObject("listStoreInfo",listStoreInfo);
+        mv.addObject("identity",identity);
         return mv;
     }
 
@@ -879,13 +887,70 @@ public class AdminSalesOrderController {
     @RequestMapping(value = "/select_company")
     @RequiresPermissions("salesOrder:add:manual")
     public ResponseJson getCompany(HttpServletRequest request) throws Exception {
-
         //获取销售公司
         List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
-
         ResponseJson rj = new ResponseJson(200, "查询成功", 200);
         rj.addResponseKeyValue("companyInfoList", companyInfoList);
         return rj;
     }
 
+    /**
+     * 通知配货
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping("/notice_distribution")
+    @RequiresPermissions("salesOrder:distribution:salesOrder")
+    public ResponseJson noticeDistribution(HttpServletRequest request,Integer[] salesOrderIds) throws Exception {
+        ResponseJson rj = ResponseJson.getFAILURE();
+        Integer flag = 0;
+        String errorId = "";
+        for (Integer salesIds:salesOrderIds) {
+            flag = salesOrderService.noticeDistribution(salesIds);
+            if(flag < 1){
+                errorId  += salesIds + ",";
+            }
+        }
+        if(errorId.length() > 0){
+            rj.addResponseKeyValue("errorId",errorId);
+            return rj;
+        }
+        rj = new ResponseJson(200, "修改成功", 200);
+        return rj;
+    }
+
+
+    /**
+     * 通知订单
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping("/confirm_salesOrder")
+    @RequiresPermissions("salesOrder:confirm:salesOrder")
+    public ResponseJson confirmSalesOrder(HttpServletRequest request,Integer[] salesOrderIds) throws Exception {
+        ResponseJson rj = ResponseJson.getFAILURE();
+        Integer flag = 0;
+        String errorId = "";
+        for (Integer salesIds:salesOrderIds) {
+            try{
+                flag = salesOrderService.confirmSalesOrder(salesIds);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+            if(flag < 1){
+                errorId  += salesIds + ",";
+            }
+        }
+        if(errorId.length() > 0){
+            rj.addResponseKeyValue("errorId",errorId);
+            return rj;
+        }
+        rj = new ResponseJson(200, "确认订单成功", 200);
+        return rj;
+    }
+
 }

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

@@ -10,7 +10,6 @@ import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.utils.OrderUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
-import org.apache.poi.hssf.record.cf.IconMultiStateFormatting;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,7 +21,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.io.*;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.*;
 
 /**

+ 16 - 10
watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java

@@ -18,14 +18,15 @@ public class StitchAttrUtil {
 
     private StitchAttrUtil(){
         propertySet = new HashSet<String>(Arrays.asList(noProperty));
-        timeDateSet = new HashSet<String>(Arrays.asList(timeDate));
     };
 
     /**
      * 组装参数时,会过滤以下参数
-     * 推荐使用:addNoPro(),添加过滤
+     * 推荐使用:addDatePro(),添加过滤
      */
-    private final  String timeDate[] = {};
+     // TODO: 2018/8/28  time 的转换调整,支持一个类中有有多种time的格式,因此注释掉初始化的time的Set,只能使用addDatePro()
+//    private final  String timeDate[] = {};
+
     /**
      * 控制时间参数格式
      * 推荐使用:addDatePro(),添加过滤
@@ -36,9 +37,9 @@ public class StitchAttrUtil {
             "signclosedProductInfoList"
     };
 
-    private SimpleDateFormat sdf = null;
+
     private Set<String> propertySet;
-    private Set<String> timeDateSet;
+    private Map<String,SimpleDateFormat> timeMap = new HashMap<String,SimpleDateFormat>();
 
     /**
      * 组装ModelAndView
@@ -111,8 +112,12 @@ public class StitchAttrUtil {
             }catch (IllegalAccessException e){
             }
             if (value != null && !propertySet.contains(fieldName)) {
-                if(timeDateSet.contains(fieldName))
-                    value = sdf.format(value);
+                /* 遍历map,将时间格式进行转换 */
+                for (Map.Entry<String, SimpleDateFormat> entry : timeMap.entrySet()) {
+                    if(entry.getKey().equals(fieldName)){
+                        value = entry.getValue().format(value);
+                    }
+                }
                 sb.append("&"+fieldName+ "=" + value.toString());
             }
         }
@@ -136,10 +141,11 @@ public class StitchAttrUtil {
      * @param pros
      */
     public StitchAttrUtil addDatePro(String fom,String...pros){
-        sdf = new SimpleDateFormat(fom);
+        SimpleDateFormat sdf = new SimpleDateFormat(fom);
         for(String pro : pros){
-            if(pro != null && !"".equals(pro))
-                timeDateSet.add(pro);
+            if(pro != null && !"".equals(pro)){
+                timeMap.put(pro,sdf);
+            }
         }
         return this;
     }

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/base/page_util.ftl

@@ -23,7 +23,7 @@
 </script>
 
 
-<div align="right" style="margin-right: 18px">
+<div align="right" style="margin-right: 18px;margin-bottom: 20px;">
     <div class="divBody">
         <div id="testDIV"></div>
         <form action="" id="myForm" method="post"></form>

+ 176 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_custome_list.ftl

@@ -0,0 +1,176 @@
+<!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/add_base.ftl">
+    <title>客诉列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .table-bg thead th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .txt2{width:60px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+        .postage-table{float: left;width: 150px;height: 30px;line-height: 30px;}
+    </style>
+</head>
+<body>
+
+
+<div class="page-container">
+    <div class="text-c">
+        <form action="" id="customer_condition" method="post">
+            <input type="text" class="my-input trim_input"  style="width:120px;margin-bottom: 10px;" value="" placeholder="客诉编号" id="customerId" name="customerId">
+            <input type="text" class="my-input trim_input"  style="width:120px;margin-bottom: 10px;" value="" placeholder="姓名" id="customerName" name="customerName">
+            <input type="text" class="my-input trim_input"  style="width:120px;margin-bottom: 10px;" value="" placeholder="手机号码" id="customerTel" name="customerTel">
+            <select class="my-select" name="customerIsSolve" id="customerIsSolve" style="height: 36px;width: 120px;margin: 0px;padding: 12px 10px 6px 15px;margin-bottom: 10px;">
+                <option value="">处理结果</option>
+                <option value="1" >已解决</option>
+                <option value="2" >未解决</option>
+                <option value="3" >换新</option>
+                <option value="4" >维修</option>
+                <option value="5" >补发</option>
+                <option value="6" >退货</option>
+                <option value="7" >无理由退货</option>
+            </select>
+            <button type="button" class="btn" style="background: #32a3d8;color: #fff;height: 35px;margin-bottom: 10px;"name="" onclick="searchOrder()"><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+        </form>
+    </div>
+
+    <div class="order-list" style="    margin-top: -10px;">
+        <div class="mt-20" style="height: 330px;overflow: auto;overflow-x: hidden;margin-bottom: 12px;border: 1px solid #ddd;">
+            <table class="table table-border table-bordered table-bg table-hover table-sort">
+                <thead>
+                <tr class="text-c">
+                    <th width="10">
+                        <#--<input type="checkbox" class="selectAll" id="selectAll" value="selectAll" >-->
+                    </th>
+                    <th width="50">客诉编号</th>
+                    <th width="50">姓名</th>
+                    <th width="50">电话</th>
+                    <th width="50">问题简述</th>
+                    <th width="50">处理结果</th>
+                    <th width="80">客诉时间</th>
+                </tr>
+                </thead>
+                <tbody id="productHtml">
+                </tbody>
+            </table>
+        </div>
+
+        <div class="formControls col-1 col-sm-1" style="margin-left: 45%;">
+            <button type="button" class="btn btn-primary" style="background: #32a3d8;color: #fff;" id="" name="" onclick="selectProduct()">确认选择</button>
+        </div>
+    </div>
+
+</div>
+
+<tfoot>
+</tfoot>
+
+<script>
+    $(function () {
+        /*搜索*/
+        $(document).on('click', '#searchOrder', function() {
+            searchOrder();
+        });
+
+        /*初始化  搜索订单  */
+       searchOrder();
+
+        /*回车搜索*/
+        $('.input-text').keydown(function(event){
+            if(event.keyCode == 13){ //绑定回车
+                $('#searchOrder').click();
+            }
+        });
+    })
+
+    /**
+     * 搜索订单
+     */
+    function searchOrder(){
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
+
+        var data = $("#customer_condition").serialize();
+
+        $.ajax({
+            type: "POST",
+            data: data,
+            url: "${path}/admin/customer/add_customer_list",
+            success: function(data){
+                var html = "";
+                if (data.returnCode == 200 && data.returnMsg.customerList.length > 0 ) {
+                    for(var i=0;i<data.returnMsg.customerList.length;i++){
+                        var customer = data.returnMsg.customerList[i];
+
+                        var isSolve = "";
+                        switch (customer.customerIsSolve){
+                            //1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+                            case 1:
+                                isSolve = "已解决";
+                                break;
+                            case 2:
+                                isSolve = "未解决";
+                                break;
+                            case 3:
+                                isSolve = "换新";
+                                break;
+                            case 4:
+                                isSolve = "维修";
+                                break;
+                            case 5:
+                                isSolve = "补发";
+                                break;
+                            case 6:
+                                isSolve = "退货";
+                                break;
+                            case 7:
+                                isSolve = "无理由退货";
+                                break;
+                            default:
+                                break;
+                        }
+                        html += '<tr class="text-c">' +
+                                ' <td><input type="radio" class="customer_id" id="" value="'+ customer.customerId +'" ></td>' +
+                                ' <td>'+ cufte(customer.customerId) +'</td>' +
+                                ' <td>'+ cufte(customer.customerName) +'</td>' +
+                                ' <td>'+ cufte(customer.customerTel) +'</td>' +
+                                ' <td style="text-align: left">'+ cufte(customer.describeTitle) +'</td>' +
+                                ' <td>'+ isSolve +'</td>' +
+                                ' <td>'+ formatDate(customer.customerCreateTime,"yyyy-MM-dd HH:mm:ss") +'</td>' +
+                                ' </tr>';
+                    }
+                }else{
+                    html = '<tr class="text-c"><td colspan="12">没有搜索到商品,请重试!</td></tr>';
+                }
+                $("#productHtml").html(html);
+                layer.close(index);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.close(index);
+            }
+        });
+    }
+
+    /**
+     * 选择订单,返回订单内容到父级
+     */
+    function selectProduct() {
+        var customerId = $(".customer_id:checked").val();
+        parent.setSelectCustomer(customerId);
+        parent.layer.close(parent.layer.getFrameIndex(window.name));
+    }
+</script>
+
+</body>
+</html>

+ 28 - 6
watero-rst-web/src/main/webapp/WEB-INF/views/order/bacth/order_batch_list.ftl

@@ -52,8 +52,11 @@
         <thead>
         <tr class="text-c">
             <th width="100">批次编号</th>
-            <th width="50">订单数量</th>
             <th width="80">店铺</th>
+            <th width="50">订单数量</th>
+            <th width="50">待审核数量</th>
+            <th width="50">代发货数量</th>
+            <th width="50">已发货数量</th>
             <#--<th width="100">Excel下载</th>-->
             <#--<th width="80">交易号下载</th>-->
             <th width="80">创建时间</th>
@@ -65,10 +68,12 @@
                     <#list page.dataList as batch>
                         <tr class="text-c">
                             <td>${batch.batchId!''}</td>
-                            <td><a href="javascript:void(0)" style="color: #00E;" title="点击转到订单页面,查询该批次的所有订单" onclick="to_order_list('${batch.batchId!''}')">${batch.batchOrderNum!'0'}</a></td>
                             <td>${batch.batchChannel!''}</td>
-                            <#--<td>${batch.batchExcelPath!''}</td>-->
-                            <#--<td>${batch.batchTxtPath!''}</td>-->
+                            <td><a href="javascript:void(0)" style="color: #00E;" title="点击转到订单页面,查询该批次的所有订单" onclick="to_order_list('${batch.batchId!''}',1)">${batch.batchOrderNum!'0'}</a></td>
+                            <td><a href="javascript:void(0)" style="color: #00E;" title="点击转到订单页面,查询该批次的所有订单" onclick="to_order_list('${batch.batchId!''}',2)">${batch.pendingReviewNum!'0'}</a></td>
+                            <td><a href="javascript:void(0)" style="color: #00E;" title="点击转到订单页面,查询该批次的所有订单" onclick="to_order_list('${batch.batchId!''}',3)">${batch.pendingDeliveredNum!'0'}</a></td>
+                            <td><a href="javascript:void(0)" style="color: #00E;" title="点击转到订单页面,查询该批次的所有订单" onclick="to_order_list('${batch.batchId!''}',4)">${batch.shippedNum!'0'}</a></td>
+
                             <td>${(batch.batchCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>
                                 <a style="text-decoration:none;color: #00E;" href="javascript:void(0);" title="下载该批次的所有订单的物流信息" onclick="download_order('${batch.batchId!''}')">
@@ -100,8 +105,24 @@
      *跳转到客诉列表页面
      * @param employee
      */
-    function to_order_list(batchId) {
-        window.location.href= "${path}/admin/salesOrder/list_order_page?salesBatchId="+batchId;
+    function to_order_list(batchId,type) {
+        switch (type){
+            case 1:
+                window.location.href= "${path}/admin/salesOrder/list_order_page?salesBatchId="+batchId;
+                break;
+            case 2: //待审核数量
+                window.location.href= "${path}/admin/salesOrder/list_order_page?salesBatchId="+batchId + "&salesStatus=0";
+                break;
+            case 3: //代发货数量
+                window.location.href= "${path}/admin/salesOrder/list_order_page?salesBatchId="+batchId + "&salesShippingStatus=0";
+                break;
+            case 4: //已发货数量
+                window.location.href= "${path}/admin/salesOrder/list_order_page?salesBatchId="+batchId + "&salesShippingStatus=1";
+                break;
+            default:
+            break;
+        }
+
     }
 
     /**
@@ -123,6 +144,7 @@
             timeout: 15000,
             success: function(dt) {
                 layer.msg("确认订单成功", {icon: 1, time: 3000});
+                location.reload();
             },
             error: function(xhr, type, errorThrown) {
                 layer.msg("确认订单失败,请重试!", {icon: 5, time: 3000});

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

@@ -60,11 +60,31 @@
                 </div>
             </div>
 
-          
+            <div class="row cl" style="">
+                <label class="form-label col-1 col-sm-1">订单类型:</label>
+                <div class="formControls col-2 col-sm-2" style="">
+                    <span class="select-box">
+                        <select class="select" id="salesOrderStatus" name="salesOrderStatus" >
+                            <option value="1" >正常订单</option>
+                            <#if admin.adminDept == 3 || admin.adminDept == 1><option value="2" >售后订单</option></#if>
+                        </select>
+				    </span>
+                </div>
+                <div class="formControls col-2 col-sm-2" id="selectCustomer" style="display: none;">
+                    <input type="button" style="width: 100%;" class="btn btn-primary " onclick="add_customer()" value="选择客诉记录" >
+                </div>
+            </div>
+            <div class="row cl" id="salesCustomer" style="display: none;">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-2 col-sm-2" style="color: #c00;">
+                    <span id="salesCustomerIdHtml"></span>
+                    <input type="hidden" id="salesCustomerId" name="salesCustomerId" value="">
+                </div>
+            </div>
 
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1">批次编号:</label>
-                <div class="formControls col-3 col-sm-3" style="">
+                <div class="formControls col-2 col-sm-2" style="">
                     <span class="select-box">
                         <select class="select" id="salesBatchId" name="salesBatchId" >
                             <option value="1" >新增批次</option>
@@ -76,7 +96,6 @@
                 </div>
             </div>
 
-            <#if admin.adminDept == 3 || admin.adminDept == 1>
                 <div class="row cl sales_channel" id="" style="">
                     <label class="form-label col-1 col-sm-1">销售渠道:</label>
                     <div class="formControls col-2 col-sm-2" style="">
@@ -92,7 +111,6 @@
                     </span>
                     </div>
                 </div>
-            </#if>
 
             <div class="row cl" id="" style="">
                 <label class="form-label col-1 col-sm-1">用户信息:</label>
@@ -261,13 +279,11 @@
     });
 
     /*初始化省市区*/
-    var address = $(".address_info").initAddress(
-    );
+    var address = $(".address_info").initAddress();
 
     /*初始化销售公司店铺*/
     $(".sales_channel").initSalesChannel();
 
-
 </script>
 </body>
 </html>

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

@@ -42,15 +42,18 @@
                     <button type="button" style="top: 72px;display: none;" class="my-btn-search my-order" id="addOrderExcel" onclick="upFiles();">Excel导入</button>
                 </div>
 
-                <select class="my-select" name="salesIsDownload" id="salesIsDownload" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;">
-                    <option value ="">导出状态</option>
-                    <option value ="2" <#if salesOrder.salesIsDownload??><#if salesOrder.salesIsDownload == 2 >selected="selected"</#if></#if>>已导出</option>
-                    <option value ="1" <#if salesOrder.salesIsDownload??><#if salesOrder.salesIsDownload == 1 >selected="selected"</#if></#if>>未导出</option>
-                </select>
+                <#if identity != 2>
+                    <select class="my-select" name="salesIsDownload" id="salesIsDownload" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;">
+                        <option value ="">导出状态</option>
+                        <option value ="2" <#if salesOrder.salesIsDownload??><#if salesOrder.salesIsDownload == 2 >selected="selected"</#if></#if>>已导出</option>
+                        <option value ="1" <#if salesOrder.salesIsDownload??><#if salesOrder.salesIsDownload == 1 >selected="selected"</#if></#if>>未导出</option>
+                    </select>
+                </#if>
 
                 <select class="my-select" name="salesShippingStatus" id="salesShippingStatus" style="height: 36px;width: 120px;margin: 0px;margin-bottom: 10px;">
                     <option value ="">发货状态</option>
                     <option value ="0" <#if salesOrder.salesShippingStatus??><#if salesOrder.salesShippingStatus == 0 >selected="selected"</#if></#if>>未发货</option>
+                    <option value ="11" <#if salesOrder.salesShippingStatus??><#if salesOrder.salesShippingStatus == 11 >selected="selected"</#if></#if>>已通知配货</option>
                     <option value ="1" <#if salesOrder.salesShippingStatus??><#if salesOrder.salesShippingStatus == 1 >selected="selected"</#if></#if>>已发货</option>
                 </select>
 
@@ -93,6 +96,8 @@
         <table class="table table-border table-bg table-bordered">
             <thead>
             <tr class="text-c">
+                <th width="16"><input type="checkbox" ></th>
+                <th width="60">订单类型</th>
                 <th width="60">订单号</th>
                 <th width="70">交易号</th>
                 <th width="72">批次号</th>
@@ -115,6 +120,33 @@
             <#if page.dataList?? &&  (page.dataList?size > 0) >
                 <#list page.dataList as order>
                 <tr class="text-c">
+                    <td width="16"><input type="checkbox" class="sales_id" value="${order.salesId!''}" ></td>
+                    <td width="16">
+                        <#if (order.salesCustomerId)??>
+                            <div>售后订单</div>
+                            <div>
+                                (
+                                <#if order.customerIsSolve == 1>
+                                    已解决
+                                <#elseif order.customerIsSolve == 2>
+                                    未解决
+                                <#elseif order.customerIsSolve == 3>
+                                    换新
+                                <#elseif order.customerIsSolve == 4>
+                                    维修
+                                <#elseif order.customerIsSolve == 5>
+                                    补发
+                                <#elseif order.customerIsSolve == 6>
+                                    退货
+                                <#elseif order.customerIsSolve == 7>
+                                    无理由退货
+                                </#if>
+                                )
+                            </div>
+                        <#else>
+                            正常订单
+                        </#if>
+                    </td>
                     <td>${order.salesOrderId!''}</td>
                     <td>${order.salesDealCode!''}</td>
                     <td>${order.salesBatchId!''}</td>
@@ -132,6 +164,8 @@
                             已发货
                         <#elseif order.salesShippingStatus == 1>
                             备货中
+                        <#elseif order.salesShippingStatus == 11>
+                            已通知配货
                         </#if>
                     </td>
                     <td>
@@ -206,6 +240,12 @@
             </#if>
             </tbody>
         </table>
+
+        <div style="float: left;margin-top: 20px;">
+            <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="" onclick="noticeDistribution()">通知配货</button>
+            <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="" onclick="confirmOrder()">确认订单</button>
+        </div>
+
     </div>
 </div>
 <tfoot>
@@ -219,6 +259,7 @@
     /*判断上传类型 1:上传excel推送订单   2:下载订单  2:上传efast物流信息excel */
     var editorType;
     var _editor;
+
     /**
      *跳转到详情页面
      * @param employee
@@ -240,12 +281,11 @@
         
     }
     function hideDownloadOrderInfo() {
-
     }
-    /*$(function () {
-        /!*初始化店铺*!/
-        initEfastStoreName();
-    });*/
+
+    $(function () {
+    });
+
     $(function() {
         //重新实例化一个编辑器,防止在上面的editor编辑器中显示上传的图片或者文件
         _editor = UE.getEditor('upload_ue',{
@@ -350,6 +390,86 @@
             window.location.href=root_path + '/admin/salesOrder/to_add_order';
         }
 
+        /**
+         *  通知配货
+         */
+        function noticeDistribution() {
+            var index = layer.load(1, {
+                shade: [0.5,'#fff'] //0.1透明度的白色背景
+            });
+
+            var salesOrderIds = "";
+            $(".sales_id:checked").each(function(){
+                var val = $(this).val();
+                if(isEmpty(salesOrderIds)){
+                    salesOrderIds += ","+val
+                }else{
+                    salesOrderIds = val
+                }
+            })
+
+            $.ajax({
+                type:'POST',
+                url: '${path}/admin/salesOrder/notice_distribution',
+                data:{
+                    "salesOrderIds" : salesOrderIds
+                },
+                dataType: 'json',
+                success:function(res) {
+                    if(res.resultCode == 200 && res.returnCode == 200){
+                       location.reload();
+                    }else{
+                        layer.alert("通知配货异常!", function(index){
+                            layer.close(index);
+                        });
+                        layer.close(index);
+                    }
+                    return false;
+                }
+            });
+
+        }
+
+
+        /**
+         * 确认订单
+         */
+        function confirmOrder(){
+            var index = layer.load(1, {
+                shade: [0.5,'#fff'] //0.1透明度的白色背景
+            });
+
+            var salesOrderIds = "";
+            $(".sales_id:checked").each(function(){
+                var val = $(this).val();
+                if(isEmpty(salesOrderIds)){
+                    salesOrderIds += ","+val
+                }else{
+                    salesOrderIds = val
+                }
+            })
+
+            $.ajax({
+                type:'POST',
+                url: '${path}/admin/salesOrder/confirm_salesOrder',
+                data:{
+                    "salesOrderIds" : salesOrderIds
+                },
+                dataType: 'json',
+                success:function(res) {
+                    if(res.resultCode == 200 && res.returnCode == 200){
+                        location.reload();
+                    }else{
+                        layer.alert("确认订单异常!", function(index){
+                            layer.close(index);
+                        });
+                        layer.close(index);
+                    }
+                    return false;
+                }
+            });
+        }
+
 
        /* function submitSynOrder() {
             var efastOrderId = $.trim($('#efastOrderId').val());

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

@@ -84,10 +84,34 @@
                 </div>
             </div>
 
+            <div class="row cl" style="">
+                <label class="form-label col-1 col-sm-1">订单类型:</label>
+                <div class="formControls col-2 col-sm-2" style="">
+                    <span class="select-box">
+                        <select class="select" id="salesOrderStatus" name="salesOrderStatus" >
+                            <option value="1"  <#if !order.salesCustomerId?? >selected = "selected"</#if> >正常订单</option>
+                            <#if admin.adminDept == 3 || admin.adminDept == 1><option value="2"  <#if order.salesCustomerId?? >selected = "selected"</#if>  >售后订单</option></#if>
+                        </select>
+				    </span>
+                </div>
+                <div class="formControls col-2 col-sm-2" id="selectCustomer" style="
+                        <#if admin.adminDept != 3 && admin.adminDept != 1><#if !order.salesCustomerId?? >display: none;</#if></#if>
+                    ">
+                    <input type="button" style="width: 100%;" class="btn btn-primary " onclick="add_customer()" value="选择客诉记录" >
+                </div>
+            </div>
+
+            <div class="row cl" id="salesCustomer" style="<#if admin.adminDept != 3 && admin.adminDept != 1><#if !order.salesCustomerId?? >display: none;</#if></#if>">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-2 col-sm-2" style="color: #c00;">
+                    <span id="salesCustomerIdHtml">已经选择客诉记录:${order.salesCustomerId}</span>
+                    <input type="hidden" id="salesCustomerId" name="salesCustomerId" value="${order.salesCustomerId}">
+                </div>
+            </div>
 
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1">批次编号:</label>
-                <div class="formControls col-3 col-sm-3" style="">
+                <div class="formControls col-2 col-sm-2" style="">
                     <span class="select-box">
                         <select class="select" id="salesBatchId" name="salesBatchId" >
                             <option value="1" >新增批次</option>
@@ -99,7 +123,6 @@
                 </div>
             </div>
 
-            <#if admin.adminDept == 3 || admin.adminDept == 1>
                 <div class="row cl sales_channel" id="" style="">
                     <label class="form-label col-1 col-sm-1">销售渠道:</label>
                     <div class="formControls col-2 col-sm-2" style="">
@@ -115,7 +138,6 @@
                     </span>
                     </div>
                 </div>
-            </#if>
 
 
             <div class="row cl" id="" style="">

+ 60 - 2
watero-rst-web/src/main/webapp/common/js/salesOrder/salesOrder.js

@@ -1,12 +1,39 @@
 
+var allCustomerId = "";
+
+
 /**
- * 打开订单
+ * 打开商品列表
  */
 function add_product() {
     layer_show("商品列表",url_path + "/admin/salesOrder/to_add_product","1000","500");
 }
 
+/**
+ * 打开客诉列表
+ */
+function add_customer() {
+    layer_show("客诉列表",url_path + "/admin/customer/to_add_customer_list","1000","500");
+}
+
 $(function(){
+    $("#salesOrderStatus").change(function(){
+        var status = $(this).val();
+        if(status == 1){    //正常订单
+            $("#selectCustomer").hide();
+            $("#salesCustomer").hide();
+            $("#salesCustomerIdHtml").html("");
+            $("#salesCustomerId").val("");
+        }else{
+            $("#selectCustomer").show();
+            $("#salesCustomer").show();
+            $("#salesCustomerIdHtml").html("未选择客服编号!");
+        }
+    })
+})
+
+$(function(){
+    var loadIndex = 0;
     $("#form-order-add").Validform({
         tiptype: function (msg, o, cssctl) {
             if (o.type == 3) {//失败
@@ -47,7 +74,7 @@ $(function(){
 
             $("#orderItemString").val(JSON.stringify(orderItemArray));
 
-            var index = layer.load(1, {
+            loadIndex = layer.load(1, {
                 shade: [0.5,'#fff'] //0.1透明度的白色背景
             });
         },
@@ -60,11 +87,42 @@ $(function(){
                         layer.close(index);
                     }
                 });
+                if(loadIndex != 0 ){
+                    layer.close(loadIndex);
+                }
             }
         }
     });
 });
 
+
+/**
+ * 客诉回调
+ * @param colorIds
+ */
+function setSelectCustomer(customerId){
+    var index = layer.load(1, {
+        shade: [0.5,'#fff'] //0.1透明度的白色背景
+    });
+
+    $.ajax({
+        type: "POST",
+        data: { customerId : customerId},
+        url: url_path +"/admin/customer/get_customer_info",
+        success: function(data){
+            if (data.returnCode == 200 && data.returnMsg.customer != null ) {
+                var customer = data.returnMsg.customer;
+                $("#salesCustomerIdHtml").html("已经选择客诉记录:"+customer.customerId);
+                $("#salesCustomerId").val(customer.customerId);
+            }else{
+            }
+            $("#salesCustomer").show();
+        }
+    });
+    layer.close(index);
+}
+
+
 /**
  * 选择商品回调
  * @param colorIds