瀏覽代碼

订单中心开发,批次确认,批量通知配货,新增订单能够关联客诉id

wangxiaoming 6 年之前
父節點
當前提交
bb8a541cc3
共有 17 個文件被更改,包括 621 次插入102 次删除
  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. 15 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  4. 0 34
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  5. 52 26
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  6. 6 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java
  7. 29 10
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  8. 41 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  9. 6 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderBatchController.java
  10. 59 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  11. 4 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java
  12. 16 10
      watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java
  13. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/base/page_util.ftl
  14. 176 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_custome_list.ftl
  15. 23 5
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl
  16. 122 5
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  17. 48 1
      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;
+    }
 }

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

+ 29 - 10
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}
@@ -84,14 +90,14 @@
       <if test="salesCompanyId !=null and salesCompanyId !=''">
         AND sales_company_id = #{salesCompanyId}
       </if>
-      <if test="salesId !=null">
-        AND sales_id like CONCAT('%',#{salesId},'%')
+      <if test="salesId !=null">/* 有很多地方要调用准确的数据,需要相等 */
+        AND sales_id = #{salesId}
       </if>
-      <if test="salesOrderId !=null and salesOrderId !=''">
-        AND sales_orderId like CONCAT('%',#{salesOrderId},'%')
+      <if test="salesOrderId !=null and salesOrderId !=''">/* 有很多地方要调用准确的数据,需要相等 */
+        AND sales_orderId = #{salesOrderId}
       </if>
-      <if test="salesDealCode !=null and salesDealCode !=''">
-        AND sales_deal_code like CONCAT('%',#{salesDealCode},'%')
+      <if test="salesDealCode !=null and salesDealCode !=''"> /* 有很多地方要调用准确的数据,需要相等 */
+        AND sales_deal_code = {salesDealCode}
       </if>
       <if test="salesAddressTel !=null and salesAddressTel !=''">
         AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
@@ -99,7 +105,7 @@
       <if test="salesAddressName !=null and salesAddressName !=''">
         AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
       </if>
-      <if test="salesBatchId !=null and salesBatchId !=''">
+      <if test="salesBatchId !=null and salesBatchId !=''">/* 有很多地方要调用准确的数据,需要相等 */
         AND sales_batch_id = #{salesBatchId}
       </if>
       <if test="startDate != null and startDate != ''">
@@ -296,7 +302,8 @@
                 sales_batch_id,
                 sales_add_type,
                 sales_create_time,
-                sales_admin_id
+                sales_admin_id,
+                sales_customer_id
             )
         values
             (
@@ -340,7 +347,8 @@
                 #{salesBatchId},
                 #{salesAddType},
                 now(),
-                #{salesAdminId}
+                #{salesAdminId},
+                #{salesCustomerId}
             )
   </insert>
 
@@ -774,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>

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

@@ -2354,7 +2354,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;
     }
+
 }
 

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

@@ -73,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);

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

@@ -887,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>

+ 23 - 5
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>
@@ -259,13 +279,11 @@
     });
 
     /*初始化省市区*/
-    var address = $(".address_info").initAddress(
-    );
+    var address = $(".address_info").initAddress();
 
     /*初始化销售公司店铺*/
     $(".sales_channel").initSalesChannel();
 
-
 </script>
 </body>
 </html>

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

@@ -95,6 +95,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>
@@ -117,6 +119,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>
@@ -134,6 +163,8 @@
                             已发货
                         <#elseif order.salesShippingStatus == 1>
                             备货中
+                        <#elseif order.salesShippingStatus == 11>
+                            已通知配货
                         </#if>
                     </td>
                     <td>
@@ -208,6 +239,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>
@@ -221,6 +258,7 @@
     /*判断上传类型 1:上传excel推送订单   2:下载订单  2:上传efast物流信息excel */
     var editorType;
     var _editor;
+
     /**
      *跳转到详情页面
      * @param employee
@@ -242,12 +280,11 @@
         
     }
     function hideDownloadOrderInfo() {
-
     }
-    /*$(function () {
-        /!*初始化店铺*!/
-        initEfastStoreName();
-    });*/
+
+    $(function () {
+    });
+
     $(function() {
         //重新实例化一个编辑器,防止在上面的editor编辑器中显示上传的图片或者文件
         _editor = UE.getEditor('upload_ue',{
@@ -352,6 +389,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());

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

@@ -1,11 +1,29 @@
 
 /**
- * 打开订单
+ * 打开商品列表
  */
 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();
+        }else{
+            $("#selectCustomer").show();
+        }
+    })
+})
+
 $(function(){
     $("#form-order-add").Validform({
         tiptype: function (msg, o, cssctl) {
@@ -60,11 +78,40 @@ $(function(){
                         layer.close(index);
                     }
                 });
+                layer.close(index);
             }
         }
     });
 });
 
+
+/**
+ * 客诉回调
+ * @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