Jelajahi Sumber

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

wangxiaoming 7 tahun lalu
induk
melakukan
4ed117c7ea
44 mengubah file dengan 1631 tambahan dan 132 penghapusan
  1. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Reissue.java
  2. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Renewed.java
  3. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java
  4. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/BackGoodsService.java
  5. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  6. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/NoreasonBackService.java
  7. 8 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ReissueService.java
  8. 7 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RenewedService.java
  9. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RepairService.java
  10. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  11. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/EfastOrderService.java
  12. 66 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/BackGoodsServiceImpl.java
  13. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  14. 66 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/NoreasonBackServiceImpl.java
  15. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ReissueServiceImpl.java
  16. 69 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RenewedServiceImpl.java
  17. 69 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RepairServiceImpl.java
  18. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  19. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedFittingMapper.java
  20. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedProdcueMapper.java
  21. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java
  22. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java
  23. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java
  24. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/closedFittingMapper.xml
  25. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/closedProdcueMapper.xml
  26. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  27. 17 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml
  28. 18 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml
  29. 3 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml
  30. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  31. 57 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/order/EfastOrderServiceImpl.java
  32. 12 0
      watero-rst-service/src/main/java/com/iamberry/rst/util/SmsConfig.java
  33. 42 16
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  34. 194 17
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java
  35. 61 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java
  36. 36 4
      watero-rst-web/src/main/java/com/iamberry/rst/utils/test.java
  37. 10 6
      watero-rst-web/src/main/resources/platform.properties
  38. 17 17
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl
  39. 176 8
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_back_goods.ftl
  40. 176 10
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_noreason_back.ftl
  41. 8 3
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_reissue.ftl
  42. 192 21
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_renewed.ftl
  43. 186 16
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_repair.ftl
  44. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/add_remark.ftl

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Reissue.java

@@ -53,6 +53,7 @@ public class Reissue  implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesPayTime;                  //支付时间
+    private String salesDealCode;               //交易号
 
     private List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();//寄回配件集合
     private List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();//机会产品集合
@@ -224,4 +225,12 @@ public class Reissue  implements Serializable {
     public void setReissueUpdateTime(Date reissueUpdateTime) {
         this.reissueUpdateTime = reissueUpdateTime;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/Renewed.java

@@ -88,6 +88,8 @@ public class Renewed  implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date salesPayTime;                  //支付时间
+    private String salesDealCode;               //交易号
+
     private List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();//寄回配件集合
 
     private List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();//机会产品集合
@@ -443,4 +445,12 @@ public class Renewed  implements Serializable {
     public void setRenewedUpdateTime(Date renewedUpdateTime) {
         this.renewedUpdateTime = renewedUpdateTime;
     }
+
+    public String getSalesDealCode() {
+        return salesDealCode;
+    }
+
+    public void setSalesDealCode(String salesDealCode) {
+        this.salesDealCode = salesDealCode;
+    }
 }

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/EfastOrder.java

@@ -26,6 +26,7 @@ public class EfastOrder implements Serializable{
     private String orderProvince;               // 省份
     private String orderCity;                   // 城市
     private String orderArea;                   // 区域
+    private String repairSendMergeAddress;      //省市区
     private String orderAddress;                //收货地址
     private Integer orderStatus;                //订单状态
 
@@ -247,4 +248,12 @@ public class EfastOrder implements Serializable{
     public void setOid(Integer oid) {
         this.oid = oid;
     }
+
+    public String getRepairSendMergeAddress() {
+        return repairSendMergeAddress;
+    }
+
+    public void setRepairSendMergeAddress(String repairSendMergeAddress) {
+        this.repairSendMergeAddress = repairSendMergeAddress;
+    }
 }

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

@@ -13,5 +13,5 @@ public interface BackGoodsService {
      * @param record
      * @return
      */
-    Integer updateBackGoods(BackGoods record);
+    Integer updateBackGoods(BackGoods record, String closedProducts, String closedFittings);
 }

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

@@ -1,6 +1,7 @@
 package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.page.PagedResult;
 
 import java.util.List;
@@ -95,4 +96,10 @@ public interface CustomerService {
      * @return
      */
     CustomerCommon selectProdcueAndFitting(CustomerCommon customerCommon, int isSolve);
+
+    /**
+     *  根据客诉id查询商品类型表
+     * @return
+     */
+    ProductType getcompanyAffiliation(Integer customerId);
 }

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

@@ -12,5 +12,5 @@ public interface NoreasonBackService {
      * @param record
      * @return
      */
-    Integer updateNoreasonBack(NoreasonBack record);
+    Integer updateNoreasonBack(NoreasonBack record, String closedProducts, String closedFittings);
 }

+ 8 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ReissueService.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.Reissue;
 
+import java.util.List;
+
 /**
  * Created by Administrator on 2017/11/9.
  */
@@ -13,4 +15,10 @@ public interface ReissueService {
      * @return
      */
     Integer updateReissueInfo(Reissue record);
+    /**
+     * 查询售后补发集合 同步efast
+     * @param reissue
+     * @return
+     */
+    List<Reissue> listSynchronizingReissue(Reissue reissue);
 }

+ 7 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/RenewedService.java

@@ -23,5 +23,11 @@ public interface RenewedService {
      * @param record
      * @return
      */
-    Integer updateRenewedInfo(Renewed record);
+    Integer updateRenewedInfo(Renewed record, String closedProducts, String closedFittings);
+
+    /**
+     * 获取所有需要同步的换新数据
+     * @return
+     */
+    List<Renewed> listSynchronizingRenewed(Renewed renewed);
 }

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

@@ -15,7 +15,7 @@ public interface RepairService {
      * @param repair
      * @return
      */
-    Integer updateRepairInfo(Repair repair);
+    Integer updateRepairInfo(Repair repair, String closedProducts, String closedFittings);
 
     /**
      * 查询售后维修需要同步订单的数据集合

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

@@ -83,4 +83,11 @@ public interface SalesOrderService {
      * @return
      */
     Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list);
+
+    /**
+     * 查询订单数量
+     * @param salesOrder
+     * @return
+     */
+    Integer getOrderInfoCount(SalesOrder salesOrder);
 }

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/order/EfastOrderService.java

@@ -70,6 +70,16 @@ public interface EfastOrderService {
     JSONObject getOrderFormEfast(String orderid) throws Exception;
 
     /**
+     * 获取百胜订单信息 同步到系统
+     * @param orderid
+     * @return
+     * @throws Exception
+     */
+    EfastOrder getFromEfastOrderInfo(String orderid) throws Exception;
+
+
+
+    /**
      * 根据百胜支付类型获取系统对应支付类型
      * @param payName
      * @return

+ 66 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/BackGoodsServiceImpl.java

@@ -1,11 +1,19 @@
 package com.iamberry.rst.service.cm;
 
 import com.iamberry.rst.core.cm.BackGoods;
+import com.iamberry.rst.core.cm.ClosedFitting;
+import com.iamberry.rst.core.cm.ClosedProdcue;
 import com.iamberry.rst.faces.cm.BackGoodsService;
 import com.iamberry.rst.service.cm.mapper.BackGoodsMapper;
+import com.iamberry.rst.service.cm.mapper.ClosedFittingMapper;
+import com.iamberry.rst.service.cm.mapper.ClosedProdcueMapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 退货service
  * Created by liuzhiwei on 2017/11/8.
@@ -15,9 +23,65 @@ public class BackGoodsServiceImpl implements BackGoodsService {
 
     @Autowired
     private BackGoodsMapper backGoodsMapper;
+    @Autowired
+    private ClosedProdcueMapper closedProdcueMapper;
+    @Autowired
+    private ClosedFittingMapper closedFittingMapper;
 
     @Override
-    public Integer updateBackGoods(BackGoods record) {
-        return backGoodsMapper.updateBackGoods(record);
+    public Integer updateBackGoods(BackGoods record, String closedProducts, String closedFittings) {
+        int productNum = 1;
+        int fittingNum = 1;
+        List<ClosedProdcue> produceList = new ArrayList<ClosedProdcue>();
+        List<ClosedFitting> fittingList = new ArrayList<ClosedFitting>();
+        if (StringUtils.isNotEmpty(closedProducts)) {
+            ClosedProdcue closedProdcue = new ClosedProdcue();
+            closedProdcue.setRelationId(record.getBackGoodsId());
+            closedProdcue.setClosedProdcueType(6);
+            //删除原有寄回产品
+            int delNum = closedProdcueMapper.deleteProduce(closedProdcue);
+            //去掉最后一个","
+            closedProducts = closedProducts.substring(0,closedProducts.length()-1);
+            String[] products = closedProducts.split(",");
+            for (int i = 0;i < products.length;i++) {
+                String[] colors = products[i].split(":");
+                ClosedProdcue prodcue = new ClosedProdcue();
+                prodcue.setRelationId(record.getBackGoodsId());
+                prodcue.setClosedProdcueType(6);
+                prodcue.setProductId(Integer.parseInt(colors[0]));
+                prodcue.setColorId(Integer.parseInt(colors[1]));
+                prodcue.setClosedProdcueNumber(Integer.parseInt(colors[2]));
+                produceList.add(prodcue);
+            }
+            //批量添加寄回产品
+            productNum = closedProdcueMapper.insert(produceList);
+        }
+        if (StringUtils.isNotEmpty(closedFittings)) {
+            ClosedFitting closedFitting = new ClosedFitting();
+            closedFitting.setRelationId(record.getBackGoodsId());
+            closedFitting.setClosedFittingType(6);
+            //删除原有寄回配件信息
+            int delNum = closedFittingMapper.deleteFitting(closedFitting);
+            closedFittings = closedFittings.substring(0,closedFittings.length()-1);
+            String[] fittings = closedFittings.split(",");
+            for (int i = 0;i < fittings.length;i++) {
+                String[] fitting = fittings[i].split(":");
+                ClosedFitting cFitting = new ClosedFitting();
+                cFitting.setRelationId(record.getBackGoodsId());
+                cFitting.setClosedFittingType(6);
+                cFitting.setProductId(Integer.parseInt(fitting[0]));
+                cFitting.setFittingsId(Integer.parseInt(fitting[1]));
+                cFitting.setClosedFittingNumber(Integer.parseInt(fitting[2]));
+                fittingList.add(cFitting);
+            }
+            //批量添加寄回配件
+            fittingNum = closedFittingMapper.insert(fittingList);
+        }
+        int num = backGoodsMapper.updateBackGoods(record);
+        if (num > 0 && productNum > 0 && fittingNum > 0) {
+            return 1;
+        } else {
+            return 0;
+        }
     }
 }

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

@@ -916,6 +916,11 @@ public class CustomerServiceImpl implements CustomerService {
     }
 
     @Override
+    public ProductType getcompanyAffiliation(Integer customerId) {
+        return customerInfoMapper.getcompanyAffiliation(customerId);
+    }
+
+    @Override
     public BackGoods getBackGoods(BackGoods backGoods) {
         //获取退货集合
         List<BackGoods> backList = backGoodsMapper.listBackGoods(backGoods);

+ 66 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/NoreasonBackServiceImpl.java

@@ -1,11 +1,19 @@
 package com.iamberry.rst.service.cm;
 
+import com.iamberry.rst.core.cm.ClosedFitting;
+import com.iamberry.rst.core.cm.ClosedProdcue;
 import com.iamberry.rst.core.cm.NoreasonBack;
 import com.iamberry.rst.faces.cm.NoreasonBackService;
+import com.iamberry.rst.service.cm.mapper.ClosedFittingMapper;
+import com.iamberry.rst.service.cm.mapper.ClosedProdcueMapper;
 import com.iamberry.rst.service.cm.mapper.NoreasonBackMapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Created by liuzhiwei on 2017/11/14.
  */
@@ -14,9 +22,65 @@ public class NoreasonBackServiceImpl implements NoreasonBackService {
 
     @Autowired
     private NoreasonBackMapper noreasonBackMapper;
+    @Autowired
+    private ClosedProdcueMapper closedProdcueMapper;
+    @Autowired
+    private ClosedFittingMapper closedFittingMapper;
 
     @Override
-    public Integer updateNoreasonBack(NoreasonBack record) {
-        return noreasonBackMapper.updateNoreasonBack(record);
+    public Integer updateNoreasonBack(NoreasonBack record, String closedProducts, String closedFittings) {
+        int productNum = 1;
+        int fittingNum = 1;
+        List<ClosedProdcue> produceList = new ArrayList<ClosedProdcue>();
+        List<ClosedFitting> fittingList = new ArrayList<ClosedFitting>();
+        if (StringUtils.isNotEmpty(closedProducts)) {
+            ClosedProdcue closedProdcue = new ClosedProdcue();
+            closedProdcue.setRelationId(record.getNoreasonBackId());
+            closedProdcue.setClosedProdcueType(7);
+            //删除原有寄回产品
+            int delNum = closedProdcueMapper.deleteProduce(closedProdcue);
+            //去掉最后一个","
+            closedProducts = closedProducts.substring(0,closedProducts.length()-1);
+            String[] products = closedProducts.split(",");
+            for (int i = 0;i < products.length;i++) {
+                String[] colors = products[i].split(":");
+                ClosedProdcue prodcue = new ClosedProdcue();
+                prodcue.setRelationId(record.getNoreasonBackId());
+                prodcue.setClosedProdcueType(7);
+                prodcue.setProductId(Integer.parseInt(colors[0]));
+                prodcue.setColorId(Integer.parseInt(colors[1]));
+                prodcue.setClosedProdcueNumber(Integer.parseInt(colors[2]));
+                produceList.add(prodcue);
+            }
+            //批量添加寄回产品
+            productNum = closedProdcueMapper.insert(produceList);
+        }
+        if (StringUtils.isNotEmpty(closedFittings)) {
+            ClosedFitting closedFitting = new ClosedFitting();
+            closedFitting.setRelationId(record.getNoreasonBackId());
+            closedFitting.setClosedFittingType(7);
+            //删除原有寄回配件信息
+            int delNum = closedFittingMapper.deleteFitting(closedFitting);
+            closedFittings = closedFittings.substring(0,closedFittings.length()-1);
+            String[] fittings = closedFittings.split(",");
+            for (int i = 0;i < fittings.length;i++) {
+                String[] fitting = fittings[i].split(":");
+                ClosedFitting cFitting = new ClosedFitting();
+                cFitting.setRelationId(record.getNoreasonBackId());
+                cFitting.setClosedFittingType(7);
+                cFitting.setProductId(Integer.parseInt(fitting[0]));
+                cFitting.setFittingsId(Integer.parseInt(fitting[1]));
+                cFitting.setClosedFittingNumber(Integer.parseInt(fitting[2]));
+                fittingList.add(cFitting);
+            }
+            //批量添加寄回配件
+            fittingNum = closedFittingMapper.insert(fittingList);
+        }
+        int num = noreasonBackMapper.updateNoreasonBack(record);
+        if (num > 0 && productNum > 0 && fittingNum > 0) {
+            return 1;
+        } else {
+            return 0;
+        }
     }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ReissueServiceImpl.java

@@ -6,6 +6,8 @@ import com.iamberry.rst.service.cm.mapper.ReissueMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 补寄
  * Created by liuzhiwei on 2017/11/9.
@@ -20,4 +22,9 @@ public class ReissueServiceImpl implements ReissueService {
     public Integer updateReissueInfo(Reissue record) {
         return reissueMapper.updateReissueInfo(record);
     }
+
+    @Override
+    public List<Reissue> listSynchronizingReissue(Reissue reissue) {
+        return reissueMapper.listSynchronizingReissue(reissue);
+    }
 }

+ 69 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RenewedServiceImpl.java

@@ -1,12 +1,17 @@
 package com.iamberry.rst.service.cm;
 
 import com.iamberry.rst.core.cm.ClosedFitting;
+import com.iamberry.rst.core.cm.ClosedProdcue;
 import com.iamberry.rst.core.cm.Renewed;
 import com.iamberry.rst.faces.cm.RenewedService;
+import com.iamberry.rst.service.cm.mapper.ClosedFittingMapper;
+import com.iamberry.rst.service.cm.mapper.ClosedProdcueMapper;
 import com.iamberry.rst.service.cm.mapper.RenewedMapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -18,6 +23,10 @@ public class RenewedServiceImpl implements RenewedService {
 
     @Autowired
     private RenewedMapper renewedMapper;
+    @Autowired
+    private ClosedProdcueMapper closedProdcueMapper;
+    @Autowired
+    private ClosedFittingMapper closedFittingMapper;
 
     @Override
     public List<ClosedFitting> listClosedFitting(ClosedFitting closedFitting) {
@@ -25,7 +34,65 @@ public class RenewedServiceImpl implements RenewedService {
     }
 
     @Override
-    public Integer updateRenewedInfo(Renewed record) {
-        return renewedMapper.updateRenewedInfo(record);
+    public Integer updateRenewedInfo(Renewed record, String closedProducts, String closedFittings) {
+        int productNum = 1;
+        int fittingNum = 1;
+        List<ClosedProdcue> produceList = new ArrayList<ClosedProdcue>();
+        List<ClosedFitting> fittingList = new ArrayList<ClosedFitting>();
+        if (StringUtils.isNotEmpty(closedProducts)) {
+            ClosedProdcue closedProdcue = new ClosedProdcue();
+            closedProdcue.setRelationId(record.getRenewedId());
+            closedProdcue.setClosedProdcueType(3);
+            //删除原有寄回产品
+            int delNum = closedProdcueMapper.deleteProduce(closedProdcue);
+            //去掉最后一个","
+            closedProducts = closedProducts.substring(0,closedProducts.length()-1);
+            String[] products = closedProducts.split(",");
+            for (int i = 0;i < products.length;i++) {
+                String[] colors = products[i].split(":");
+                ClosedProdcue prodcue = new ClosedProdcue();
+                prodcue.setRelationId(record.getRenewedId());
+                prodcue.setClosedProdcueType(3);
+                prodcue.setProductId(Integer.parseInt(colors[0]));
+                prodcue.setColorId(Integer.parseInt(colors[1]));
+                prodcue.setClosedProdcueNumber(Integer.parseInt(colors[2]));
+                produceList.add(prodcue);
+            }
+            //批量添加寄回产品
+            productNum = closedProdcueMapper.insert(produceList);
+        }
+        if (StringUtils.isNotEmpty(closedFittings)) {
+            ClosedFitting closedFitting = new ClosedFitting();
+            closedFitting.setRelationId(record.getRenewedId());
+            closedFitting.setClosedFittingType(3);
+            //删除原有寄回配件信息
+            int delNum = closedFittingMapper.deleteFitting(closedFitting);
+            closedFittings = closedFittings.substring(0,closedFittings.length()-1);
+            String[] fittings = closedFittings.split(",");
+            for (int i = 0;i < fittings.length;i++) {
+                String[] fitting = fittings[i].split(":");
+                ClosedFitting cFitting = new ClosedFitting();
+                cFitting.setRelationId(record.getRenewedId());
+                cFitting.setClosedFittingType(3);
+                cFitting.setProductId(Integer.parseInt(fitting[0]));
+                cFitting.setFittingsId(Integer.parseInt(fitting[1]));
+                cFitting.setClosedFittingNumber(Integer.parseInt(fitting[2]));
+                fittingList.add(cFitting);
+            }
+            //批量添加寄回配件
+            fittingNum = closedFittingMapper.insert(fittingList);
+        }
+        //修改换新信息
+        int num = renewedMapper.updateRenewedInfo(record);
+        if (num > 0 && productNum > 0 && fittingNum > 0) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public List<Renewed> listSynchronizingRenewed(Renewed renewed) {
+        return renewedMapper.listSynchronizingRenewed(renewed);
     }
 }

+ 69 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/RepairServiceImpl.java

@@ -1,10 +1,19 @@
 package com.iamberry.rst.service.cm;
 
+import com.iamberry.rst.core.cm.ClosedFitting;
+import com.iamberry.rst.core.cm.ClosedProdcue;
 import com.iamberry.rst.core.cm.Repair;
 import com.iamberry.rst.faces.cm.RepairService;
+import com.iamberry.rst.service.cm.mapper.ClosedFittingMapper;
+import com.iamberry.rst.service.cm.mapper.ClosedProdcueMapper;
 import com.iamberry.rst.service.cm.mapper.RepairMapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
 
 import java.util.List;
 
@@ -17,10 +26,68 @@ public class RepairServiceImpl implements RepairService {
 
     @Autowired
     private RepairMapper repairMapper;
+    @Autowired
+    private ClosedProdcueMapper closedProdcueMapper;
+    @Autowired
+    private ClosedFittingMapper closedFittingMapper;
 
+    @Transactional
     @Override
-    public Integer updateRepairInfo(Repair repair) {
-        return repairMapper.updateRepairInfo(repair);
+    public Integer updateRepairInfo(Repair repair, String closedProducts, String closedFittings) {
+        int productNum = 1;
+        int fittingNum = 1;
+        List<ClosedProdcue> produceList = new ArrayList<ClosedProdcue>();
+        List<ClosedFitting> fittingList = new ArrayList<ClosedFitting>();
+        if (StringUtils.isNotEmpty(closedProducts)) {
+            ClosedProdcue closedProdcue = new ClosedProdcue();
+            closedProdcue.setRelationId(repair.getRepairId());
+            closedProdcue.setClosedProdcueType(4);
+            //删除原有寄回产品
+            int delNum = closedProdcueMapper.deleteProduce(closedProdcue);
+            //去掉最后一个","
+            closedProducts = closedProducts.substring(0,closedProducts.length()-1);
+            String[] products = closedProducts.split(",");
+            for (int i = 0;i < products.length;i++) {
+                String[] colors = products[i].split(":");
+                ClosedProdcue prodcue = new ClosedProdcue();
+                prodcue.setRelationId(repair.getRepairId());
+                prodcue.setClosedProdcueType(4);
+                prodcue.setProductId(Integer.parseInt(colors[0]));
+                prodcue.setColorId(Integer.parseInt(colors[1]));
+                prodcue.setClosedProdcueNumber(Integer.parseInt(colors[2]));
+                produceList.add(prodcue);
+            }
+            //批量添加寄回产品
+            productNum = closedProdcueMapper.insert(produceList);
+        }
+        if (StringUtils.isNotEmpty(closedFittings)) {
+            ClosedFitting closedFitting = new ClosedFitting();
+            closedFitting.setRelationId(repair.getRepairId());
+            closedFitting.setClosedFittingType(4);
+            //删除原有寄回配件信息
+            int delNum = closedFittingMapper.deleteFitting(closedFitting);
+            closedFittings = closedFittings.substring(0,closedFittings.length()-1);
+            String[] fittings = closedFittings.split(",");
+            for (int i = 0;i < fittings.length;i++) {
+                String[] fitting = fittings[i].split(":");
+                ClosedFitting cFitting = new ClosedFitting();
+                cFitting.setRelationId(repair.getRepairId());
+                cFitting.setClosedFittingType(4);
+                cFitting.setProductId(Integer.parseInt(fitting[0]));
+                cFitting.setFittingsId(Integer.parseInt(fitting[1]));
+                cFitting.setClosedFittingNumber(Integer.parseInt(fitting[2]));
+                fittingList.add(cFitting);
+            }
+            //批量添加寄回配件
+            fittingNum = closedFittingMapper.insert(fittingList);
+        }
+
+        int num = repairMapper.updateRepairInfo(repair);
+        if (num > 0 && productNum > 0 && fittingNum > 0) {
+            return 1;
+        } else {
+            return 0;
+        }
     }
 
     @Override

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

@@ -313,4 +313,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             salesOrderService.addOrderAndItem(salesOrder,itemList);
         }
     }
+
+    @Override
+    public Integer getOrderInfoCount(SalesOrder salesOrder) {
+        return salesOrderMapper.getOrderInfoCount(salesOrder);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedFittingMapper.java

@@ -20,4 +20,11 @@ public interface ClosedFittingMapper {
      * @return
      */
     List<ClosedFitting> listClosedFitting(ClosedFitting record);
+
+    /**
+     * 删除寄回配件
+     * @param record
+     * @return
+     */
+    Integer deleteFitting(ClosedFitting record);
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedProdcueMapper.java

@@ -23,4 +23,11 @@ public interface ClosedProdcueMapper {
      * @return
      */
     List<ClosedProdcue> listclosedProdcue(ClosedProdcue record);
+
+    /**
+     * 删除寄回产品信息
+     * @param record
+     * @return
+     */
+    Integer deleteProduce(ClosedProdcue record);
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java

@@ -1,6 +1,7 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.order.ProductType;
 
 import java.util.List;
 
@@ -31,4 +32,10 @@ public interface CustomerInfoMapper {
      * @return
      */
     List<CustomerInfo> listCustomer(CustomerInfo customerInfo);
+
+    /**
+     *  根据客诉id查询商品类型表
+     * @return
+     */
+    ProductType getcompanyAffiliation(Integer customerId);
 }

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

@@ -28,4 +28,12 @@ public interface ReissueMapper {
      * @return
      */
     List<Reissue> listReissue(Reissue reissue);
+    /**
+     * 查询售后补发集合 同步efast
+     * @param reissue
+     * @return
+     */
+    List<Reissue> listSynchronizingReissue(Reissue reissue);
+
+
 }

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java

@@ -37,4 +37,10 @@ public interface RenewedMapper {
      * @return
      */
     List<ClosedFitting> listClosedFitting(ClosedFitting closedFitting);
+    /**
+     * 获取所有需要同步的换新数据
+     * @return
+     */
+    List<Renewed> listSynchronizingRenewed(Renewed renewed);
+
 }

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

@@ -28,6 +28,16 @@
     </foreach>
   </insert>
 
+  <!-- 删除寄回配件 -->
+  <delete id="deleteFitting" parameterType="ClosedFitting">
+    delete from
+      tb_rst_closed_fitting
+    WHERE
+      relation_id = #{relationId}
+    AND
+      closed_fitting_type = #{closedFittingType}
+  </delete>
+
   <!-- 获取寄回配件集合 -->
   <select id="listClosedFitting" parameterType="ClosedFitting" resultType="ClosedFitting">
     select

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

@@ -34,6 +34,16 @@
     </foreach>
   </insert>
 
+  <!-- 删除寄回产品信息 -->
+  <delete id="deleteProduce" parameterType="ClosedProdcue">
+    delete from
+      tb_rst_closed_prodcue
+    where
+      relation_id = #{relationId}
+    and
+      closed_prodcue_type = #{closedProdcueType}
+  </delete>
+
   <update id="updateByPrimaryKeySelective" parameterType="ClosedProdcue" >
     update tb_rst_closed_prodcue
     <set >

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

@@ -180,4 +180,14 @@
     </set>
     where customer_id = #{customerId}
   </update>
+  
+  <select id="getcompanyAffiliation" parameterType="Integer" resultType="ProductType">
+    SELECT
+        pt.*
+    FROM
+        tb_rst_product_type pt
+    LEFT JOIN tb_rst_customer_info ci ON pt.type_id = ci.type_id
+    where
+    ci.customer_id = #{customerId}
+  </select>
 </mapper>

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

@@ -267,4 +267,21 @@
       reissue_update_time = #{reissueUpdateTime,jdbcType=TIMESTAMP}
     where reissue_id = #{reissueId,jdbcType=INTEGER}
   </update>
+
+  <!-- 查询售后补发需要同步订单的数据集合 -->
+  <select id="listSynchronizingReissue" resultType="Reissue" parameterType="Reissue">
+    select
+    r.*,
+    o.sales_deal_code salesDealCode
+    from
+    tb_rst_reissue r
+    LEFT JOIN tb_rst_sales_order_info o ON r.reissue_back_efast_order_id = o.sales_orderId
+    <where>
+      <if test="reissueSendStatus != null and reissueSendStatus != ''">
+        and reissue_send_status = #{reissueSendStatus}
+      </if>
+      AND r.reissue_send_logistics_company != NULL
+      AND r.reissue_send_logistics_no != NULL
+    </where>
+  </select>
 </mapper>

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

@@ -225,4 +225,22 @@
     </set>
     where renewed_id = #{renewedId}
   </update>
+
+
+  <!-- 查询售后换新需要同步订单的数据集合 -->
+  <select id="listSynchronizingRenewed" resultType="Renewed" parameterType="Renewed">
+    select
+    r.*,
+    o.sales_deal_code salesDealCode
+    from
+    tb_rst_renewed r
+    LEFT JOIN tb_rst_sales_order_info o ON r.renewed_back_efast_order_id = o.sales_orderId
+    <where>
+      <if test="renewedSendStatus != null and renewedSendStatus != ''">
+        and r.renewed_send_status = #{renewedSendStatus}
+      </if>
+      AND r.renewed_send_logistics_company != NULL
+      AND r.renewed_send_logistics_no != NULL
+    </where>
+  </select>
 </mapper>

+ 3 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml

@@ -253,7 +253,7 @@
   <select id="listSynchronizingRepair" resultType="Repair" parameterType="Repair">
     select
     r.*,
-    o.sales_pay_time salesDealCode
+    o.sales_deal_code salesDealCode
     from
     tb_rst_repair r
     LEFT JOIN tb_rst_sales_order_info o ON r.repair_back_efast_order_id = o.sales_orderId
@@ -267,6 +267,8 @@
       <if test="repairSendStatus != null and repairSendStatus != ''">
         and repair_send_status = #{repairSendStatus}
       </if>
+      AND r.repair_send_logistics_company != NULL
+      AND r.repair_send_logistics_no != NULL
     </where>
   </select>
 </mapper>

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

@@ -204,6 +204,9 @@
       <if test="salesOrderId != null">
         and sales_orderId = #{salesOrderId}
       </if>
+      <if test="salesStatus !=null and salesStatus !=''">
+        AND sales_status = #{salesStatus}
+      </if>
     </where>
   </select>
 

+ 57 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/order/EfastOrderServiceImpl.java

@@ -353,6 +353,63 @@ public class EfastOrderServiceImpl implements EfastOrderService {
         }
     }
 
+    /**获取efast详细信息同步到系统**/
+
+    @Override
+    public EfastOrder getFromEfastOrderInfo(String orderid) throws Exception{
+        if(StringUtils.isEmpty(orderid)) return null;
+
+        Map<String, String> requestData = getRequestData(EFAST_ORDER_SELECT);
+        requestData.put("oid", orderid);
+        requestData.put("feilds","order_status,shipping_status,consignee,address,mobile,province,city,district,invoice_no,shipping_name");   //1.order_status 订单状态:0(未确认)1(确认)2(挂起)3(作废)     2.shipping_status发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+
+        try {
+            String result = HttpClient431Util.doGet(requestData, EFAST_BASE_URL);
+            result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+            Matcher m = p.matcher(result);
+            if (m.find()) {
+                result = m.replaceAll("");
+            }
+            logger.info("rst-推送百胜订单号-->>" + orderid + ",百胜返回信息-->" + result);
+            // parse JSON String to Object
+            JSONObject jsonObject = JSONObject.fromObject(result);
+            JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+            // 发货状态 : shipping_status
+            String shoppingStatus = respData.getString("shipping_status");
+            String shoppingOrderId = respData.getString("order_id");
+            String consignee = respData.getString("consignee");//收货人
+            String address = respData.getString("address");//收货地址
+            String mobile = respData.getString("mobile");//手机号
+            String province = respData.getString("province");//省
+            String city = respData.getString("city");//市
+            String district = respData.getString("district");//区
+            String invoice_no = respData.getString("invoice_no");//快递单号
+            String shipping_name = respData.getString("shipping_name");//快递公司
+
+            if(StringUtils.isNotEmpty(shoppingStatus)){
+                EfastOrder efastOrder = new EfastOrder();
+                efastOrder.setOrderStatus(Integer.parseInt(shoppingStatus));
+                efastOrder.setOrderId(shoppingOrderId);
+                efastOrder.setOrderAddressName(consignee);
+                efastOrder.setOrderAddress(address);
+                efastOrder.setOrderAddressTel(mobile);
+                efastOrder.setOrderProvince(province);
+                efastOrder.setOrderCity(city);
+                efastOrder.setOrderArea(district);
+                efastOrder.setOrderPostNum(invoice_no);
+                efastOrder.setOrderPostFirm(shipping_name);
+                efastOrder.setRepairSendMergeAddress(province+"-"+city+"-"+district);
+                return efastOrder;
+            }
+            logger.error("rst-获取百胜出错,订单号-->>" + orderid + ",百胜返回信息-->" + result);
+            throw new Exception(respData.getString("msg"));
+        } catch (Exception e) {
+            logger.error("rst-获取百胜出错,订单号-->>" + orderid + ",catch");
+            throw e;
+        }
+    }
+
     @Override
     public JSONObject getOrderFormEfast(String orderid) throws Exception {
         if(StringUtils.isEmpty(orderid)) return null;

+ 12 - 0
watero-rst-service/src/main/java/com/iamberry/rst/util/SmsConfig.java

@@ -42,6 +42,15 @@ public class SmsConfig {
     /* 发送问题回复  -- 优尼雅 */
     public static String SEND_PRODUCT_SEND_YULIA="";
 
+    /* 发送发货提醒  -- 美国watero */
+    public static String RELATION_SEND_WATERO="";
+    /* 发送发货提醒  -- 上朵 */
+    public static String RELATION_SEND_SHANGDUO="";
+    /* 发送发货提醒  -- 优尼雅 */
+    public static String RELATION_SEND_YULIA="";
+
+
+
 
 
     static {
@@ -69,6 +78,9 @@ public class SmsConfig {
             SEND_PRODUCT_SEND_WATERO=pro.getProperty("SEND_PRODUCT_SEND_WATERO");
             SEND_PRODUCT_SEND_SHANGDUO=pro.getProperty("SEND_PRODUCT_SEND_SHANGDUO");
             SEND_PRODUCT_SEND_YULIA=pro.getProperty("SEND_PRODUCT_SEND_YULIA");
+            RELATION_SEND_WATERO=pro.getProperty("RELATION_SEND_WATERO");
+            RELATION_SEND_SHANGDUO=pro.getProperty("RELATION_SEND_SHANGDUO");
+            RELATION_SEND_YULIA=pro.getProperty("RELATION_SEND_YULIA");
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 42 - 16
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -3,14 +3,13 @@ package com.iamberry.rst.controllers.cm;
 import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.*;
 import com.iamberry.rst.core.page.PagedResult;
-import com.iamberry.rst.core.pts.ProcessNode;
-import com.iamberry.rst.core.pts.ProduceProcess;
 import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
 import com.iamberry.rst.util.SmsConfig;
 import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.OrderNoUtil;
@@ -29,13 +28,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
-
 import javax.servlet.http.HttpServletRequest;
 import java.text.MessageFormat;
 import java.util.*;
 
-import static com.iamberry.rst.util.SmsConfig.CONFIRM_TEXT;
-
 /**
  * Created by wxm
  */
@@ -891,14 +887,23 @@ public class AdminCustomerController {
     @RequiresPermissions("customer:update:renewed")
     @RequestMapping("/update_renewed_info")
     public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception {
+        String closedProducts = request.getParameter("closed_products");
+        String closedFittings = request.getParameter("closed_fittings");
+        String mergeAddress = request.getParameter("merge_address");
         if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) {
             return new ResponseJson(500, "该换新信息不能修改!", 500);
         }
         if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) {
             renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue() * 100);
         }
+        if (!StringUtils.isNotEmpty(renewed.getRenewedBackEfastOrderId())) {
+            return new ResponseJson(500, "请输入efast订单号!", 500);
+        }
+        if (StringUtils.isNotEmpty(mergeAddress)) {
+            renewed.setRenewedSendMergeAddress(mergeAddress);
+        }
         //修改换新信息
-        int num = renewedService.updateRenewedInfo(renewed);
+        int num = renewedService.updateRenewedInfo(renewed, closedProducts, closedFittings);
         if (num > 0) {
             return new ResponseJson(200, "修改成功!", 200);
         } else {
@@ -944,13 +949,6 @@ public class AdminCustomerController {
         if (repair == null) {
             return new ResponseJson(500, "该客诉没有维修信息!", 500);
         } else {
-            ClosedFitting closedFitting = new ClosedFitting();
-            closedFitting.setRelationId(repair.getRepairId());
-            //获取寄回配件集合
-            List<ClosedFitting> fittingList = renewedService.listClosedFitting(closedFitting);
-            if (fittingList != null && fittingList.size() > 0) {
-                repair.setClosedFittings(fittingList);
-            }
             ResponseJson rj = new ResponseJson(200, "查询成功", 200);
             rj.addResponseKeyValue("repair", repair);
             return rj;
@@ -972,9 +970,12 @@ public class AdminCustomerController {
         if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) {
             return new ResponseJson(500, "该换新信息不能修改!", 500);
         }
+        String closedProducts = request.getParameter("closed_products");
+        String closedFittings = request.getParameter("closed_fittings");
         String provinceNumber = request.getParameter("repairProvinceNumber");
         String cityNumber = request.getParameter("repairCityNumber");
         String areaNumber = request.getParameter("repairAreaNumber");
+        String mergeAddress = request.getParameter("merge_address");
         if (StringUtils.isNotEmpty(provinceNumber)) {
             repair.setProvinceNumber(Integer.parseInt(provinceNumber));
         }
@@ -987,8 +988,24 @@ public class AdminCustomerController {
         if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) {
             repair.setRepairBackPostage(repair.getRepairBackPostage().intValue() * 100);
         }
+        if (!StringUtils.isNotEmpty(repair.getRepairBackEfastOrderId())) {
+            return new ResponseJson(500, "请输入efast订单号!", 500);
+        }
+        if (StringUtils.isNotEmpty(mergeAddress)) {
+            repair.setRepairSendMergeAddress(mergeAddress);
+        }
+
+        /*SalesOrder order = new SalesOrder();
+        order.setSalesOrderStatus(1);
+        order.setSalesOrderId(repair.getRepairBackEfastOrderId());
+        int count = salesOrderService.getOrderInfoCount(order);
+        //判断efast订单是否可查出有效数据
+        if (count == 0) {
+            return new ResponseJson(500, "该efast订单号无效,请重新输入!", 500);
+        }*/
+
         //修改维修信息
-        int num = repairService.updateRepairInfo(repair);
+        int num = repairService.updateRepairInfo(repair,closedProducts,closedFittings);
         if (num > 0) {
             return new ResponseJson(200, "修改成功!", 200);
         } else {
@@ -1051,13 +1068,16 @@ public class AdminCustomerController {
     @RequiresPermissions("customer:update:backGoods")
     @RequestMapping("/update_back_goods")
     public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception {
+        String closedProducts = request.getParameter("closed_products");
+        String closedFittings = request.getParameter("closed_fittings");
         if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) {
             return new ResponseJson(500, "该售后退货信息不能修改!", 500);
         }
         if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) {
             backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue() * 100);
         }
-        int num = backGoodsService.updateBackGoods(backGoods);
+
+        int num = backGoodsService.updateBackGoods(backGoods, closedProducts, closedFittings);
         if (num > 0) {
             return new ResponseJson(200, "修改成功!", 200);
         } else {
@@ -1121,6 +1141,7 @@ public class AdminCustomerController {
         String provinceNumber = request.getParameter("reissueProvinceNumber");
         String cityNumber = request.getParameter("reissueCityNumber");
         String areaNumber = request.getParameter("reissueAreaNumber");
+        String mergeAddress = request.getParameter("merge_address");
         if (!StringUtils.isNotEmpty(reissue.getReissueId().toString())) {
             return new ResponseJson(500, "该售后补寄信息不能修改!", 500);
         }
@@ -1133,6 +1154,9 @@ public class AdminCustomerController {
         if (StringUtils.isNotEmpty(areaNumber)) {
             reissue.setAreaNumber(Integer.parseInt(areaNumber));
         }
+        if (StringUtils.isNotEmpty(mergeAddress)) {
+            reissue.setReissueSendMergeAddress(mergeAddress);
+        }
         //修改售后补寄信息
         int num = reissueService.updateReissueInfo(reissue);
         if (num > 0) {
@@ -1197,13 +1221,15 @@ public class AdminCustomerController {
     @RequiresPermissions("customer:update:noreason")
     @RequestMapping("/update_noreason")
     public ResponseJson updateNoreason(HttpServletRequest request, NoreasonBack noreasonBack) throws Exception {
+        String closedProducts = request.getParameter("closed_products");
+        String closedFittings = request.getParameter("closed_fittings");
         if (!StringUtils.isNotEmpty(noreasonBack.getNoreasonBackId().toString())) {
             return new ResponseJson(500, "该售后无理由退货信息不能修改!", 500);
         }
         if (StringUtils.isNotEmpty(noreasonBack.getNoreasonBackBackPostage().toString())) {
             noreasonBack.setNoreasonBackBackPostage(noreasonBack.getNoreasonBackBackPostage().intValue() * 100);
         }
-        int num = noreasonBackService.updateNoreasonBack(noreasonBack);
+        int num = noreasonBackService.updateNoreasonBack(noreasonBack, closedProducts, closedFittings);
         if (num > 0) {
             return new ResponseJson(200, "修改成功!", 200);
         } else {

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

@@ -1,24 +1,26 @@
 package com.iamberry.rst.controllers.mq;
 
 import com.iamberry.rst.controllers.sys.SysController;
-import com.iamberry.rst.core.cm.Repair;
-import com.iamberry.rst.core.cm.SalesOrder;
-import com.iamberry.rst.core.cm.SalesOrderItem;
-import com.iamberry.rst.core.cm.StoreInfo;
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.District;
+import com.iamberry.rst.core.address.Province;
+import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.EfastOrder;
 import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sms.SmsMessage;
 import com.iamberry.rst.core.sys.Relu;
-import com.iamberry.rst.faces.cm.RepairService;
-import com.iamberry.rst.faces.cm.SalesOrderService;
-import com.iamberry.rst.faces.cm.StoreInfoService;
+import com.iamberry.rst.faces.address.AddressService;
+import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.MessageService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
 import com.iamberry.rst.service.sms.mapper.MessageMapper;
+import com.iamberry.rst.utils.KuaiDi100;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
@@ -32,14 +34,15 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import static com.iamberry.rst.util.SmsConfig.*;
+import static com.iamberry.rst.utils.KuaiDi100.replace;
+
 
 @Component(value="mqTask")
 @Lazy(false)
@@ -59,6 +62,16 @@ public class MQTask implements InitializingBean {
 	private SysService sysService;
 	@Autowired
 	private RepairService repairService;
+	@Autowired
+	private AddressService addressService;
+	@Autowired
+	private RenewedService renewedService;
+	@Autowired
+	private ReissueService reissueService;
+	@Autowired
+	private CustomerInfoMapper customerInfoMapper;
+
+
 
 	private Object lock = new Object();
 	private Object lock1 = new Object();
@@ -222,7 +235,7 @@ public class MQTask implements InitializingBean {
 	}
 
 	/**客诉系统  自动追踪发货信息**/
-	@Scheduled(cron = "0 0/1 * * * ?")//每三分钟执行一次
+	@Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
 	public void synchronousDelivery()throws Exception{
 		/*同步维修订单*/
 		Repair repair = new Repair();
@@ -231,17 +244,181 @@ public class MQTask implements InitializingBean {
 		if(listRepair.size() > 0){
 			for(Repair re:listRepair){
 				if(re.getSalesDealCode() != null){
-					EfastOrder efastOrder = efastOrderService.getOrderInfoFromEfast(re.getSalesDealCode());
-					/*if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
-
-					}*/
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setRepairSendName(efastOrder.getOrderAddressName());
+						re.setRepairSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setRepairSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setRepairSendAddress(efastOrder.getOrderAddress());
+						re.setRepairSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setRepairSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setRepairSendStatus(2);
+						Integer msg = repairService.updateRepairInfo(re,null,null);
+						if(msg > 0){
+							//发送维修发货通知短信
+							sendSMS("<维修业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+						}
+					}
 				}
 
 			}
 		}
 
 		/*同步换货订单*/
-
+		Renewed renewed = new Renewed();
+		renewed.setRenewedSendStatus(1);
+		List<Renewed> listRenewed = renewedService.listSynchronizingRenewed(renewed);
+		if(listRenewed.size() > 0){
+			for(Renewed re:listRenewed){
+				if(re.getSalesDealCode() != null){
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setRenewedSendName(efastOrder.getOrderAddressName());
+						re.setRenewedSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setRenewedSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setRenewedSendAddress(efastOrder.getOrderAddress());
+						re.setRenewedSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setRenewedSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setRenewedSendStatus(2);
+						Integer msg = renewedService.updateRenewedInfo(re,null,null);
+						if(msg > 0){
+							//发送换货发货通知短信
+							sendSMS("<换货业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+						}
+					}
+				}
+			}
+		}
 		/*同步补发订单*/
+		Reissue reissue = new Reissue();
+		reissue.setReissueSendStatus(1);
+		List<Reissue> listReissue = reissueService.listSynchronizingReissue(reissue);
+		if(listReissue.size() > 0){
+			for(Reissue re:listReissue){
+				if(re.getSalesDealCode() != null){
+					EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
+					if (efastOrder.getOrderStatus() == 1){//1代表已发货  发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+						re.setReissueSendName(efastOrder.getOrderAddressName());
+						re.setReissueSendTel(efastOrder.getOrderAddressTel());
+						//查询省市县id
+						Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
+						re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
+						re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
+						re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
+						re.setReissueSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
+						re.setReissueSendAddress(efastOrder.getOrderAddress());
+						re.setReissueSendLogisticsCompany(efastOrder.getOrderPostFirm());
+						re.setReissueSendLogisticsNo(efastOrder.getOrderPostNum());
+						re.setReissueSendStatus(2);
+						Integer msg = reissueService.updateReissueInfo(re);
+						if(msg > 0){
+							//发送补发发货通知短信
+							sendSMS("<补发业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
+
+						}
+					}
+				}
+
+			}
+		}
+	}
+
+
+	/**
+	 * 发送发货通知
+	 * @param relation 维修 换货 补发
+	 * @param postFirm 物流公司代码
+	 * @param postNum	物流单号
+	 * @param customerId 客诉主键id
+	 * @param tel 手机号
+	 */
+	public void sendSMS(String relation,String postFirm,String postNum,Integer customerId,String tel){
+		if(postFirm != null && !postFirm.equals("") && postNum != null && !postNum.equals("")
+				&& customerId > 0 && !tel.equals("")){
+			postFirm =  KuaiDi100.replace(postFirm);
+			if(!postFirm.equals("")){
+				ProductType productType = customerInfoMapper.getcompanyAffiliation(customerId);
+				if(productType != null){
+					String rejected_text = "";
+					//1:美国watero; 2:上朵电动牙刷  3:优尼雅净水机
+					if (productType.getTypeCompany() == 1){
+						rejected_text = RELATION_SEND_WATERO;
+					}
+					if (productType.getTypeCompany() == 2){
+						rejected_text = RELATION_SEND_SHANGDUO;
+					}
+					if (productType.getTypeCompany() == 3){
+						rejected_text = RELATION_SEND_YULIA;
+					}
+					String text = MessageFormat.format(rejected_text, relation,postFirm+","+postNum);
+					smsService.sendOtherCMS(tel,text);
+				}
+
+			}
+		}
+	}
+
+	/**
+	 * 查询省市县id
+	 * @param
+	 */
+	public Map<String,String> provincesCitiesCounties(EfastOrder efastOrder){
+		Map<String,String> map = new HashMap<String, String>();
+		String province = "";
+		String city = "";
+		String zone = "";
+		//省
+		if(efastOrder.getOrderProvince().substring(efastOrder.getOrderProvince().length() - 1,efastOrder.getOrderProvince().length()).equals("省")){
+			province = efastOrder.getOrderProvince().substring(0,efastOrder.getOrderProvince().length() - 1);
+		}else{
+			province = efastOrder.getOrderProvince();
+		}
+		Province provinceinfo = new Province();
+		provinceinfo.setProvince(province);
+		List<Province> provinceList = addressService.listProvince(provinceinfo);
+		if(provinceList.size() < 1){
+			provinceinfo.setProvince(null);
+			provinceList = addressService.listProvince(provinceinfo);
+		}
+		map.put("provinceId",String.valueOf(provinceList.get(0).getProvinceId()));
+		map.put("province",provinceList.get(0).getProvince());
+
+
+		//市
+		city = efastOrder.getOrderCity().substring(0,efastOrder.getOrderCity().length() - 1);
+		City cityInfo = new City();
+		cityInfo.setCity(city);
+		List<City> cityList = addressService.listCity(cityInfo);
+		if(cityList.size() < 1){
+			cityInfo.setCity(null);
+			cityInfo.setProvinceId(provinceList.get(0).getProvinceId());
+			cityList = addressService.listCity(cityInfo);
+		}
+		map.put("cityId",String.valueOf(cityList.get(0).getCityId()));
+		map.put("city",cityList.get(0).getCity());
+
+		//区
+		zone = efastOrder.getOrderArea().substring(0,efastOrder.getOrderArea().length() - 1);
+		District district = new  District();
+		district.setDistrict(zone);
+		List<District> districtList = addressService.listDistrict(district);
+		if(districtList.size() < 1){
+			district.setDistrict(null);
+			district.setCityId(cityList.get(0).getCityId());
+			districtList = addressService.listDistrict(district);
+		}
+		map.put("districtId",String.valueOf(districtList.get(0).getDistrictId()));
+		map.put("district",districtList.get(0).getDistrict());
+		return map;
 	}
 }

+ 61 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java

@@ -203,4 +203,65 @@ public class KuaiDi100 {
         }
         return content;
     }
+
+    /**物流名称替换**/
+    public static String replace(String code) {
+        String name = "";
+        switch (code){
+            case "sto":
+                name= "申通快递";
+                break;
+            case "yto":
+                name= "圆通快递";
+                break;
+            case "zto":
+                name= "中通速递";
+                break;
+            case "sf":
+                name= "顺丰快递";
+                break;
+            case "ems":
+                name= "邮政EMS";
+                break;
+            case "eyb":
+                name= "E邮宝";
+                break;
+            case "zjs":
+                name= "宅急送";
+                break;
+            case "yunda":
+                name= "韵达快递";
+                break;
+            case "cces":
+                name= "cces快递";
+                break;
+            case "pick":
+                name= "上门提货";
+                break;
+            case "htky":
+                name= "汇通快递";
+                break;
+            case "ttkdex":
+                name= "天天快递";
+                break;
+            case "stars":
+                name= "星晨急便";
+                break;
+            case "jd":
+                name= "京东快递";
+                break;
+            case "01":
+                name= "其他";
+                break;
+            case "02":
+                name= "上门送货";
+                break;
+            case "longbanwuliu":
+                name= "龙邦快递";
+                break;
+            default:
+                break;
+        }
+        return name;
+    }
 }

+ 36 - 4
watero-rst-web/src/main/java/com/iamberry/rst/utils/test.java

@@ -1,7 +1,16 @@
 package com.iamberry.rst.utils;
+import com.alibaba.dubbo.common.json.JSON;
 
 import com.auth0.jwt.internal.org.apache.commons.codec.binary.Base64;
 import com.auth0.jwt.internal.org.apache.commons.codec.binary.StringUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.Key;
+import java.util.Map;
 
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
@@ -22,12 +31,35 @@ public class test {
     }
 
 
-  /*  public static void main(String[] args) throws Exception {
-        ConsumerRecord<String, String> record = new ConsumerRecord<String, String>("4", 1, 1, "data", "{\"data\":\"7uiBfrOFcdy/EDWxcT6SlRwlTPRyTI7CHDtsa5VIbLtWgLCKxE4lMCo+4Njm/FyBhmZ8/vfzF9f8C5g7pKI8TvzaeeNu675pH3s5SP/5/bYUmZ5zICom6p41UxsMJ/+7uLSD3+B3uUc+buxwCELiRMiwsrdhUb4OObWd0tguFZdYQZrXGORTbQkUJIb7fctLuzR6OEBTmiC2H1/xEerFLua2LT4neI4VaHNC1MVW818=\"}");
+    public static void main(String[] args) throws Exception {
+        /*ConsumerRecord<String, String> record = new ConsumerRecord<String, String>("4", 1, 1, "data", "{\"data\":\"7uiBfrOFcdy/EDWxcT6SlS1SvUzaqGDqdPa6XsnYNTrplpwdmjgJAo741xY0kRC8hmZ8/vfzF9f8C5g7pKI8TvzaeeNu675pH3s5SP/5/ba4eJOW8Qqwm/1H4nNX+1Ed/CTueaJe3E/BNsFxe7rF+nV1vzOwuvXM6YHC6yYNIi4t16eWO4Fyopbz12I60Pf8CTCNBf4XIxuHSB/BGVZpATEykU1vILnX89GzoJlV+10=\"}");
         String appKey = "5kkyurvvtt58bbuxueee";//填APP KEY
         String secretKey = "rhj6na6u3y6uhy6qrbb3944mg5uqqpbb";//APP SECRET
         String data = decrypt(JSONObject.fromObject(record.value()).getString("data"),
                 secretKey.substring(8, 24));//解析后的真正数据
-System.out.println(data);
-    }*/
+
+        JSONObject jasonObject = JSONObject.fromObject(data);
+        if(jasonObject.has("dps")){
+            JSONArray dps = jasonObject.getJSONArray("dps");
+            boolean flog = false;
+            for(int i = 0; i < dps.size(); i++){
+                Map maps = (Map) JSON.parse(dps.getString(i));
+                    for (Object obj : maps.keySet()){
+                    if(obj.equals("DEVECE_CONTROL_MILK")){
+                        String milkPowder = maps.get(obj).toString();
+                        flog = true;//如果数据中包含当前字段,表示当前推送的数据为奶粉记录
+                    }
+                    if(obj.equals("t")){
+                        Long milkTime = (Long)maps.get((obj));
+                    }
+                }
+            }
+            if(flog){
+                // 根据机器ID 获取对应的用户id
+                String devId = jasonObject.getString("devId");
+
+                flog = false;
+            }
+        }*/
+    }
 }

File diff ditekan karena terlalu besar
+ 10 - 6
watero-rst-web/src/main/resources/platform.properties


+ 17 - 17
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl

@@ -123,8 +123,8 @@
                             <td>
                                 ${customer.describeTitle!'暂无'}
                                     <#if customer.describeTitle??>
-                                        <a href="javascript:void(0);" title="查看详情" onclick="getDescribeInfo(${customer.customerId!''})">
-                                            查看详情
+                                        <a style="text-decoration:none;" href="javascript:void(0);" title="查看详情" onclick="getDescribeInfo(${customer.customerId!''})">
+                                            <font color=#06c>查看详情</font>
                                         </a>&nbsp;
                                     </#if>
                             </td>
@@ -140,7 +140,7 @@
                                 <#elseif customer.customerIsSolve == 3>
                                     换新(
                                     <a style="text-decoration:none" href="javascript:void(0);" onclick="toUpdateRenewed(${customer.customerId!''})">
-                                        <#if customer.backStatus == 1>
+                                        <font color=#06c><#if customer.backStatus == 1>
                                             未寄回
                                         <#elseif customer.backStatus == 2>
                                             已寄回
@@ -162,13 +162,13 @@
                                             检查通过
                                         <#elseif customer.detectState == 4>
                                             检查未通过
-                                        </#if>
+                                        </#if></font>
                                     </a>
                                     )
                                 <#elseif customer.customerIsSolve == 4>
                                     维修(
                                     <a style="text-decoration:none" href="javascript:void(0);" onclick="toUpdateRepair(${customer.customerId!''})">
-                                        <#if customer.backStatus == 1>
+                                        <font color=#06c><#if customer.backStatus == 1>
                                             未寄回
                                         <#elseif customer.backStatus == 2>
                                             已寄回
@@ -190,43 +190,43 @@
                                             检查通过
                                         <#elseif customer.detectState == 4>
                                             检查未通过
-                                        </#if>
+                                        </#if></font>
                                     </a>
                                     )
                                 <#elseif customer.customerIsSolve == 5>
                                     补发(
                                     <a style="text-decoration:none" href="javascript:void(0);" onclick="toUpdateReissue(${customer.customerId!''})">
-                                        <#if customer.sendStatus == 1>
+                                        <font color=#06c><#if customer.sendStatus == 1>
                                             未寄送
                                         <#elseif customer.sendStatus == 2>
                                             已寄送
                                         <#elseif customer.sendStatus == 3>
                                             已收货
-                                        </#if>
+                                        </#if></font>
                                     </a>
                                     )
                                 <#elseif customer.customerIsSolve == 6>
                                     退货(
                                     <a style="text-decoration:none" href="javascript:void(0);" onclick="toUpdateBookGoods(${customer.customerId!''})">
-                                        <#if customer.backStatus == 1>
+                                        <font color=#06c><#if customer.backStatus == 1>
                                             未寄回
                                         <#elseif customer.backStatus == 2>
                                             已寄回
                                         <#elseif customer.backStatus == 3>
                                             已收货
-                                        </#if>
+                                        </#if></font>
                                     </a>
                                     )
                                 <#elseif customer.customerIsSolve == 7>
                                     无理由退货(
                                     <a style="text-decoration:none" href="javascript:void(0);" onclick="toUpdateNoreasonBack(${customer.customerId!''})">
-                                        <#if customer.backStatus == 1>
+                                        <font color=#06c><#if customer.backStatus == 1>
                                             未寄回
                                         <#elseif customer.backStatus == 2>
                                             已寄回
                                         <#elseif customer.backStatus == 3>
                                             已收货
-                                        </#if>
+                                        </#if></font>
                                     </a>
                                     )
                                 </#if>
@@ -240,7 +240,7 @@
                                     <#elseif customer.visitStatus == 2>
                                         已回访<br/>
                                         <a style="text-decoration:none" href="javascript:void(0);" title="回访内容" onclick="getVisitInfo(${customer.customerId!''})">
-                                            <i class="Hui-iconfont">回访内容</i>
+                                            <font color=#06c>回访内容</font>
                                         </a>&nbsp;
                                     </#if>
                                 </#if>
@@ -249,22 +249,22 @@
                             <td>
                                 <#if customer.customerIsSolve == 2>
                                     <a style="text-decoration:none" href="javascript:void(0);" title="已解决" onclick="updateCustomerIsSolve(${customer.customerId!''})">
-                                        <i class="Hui-iconfont">已解决</i>
+                                        <font color=#06c>已解决</font>
                                     </a><br/>
                                 </#if>
                                 <a style="text-decoration:none" href="javascript:void(0);" title="详情" onclick="admin_details_customer(${customer.customerId!''})">
-                                    <i class="Hui-iconfont">详情</i>
+                                    <font color=#06c>详情</font>
                                 </a><br/>
                                 <#if customer.customerIsVisit == "2">
                                     <#if customer.visitStatus == 1 && customer.customerIsVisit == "2">
                                         <a style="text-decoration:none" href="javascript:void(0);" title="已完成回访" onclick="toUpdateVisit(${customer.customerId!''})">
-                                            <i class="Hui-iconfont">已完成回访</i>
+                                            <font color=#06c>已完成回访</font>
                                         </a><br/>
                                     </#if>
                                 </#if>
                                 <#if customer.customerIsVisit == "1">
                                     <a style="text-decoration:none" href="javascript:void(0)" title="需要回访" onclick="toAddVisit(${customer.customerId!''})">
-                                        <i class="Hui-iconfont">需要回访</i>
+                                        <font color=#06c>需要回访</font>
                                     </a><br/>
                                 </#if>
                             </td>

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

@@ -19,6 +19,7 @@
         .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
         .table-bg th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 20px;background-color: #32a3d8;color: #fff;}
     </style>
     <title></title>
 </head>
@@ -79,9 +80,9 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="请输入快递单号" id="backGoodsBackLogisticsNo" name="backGoodsBackLogisticsNo">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="寄回邮费" id="backGoodsBackPostage" name="backGoodsBackPostage">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="用户支付宝账户" id="backGoodsAlipay" name="backGoodsAlipay">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="请输入快递单号" id="backGoodsBackLogisticsNo" name="backGoodsBackLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="寄回邮费" id="backGoodsBackPostage" name="backGoodsBackPostage">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="用户支付宝账户" id="backGoodsAlipay" name="backGoodsAlipay">
             </div>
         </div>
         <div class="row cl">
@@ -108,10 +109,10 @@
                 <strong>寄件信息</strong>
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人姓名" id="backGoodsBackName" name="backGoodsBackName">
+                <input type="text" class="input-text" value="" placeholder="寄件人姓名" id="backGoodsBackName" name="backGoodsBackName">
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人电话" id="backGoodsBackTel" name="backGoodsBackTel">
+                <input type="text" style="width: 190px;margin:0 10px;" class="input-text" value="" placeholder="寄件人电话" id="backGoodsBackTel" name="backGoodsBackTel">
             </div>
         </div>
         <div class="row cl">
@@ -119,7 +120,32 @@
                 <strong>寄回产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div id="backGoodsProduct" class="update-parts"></div>
+                <div id="backGoodsProduct" class="update-parts" style="float: left;width: 410px;margin-right: 10px;"></div>
+                <input type="hidden" id="closed_products" name="closed_products" />
+                <input type="hidden" id="closed_fittings" name="closed_fittings" />
+                <div style="float: left;">
+                    <button type="button" style="cursor:pointer;height: 30px;" class="my-btn-search" onclick="showProductList();">修改产品</button>
+                </div>
+            </div>
+        </div>
+        <div class="cl">
+            <div class="formControls col-2 col-sm-2 text-r">
+            </div>
+            <div class="formControls col-9 col-sm-9" id="produceSelect" style="padding-top: 10px;display: none;">
+                <div>
+                    <input type="text" oninput="showUpdateSendProduct();" onpropertychange="showUpdateSendProduct();" class="input-text" style="width: 100%" id="selectProcuct" name="selectProcuct" placeholder="请输入产品名称搜索">
+                </div>
+                <table class="table table-border table-bg table-bordered">
+                    <thead>
+                    <tr class="text-c">
+                        <th style="text-align: center;" width="60">产品名称</th>
+                        <th style="text-align: center;" width="60">产品颜色</th>
+                        <th style="text-align: center;" width="60">产品配件</th>
+                    </tr>
+                    </thead>
+                    <tbody id="addProduct">
+                    </tbody>
+                </table>
             </div>
         </div>
         <div class="row cl">
@@ -159,8 +185,149 @@
             increaseArea: '20%'
         });
         get_book_goods_info();
+        showUpdateSendProduct();
     });
 
+    /*显示所有产品及配件信息*/
+    function showUpdateSendProduct() {
+        var productList = getProduct() ; //所有产品
+        var html = "";
+        for(var i=0;i<productList.length;i++) {
+            var product = productList[i];
+            var produceFittings = product.fittingsList;  //获取该产品的所有配件
+            var colorList = product.colorList;  //该产品的所有颜色
+
+
+            var colorHtml = '';
+            if(colorList != null && colorList.length >0 ){
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+                    /*for(var k=0;k<orderItemList.length;k++){
+                        var item = orderItemList[k];
+                        if(item.itemColorId == color.colorId){
+                            number = item.itemNum;
+                        }
+                    }*/
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="75" class="input-color-name" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="hidden" class="input-produce-name" value="' + product.productName + '">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
+                }
+                colorHtml += '</table>';
+            }else{
+                colorHtml += '<span>暂无该产品的颜色!<span>';
+            }
+
+            var produceFittingsHtml = '';
+            if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
+                for(var m=0;m<produceFittings.length;m++){
+                    var produceFit = produceFittings[m];
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="75" class="input-fittings-name" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+                }
+                produceFittingsHtml += '</table>';
+            }else{
+                produceFittingsHtml += '<span>暂无产品配件!<span>';
+            }
+
+            var produceHtml = '<input type="hidden" value="'+ product.productId +'">' +
+                    '<span>'+  product.productName +'</span>';
+
+            html += ' <tr >' +
+                    '    <td width="70">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    colorHtml +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    produceFittingsHtml +
+                    '    </td>' +
+                    '</tr>';
+        }
+        html += '<tr><td colspan="3" style="text-align: center;"><button onClick="hideProductList();" class="btn btn-primary" type="button">确认</button></td></tr>'
+        $("#addProduct").html(html);
+    }
+
+    function showProductList() {
+        $('#produceSelect').show();
+    }
+
+    function hideProductList() {
+        var txt_product = '';
+        var color_numbers = '';
+        var fittings_numbers = '';
+        $("#addProduct").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var colorId = $(this).parent().find(".input-color-id").val();
+                var productName = $(this).parent().find(".input-produce-name").val();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                color_numbers += productId + ':' + colorId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ productName + '*' + number + '台</span>';
+            }
+        });
+        $("#addProduct").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var fittingsId = $(this).parent().find(".input-fittings-id").val();
+                var fittingsName = $(this).parent().parent().find(".input-fittings-name").html();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                fittings_numbers += productId + ':' + fittingsId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ fittingsName + '*' + number + '件</span>';
+            }
+        })
+        $('#backGoodsProduct').html(txt_product);
+        $('#closed_products').val(color_numbers);
+        $('#closed_fittings').val(fittings_numbers);
+        $('#produceSelect').hide();
+    }
+
+    /*获取产品*/
+    function getProduct(){
+        var productList;
+        var productName = $("#selectProcuct").val();
+        $.ajax({
+            type: "POST",
+            data:{'productName':productName},
+            url: "${path}/admin/signclosed/select_product",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    productList = data.returnMsg.productList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return productList;
+    }
+
     /*获取售后退货信息*/
     function get_book_goods_info() {
         $.ajax({
@@ -202,14 +369,15 @@
                     var backProduct = '';
                     if (backGoods.closedProdcues != null && backGoods.closedProdcues.length > 0) {
                         $.each(backGoods.closedProdcues,function(index,element){
-                            backProduct += '<span>'+ this.closedProductName + '*' + this.closedProdcueNumber + '</span>';
+                            backProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.closedProductName + '*' + this.closedProdcueNumber + '</span>';
                         })
                     }
                     if (backGoods.closedFittings != null && backGoods.closedFittings.length > 0) {
                         $.each(backGoods.closedFittings,function(index,element){
-                            backProduct += '<span>'+ this.fittingName + '*' + this.closedFittingNumber + '</span>';
+                            backProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.fittingName + '*' + this.closedFittingNumber + '</span>';
                         })
                     }
+                    $('#backGoodsProduct').html(backProduct);
                 }
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){

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

@@ -18,6 +18,7 @@
         .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
         .table-bg th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 20px;background-color: #32a3d8;color: #fff;}
     </style>
     <title></title>
 </head>
@@ -78,9 +79,9 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="请输入快递单号" id="noreasonBackBackLogisticsNo" name="noreasonBackBackLogisticsNo">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="寄回邮费" id="noreasonBackBackPostage" name="noreasonBackBackPostage">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="用户支付宝账户" id="noreasonBackAlipay" name="noreasonBackAlipay">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="请输入快递单号" id="noreasonBackBackLogisticsNo" name="noreasonBackBackLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="寄回邮费" id="noreasonBackBackPostage" name="noreasonBackBackPostage">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="用户支付宝账户" id="noreasonBackAlipay" name="noreasonBackAlipay">
             </div>
         </div>
         <div class="row cl">
@@ -107,10 +108,10 @@
                 <strong>寄件信息</strong>
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人姓名" id="noreasonBackBackName" name="noreasonBackBackName">
+                <input type="text" class="input-text" value="" placeholder="寄件人姓名" id="noreasonBackBackName" name="noreasonBackBackName">
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人电话" id="noreasonBackBackTel" name="noreasonBackBackTel">
+                <input type="text" style="width: 190px;margin:0 10px;" class="input-text" value="" placeholder="寄件人电话" id="noreasonBackBackTel" name="noreasonBackBackTel">
             </div>
         </div>
         <div class="row cl">
@@ -118,7 +119,32 @@
                 <strong>寄回产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div id="noreasonBackProduct" class="update-parts"></div>
+                <div id="noreasonBackProduct" class="update-parts" style="float: left;width: 410px;margin-right: 10px;"></div>
+                <input type="hidden" id="closed_products" name="closed_products" />
+                <input type="hidden" id="closed_fittings" name="closed_fittings" />
+                <div style="float: left;">
+                    <button type="button" style="cursor:pointer;height: 30px;" class="my-btn-search" onclick="showProductList();">修改产品</button>
+                </div>
+            </div>
+        </div>
+        <div class="cl">
+            <div class="formControls col-2 col-sm-2 text-r">
+            </div>
+            <div class="formControls col-9 col-sm-9" id="produceSelect" style="padding-top: 10px;display: none;">
+                <div>
+                    <input type="text" oninput="showUpdateSendProduct();" onpropertychange="showUpdateSendProduct();" class="input-text" style="width: 100%" id="selectProcuct" name="selectProcuct" placeholder="请输入产品名称搜索">
+                </div>
+                <table class="table table-border table-bg table-bordered">
+                    <thead>
+                    <tr class="text-c">
+                        <th style="text-align: center;" width="60">产品名称</th>
+                        <th style="text-align: center;" width="60">产品颜色</th>
+                        <th style="text-align: center;" width="60">产品配件</th>
+                    </tr>
+                    </thead>
+                    <tbody id="addProduct">
+                    </tbody>
+                </table>
             </div>
         </div>
         <div class="row cl">
@@ -158,8 +184,148 @@
             increaseArea: '20%'
         });
         get_noreason_info();
+        showUpdateSendProduct();
     });
 
+    /*显示所有产品及配件信息*/
+    function showUpdateSendProduct() {
+        var productList = getProduct() ; //所有产品
+        var html = "";
+        for(var i=0;i<productList.length;i++) {
+            var product = productList[i];
+            var produceFittings = product.fittingsList;  //获取该产品的所有配件
+            var colorList = product.colorList;  //该产品的所有颜色
+
+            var colorHtml = '';
+            if(colorList != null && colorList.length >0 ){
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+                    /*for(var k=0;k<orderItemList.length;k++){
+                        var item = orderItemList[k];
+                        if(item.itemColorId == color.colorId){
+                            number = item.itemNum;
+                        }
+                    }*/
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="75" class="input-color-name" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="hidden" class="input-produce-name" value="' + product.productName + '">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
+                }
+                colorHtml += '</table>';
+            }else{
+                colorHtml += '<span>暂无该产品的颜色!<span>';
+            }
+
+            var produceFittingsHtml = '';
+            if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
+                for(var m=0;m<produceFittings.length;m++){
+                    var produceFit = produceFittings[m];
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="75" class="input-fittings-name" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+                }
+                produceFittingsHtml += '</table>';
+            }else{
+                produceFittingsHtml += '<span>暂无产品配件!<span>';
+            }
+
+            var produceHtml = '<input type="hidden" value="'+ product.productId +'">' +
+                    '<span>'+  product.productName +'</span>';
+
+            html += ' <tr >' +
+                    '    <td width="70">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    colorHtml +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    produceFittingsHtml +
+                    '    </td>' +
+                    '</tr>';
+        }
+        html += '<tr><td colspan="3" style="text-align: center;"><button onClick="hideProductList();" class="btn btn-primary" type="button">确认</button></td></tr>'
+        $("#addProduct").html(html);
+    }
+
+    function showProductList() {
+        $('#produceSelect').show();
+    }
+
+    function hideProductList() {
+        var txt_product = '';
+        var color_numbers = '';
+        var fittings_numbers = '';
+        $("#addProduct").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var colorId = $(this).parent().find(".input-color-id").val();
+                var productName = $(this).parent().find(".input-produce-name").val();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                color_numbers += productId + ':' + colorId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ productName + '*' + number + '台</span>';
+            }
+        });
+        $("#addProduct").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var fittingsId = $(this).parent().find(".input-fittings-id").val();
+                var fittingsName = $(this).parent().parent().find(".input-fittings-name").html();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                fittings_numbers += productId + ':' + fittingsId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ fittingsName + '*' + number + '件</span>';
+            }
+        })
+        $('#noreasonBackProduct').html(txt_product);
+        $('#closed_products').val(color_numbers);
+        $('#closed_fittings').val(fittings_numbers);
+        $('#produceSelect').hide();
+    }
+
+    /*获取产品*/
+    function getProduct(){
+        var productList;
+        var productName = $("#selectProcuct").val();
+        $.ajax({
+            type: "POST",
+            data:{'productName':productName},
+            url: "${path}/admin/signclosed/select_product",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    productList = data.returnMsg.productList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return productList;
+    }
+
     /*获取售后无理由退货信息*/
     function get_noreason_info() {
         $.ajax({
@@ -198,18 +364,18 @@
                             $(this).iCheck('check');
                         }
                     });
-                    var backProduct = '';
+                    var noreasonProduct = '';
                     if (noreasonBack.closedProdcues != null && noreasonBack.closedProdcues.length > 0) {
                         $.each(noreasonBack.closedProdcues,function(index,element){
-                            backProduct += '<span>'+ this.closedProductName + '*' + this.closedProdcueNumber + '</span>';
+                            noreasonProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.closedProductName + '*' + this.closedProdcueNumber + '</span>';
                         })
                     }
                     if (noreasonBack.closedFittings != null && noreasonBack.closedFittings.length > 0) {
                         $.each(noreasonBack.closedFittings,function(index,element){
-                            backProduct += '<span>'+ this.fittingName + '*' + this.closedFittingNumber + '</span>';
+                            noreasonProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.fittingName + '*' + this.closedFittingNumber + '</span>';
                         })
                     }
-                    $('#update-noreason-back').show();
+                    $('#noreasonBackProduct').html(noreasonProduct);
                 }
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){

+ 8 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_reissue.ftl

@@ -50,7 +50,7 @@
                     <input type="radio" id="reissueSendStatus" name="reissueSendStatus" value="3">
                     <label for="tel-4">已收货</label>
                 </div>
-                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text text-c" value="" placeholder="Efast订单号" id="reissueBackEfastOrderId" name="reissueBackEfastOrderId">
+                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text" value="" placeholder="Efast订单号" id="reissueBackEfastOrderId" name="reissueBackEfastOrderId">
             </div>
         </div>
         <div class="row cl">
@@ -79,7 +79,7 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="请输入快递单号" id="reissueSendLogisticsNo" name="reissueSendLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="请输入快递单号" id="reissueSendLogisticsNo" name="reissueSendLogisticsNo">
             </div>
         </div>
         <div class="row cl">
@@ -99,7 +99,7 @@
                 <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="reissueSendName" name="reissueSendName">
             </div>
             <div class="formControls col-3 col-sm-3">
-                <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="reissueSendTel" name="reissueSendTel">
+                <input type="text" style="width: 190px;margin:0 10px;" class="input-text" value="" placeholder="填写收件人手机号" id="reissueSendTel" name="reissueSendTel">
             </div>
         </div>
         <div class="row cl">
@@ -118,6 +118,7 @@
                 <div style="width: 100px;display: inline-block;margin-right: 10px;">
                     <span class="select-box">
                         <select name="reissueAreaNumber" id="reissueAreaNumber" class="select"></select>
+                        <input type="hidden" name="merge_address" id="merge_address">
                     </span>
                 </div>
             </div>
@@ -234,6 +235,10 @@
     /*修改售后补寄信息*/
     function update_reissue_info() {
         var reissue_flag = checkReissue();
+        var reissueProvinceNumber = $("#reissueProvinceNumber").find("option:selected").text();
+        var reissueCityNumber = $("#reissueCityNumber").find("option:selected").text();
+        var reissueAreaNumber = $("#reissueAreaNumber").find("option:selected").text();
+        $('#merge_address').val(reissueProvinceNumber+'-'+reissueCityNumber+'-'+reissueAreaNumber);
         if (reissue_flag) {
             $.ajax({
                 cache: true,

+ 192 - 21
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_renewed.ftl

@@ -17,6 +17,7 @@
         .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
         .table-bg th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 20px;background-color: #32a3d8;color: #fff;}
     </style>
     <title></title>
 </head>
@@ -77,9 +78,9 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="请输入快递单号" id="renewedBackLogisticsNo" name="renewedBackLogisticsNo">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="寄回邮费" id="renewedBackPostage" name="renewedBackPostage">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="用户支付宝账户" id="renewedAlipay" name="renewedAlipay">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="请输入快递单号" id="renewedBackLogisticsNo" name="renewedBackLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="寄回邮费" id="renewedBackPostage" name="renewedBackPostage">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="用户支付宝账户" id="renewedAlipay" name="renewedAlipay">
             </div>
         </div>
         <div class="row cl">
@@ -106,10 +107,10 @@
                 <strong>寄件信息</strong>
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人姓名" id="renewedBackName" name="renewedBackName">
+                <input type="text" class="input-text" value="" placeholder="寄件人姓名" id="renewedBackName" name="renewedBackName">
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人电话" id="renewedBackTel" name="renewedBackTel">
+                <input type="text" class="input-text" value="" placeholder="寄件人电话" id="renewedBackTel" name="renewedBackTel">
             </div>
         </div>
         <div class="row cl">
@@ -117,10 +118,34 @@
                 <strong>寄回产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div class="update-parts" id="renewedProduct"></div>
+                <div class="update-parts" id="renewedProduct" style="float: left;width: 410px;margin-right: 10px;"></div>
+                <input type="hidden" id="closed_products" name="closed_products" />
+                <input type="hidden" id="closed_fittings" name="closed_fittings" />
+                <div style="float: left;">
+                    <button type="button" style="cursor:pointer;height: 30px;" class="my-btn-search" onclick="showProductList();">修改产品</button>
+                </div>
+            </div>
+        </div>
+        <div class="cl">
+            <div class="formControls col-2 col-sm-2 text-r">
+            </div>
+            <div class="formControls col-9 col-sm-9" id="produceSelect" style="padding-top: 10px;display: none;">
+                <div>
+                    <input type="text" oninput="showUpdateSendProduct();" onpropertychange="showUpdateSendProduct();" class="input-text" style="width: 100%" id="selectProcuct" name="selectProcuct" placeholder="请输入产品名称搜索">
+                </div>
+                <table class="table table-border table-bg table-bordered">
+                    <thead>
+                    <tr class="text-c">
+                        <th style="text-align: center;" width="60">产品名称</th>
+                        <th style="text-align: center;" width="60">产品颜色</th>
+                        <th style="text-align: center;" width="60">产品配件</th>
+                    </tr>
+                    </thead>
+                    <tbody id="addProduct">
+                    </tbody>
+                </table>
             </div>
         </div>
-
         <div class="row cl">
             <div class="formControls col-2 col-sm-2 text-r">
                 <strong>是否寄出</strong>
@@ -138,7 +163,7 @@
                     <input type="radio" name="renewedSendStatus" value="3">
                     <label for="tel-10">已收货</label>
                 </div>
-                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text text-c" value="" placeholder="Efast订单号" id="renewedBackEfastOrderId" name="renewedBackEfastOrderId">
+                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text" value="" placeholder="Efast订单号" id="renewedBackEfastOrderId" name="renewedBackEfastOrderId">
             </div>
         </div>
         <div class="row cl">
@@ -149,7 +174,7 @@
                 <input type="text" class="input-text" placeholder="填写收件人姓名" id="renewedSendName" name="renewedSendName">
             </div>
             <div class="formControls col-2 col-sm-2">
-                <input type="text" class="input-text" placeholder="填写收件人手机号" id="renewedSendTel" name="renewedSendTel">
+                <input type="text" style="width: 190px;margin:0 10px;" class="input-text" placeholder="填写收件人手机号" id="renewedSendTel" name="renewedSendTel">
             </div>
         </div>
         <div class="row cl">
@@ -168,6 +193,7 @@
                 <div style="width: 100px;display: inline-block;margin-right: 10px;">
                     <span class="select-box">
                         <select name="areaNumber" id="areaNumber" class="select"></select>
+                        <input type="hidden" id="merge_address" name="merge_address">
                     </span>
                 </div>
             </div>
@@ -204,7 +230,7 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="快递单号" id="renewedSendLogisticsNo" name="renewedSendLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="快递单号" id="renewedSendLogisticsNo" name="renewedSendLogisticsNo">
             </div>
         </div>
         <div class="row cl">
@@ -220,7 +246,7 @@
                 <strong>寄出产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div class="update-parts"><span>红色净水机(wx-1)x 1台</span><span>水箱 x 1件</span><span>t1 x 1件</span><span>t2 x 1件</span></div>
+                <div class="update-parts"></div>
             </div>
         </div>
         <div class="row cl">
@@ -304,8 +330,149 @@
             increaseArea: '20%'
         });
         get_renewed_info();
+        showUpdateSendProduct();
     });
 
+    /*显示所有产品及配件信息*/
+    function showUpdateSendProduct() {
+        var productList = getProduct() ; //所有产品
+        var html = "";
+        for(var i=0;i<productList.length;i++) {
+            var product = productList[i];
+            var produceFittings = product.fittingsList;  //获取该产品的所有配件
+            var colorList = product.colorList;  //该产品的所有颜色
+
+
+            var colorHtml = '';
+            if(colorList != null && colorList.length >0 ){
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+                    /*for(var k=0;k<orderItemList.length;k++){
+                        var item = orderItemList[k];
+                        if(item.itemColorId == color.colorId){
+                            number = item.itemNum;
+                        }
+                    }*/
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="75" class="input-color-name" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="hidden" class="input-produce-name" value="' + product.productName + '">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
+                }
+                colorHtml += '</table>';
+            }else{
+                colorHtml += '<span>暂无该产品的颜色!<span>';
+            }
+
+            var produceFittingsHtml = '';
+            if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
+                for(var m=0;m<produceFittings.length;m++){
+                    var produceFit = produceFittings[m];
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="75" class="input-fittings-name" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+                }
+                produceFittingsHtml += '</table>';
+            }else{
+                produceFittingsHtml += '<span>暂无产品配件!<span>';
+            }
+
+            var produceHtml = '<input type="hidden" value="'+ product.productId +'">' +
+                    '<span>'+  product.productName +'</span>';
+
+            html += ' <tr >' +
+                    '    <td width="70">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    colorHtml +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    produceFittingsHtml +
+                    '    </td>' +
+                    '</tr>';
+        }
+        html += '<tr><td colspan="3" style="text-align: center;"><button onClick="hideProductList();" class="btn btn-primary" type="button">确认</button></td></tr>'
+        $("#addProduct").html(html);
+    }
+
+    function showProductList() {
+        $('#produceSelect').show();
+    }
+
+    function hideProductList() {
+        var txt_product = '';
+        var color_numbers = '';
+        var fittings_numbers = '';
+        $("#addProduct").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var colorId = $(this).parent().find(".input-color-id").val();
+                var productName = $(this).parent().find(".input-produce-name").val();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                color_numbers += productId + ':' + colorId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ productName + '*' + number + '台</span>';
+            }
+        });
+        $("#addProduct").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var fittingsId = $(this).parent().find(".input-fittings-id").val();
+                var fittingsName = $(this).parent().parent().find(".input-fittings-name").html();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                fittings_numbers += productId + ':' + fittingsId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ fittingsName + '*' + number + '件</span>';
+            }
+        })
+        $('#renewedProduct').html(txt_product);
+        $('#closed_products').val(color_numbers);
+        $('#closed_fittings').val(fittings_numbers);
+        $('#produceSelect').hide();
+    }
+
+    /*获取产品*/
+    function getProduct(){
+        var productList;
+        var productName = $("#selectProcuct").val();
+        $.ajax({
+            type: "POST",
+            data:{'productName':productName},
+            url: "${path}/admin/signclosed/select_product",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    productList = data.returnMsg.productList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return productList;
+    }
+
     /*获取换新信息*/
     function get_renewed_info() {
         $.ajax({
@@ -340,13 +507,13 @@
                     }
                     var renewedProduct = '';
                     if (renewed.closedProdcues != null && renewed.closedProdcues.length > 0) {
-                        $.each(backGoods.closedProdcues,function(index,element){
-                            renewedProduct += '<span>'+ this.closedProductName + '*' + this.closedProdcueNumber + '台</span>';
+                        $.each(renewed.closedProdcues,function(index,element){
+                            renewedProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.closedProductName + '*' + this.closedProdcueNumber + '台</span>';
                         })
                     }
                     if (renewed.closedFittings != null && renewed.closedFittings.length > 0) {
                         $.each(renewed.closedFittings,function(index,element){
-                            renewedProduct += '<span>'+ this.fittingName + '*' + this.closedFittingNumber + '件</span>';
+                            renewedProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.fittingName + '*' + this.closedFittingNumber + '件</span>';
                         })
                     }
                     $('#renewedId').val(renewed.renewedId);
@@ -361,7 +528,7 @@
                         }
                     });
                     $('#renewedSchedule').html(renewedSchedule);
-                    $('#renewedProduct').val(renewedProduct);
+                    $('#renewedProduct').html(renewedProduct);
                     $("#renewedBackLogisticsCompany option[value='" + renewed.renewedBackLogisticsCompany + "']").attr("selected","true");
                     $("#renewedSendLogisticsCompany option[value='" + renewed.renewedSendLogisticsCompany + "']").attr("selected","true");
 
@@ -405,6 +572,10 @@
     /*修改换新信息*/
     function update_renewed_info() {
         var renewed_flag = checkRenewed();
+        var provinceNumber = $("#provinceNumber").find("option:selected").text();
+        var cityNumber = $("#cityNumber").find("option:selected").text();
+        var areaNumber = $("#areaNumber").find("option:selected").text();
+        $('#merge_address').val(provinceNumber+'-'+cityNumber+'-'+areaNumber);
         if (renewed_flag) {
             $.ajax({
                 cache: true,
@@ -601,13 +772,13 @@
     });
 
     /*监听省选择事件*/
-    $(document).on('change', '#repairProvinceNumber', function() {
-        var proId = $("#repairProvinceNumber").val();
-        $('#repairCityNumber option').remove();
-        getCity('repairCityNumber',proId);
+    $(document).on('change', '#provinceNumber', function() {
+        var proId = $("#provinceNumber").val();
+        $('#cityNumber option').remove();
+        getCity('cityNumber',proId);
         var cityId = $("#cityNumber").val();
-        $('#repairAreaNumber option').remove();
-        getDistrict('repairAreaNumber',cityId);
+        $('#areaNumber option').remove();
+        getDistrict('areaNumber',cityId);
     });
 
 </script>

+ 186 - 16
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_repair.ftl

@@ -13,11 +13,12 @@
     <link href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" rel="stylesheet" type="text/css" />
 <#--<link href="lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css" />-->
     <style>
-        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(images/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
+        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
         .select-box{background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size: auto 100%;}
         .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
         .table-bg th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 20px;background-color: #32a3d8;color: #fff;}
     </style>
     <title></title>
 </head>
@@ -78,9 +79,9 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="请输入快递单号" id="repairBackLogisticsNo" name="repairBackLogisticsNo">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="寄回邮费" id="repairBackPostage" name="repairBackPostage">
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="用户支付宝账户" id="repairAlipay" name="repairAlipay">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="请输入快递单号" id="repairBackLogisticsNo" name="repairBackLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="寄回邮费" id="repairBackPostage" name="repairBackPostage">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="用户支付宝账户" id="repairAlipay" name="repairAlipay">
             </div>
         </div>
         <div class="row cl">
@@ -107,10 +108,10 @@
                 <strong>寄件信息</strong>
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人姓名" id="repairBackName" name="repairBackName">
+                <input type="text" class="input-text" value="" placeholder="寄件人姓名" id="repairBackName" name="repairBackName">
             </div>
             <div class="formControls col-5 col-sm-5">
-                <input type="text" class="input-text text-c" value="" placeholder="寄件人电话" id="repairBackTel" name="repairBackTel">
+                <input type="text" class="input-text" value="" placeholder="寄件人电话" id="repairBackTel" name="repairBackTel">
             </div>
         </div>
         <div class="row cl">
@@ -118,10 +119,34 @@
                 <strong>寄回产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div class="update-parts" id="repairProduct"></div>
+                <div class="update-parts" id="repairProduct" style="float: left;width: 410px;margin-right: 10px;"></div>
+                <input type="hidden" id="closed_products" name="closed_products" />
+                <input type="hidden" id="closed_fittings" name="closed_fittings" />
+                <div style="float: left;">
+                    <button type="button" style="cursor:pointer;height: 30px;" class="my-btn-search" onclick="showProductList();">修改产品</button>
+                </div>
+            </div>
+        </div>
+        <div class="cl">
+            <div class="formControls col-2 col-sm-2 text-r">
+            </div>
+            <div class="formControls col-9 col-sm-9" id="produceSelect" style="padding-top: 10px;display: none;">
+                <div>
+                    <input type="text" oninput="showUpdateSendProduct();" onpropertychange="showUpdateSendProduct();" class="input-text" style="width: 100%" id="selectProcuct" name="selectProcuct" placeholder="请输入产品名称搜索">
+                </div>
+                <table class="table table-border table-bg table-bordered">
+                    <thead>
+                    <tr class="text-c">
+                        <th style="text-align: center;" width="60">产品名称</th>
+                        <th style="text-align: center;" width="60">产品颜色</th>
+                        <th style="text-align: center;" width="60">产品配件</th>
+                    </tr>
+                    </thead>
+                    <tbody id="addProduct">
+                    </tbody>
+                </table>
             </div>
         </div>
-
         <div class="row cl">
             <div class="formControls col-2 col-sm-2 text-r">
                 <strong>是否寄出</strong>
@@ -139,7 +164,7 @@
                     <input type="radio" name="repairSendStatus" value="3">
                     <label for="tel-10">已收货</label>
                 </div>
-                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text text-c" value="" placeholder="Efast订单号" id="repairBackEfastOrderId" name="repairBackEfastOrderId">
+                Efast订单号<input style="width: 200px;margin:0 10px;" type="text" class="input-text" value="" placeholder="Efast订单号" id="repairBackEfastOrderId" name="repairBackEfastOrderId">
             </div>
         </div>
         <div class="row cl">
@@ -150,7 +175,7 @@
                 <input type="text" class="input-text" placeholder="填写收件人姓名" id="repairSendName" name="repairSendName">
             </div>
             <div class="formControls col-2 col-sm-2">
-                <input type="text" class="input-text" placeholder="填写收件人手机号" id="repairSendTel" name="repairSendTel">
+                <input type="text" style="width: 190px;margin:0 10px;" class="input-text" placeholder="填写收件人手机号" id="repairSendTel" name="repairSendTel">
             </div>
         </div>
         <div class="row cl">
@@ -169,6 +194,7 @@
                 <div style="width: 100px;display: inline-block;margin-right: 10px;">
                     <span class="select-box">
                         <select name="repairAreaNumber" id="repairAreaNumber" class="select"></select>
+                        <input type="hidden" name="merge_address" id="merge_address">
                     </span>
                 </div>
             </div>
@@ -205,7 +231,7 @@
 				</select>
 			</span>
                 </div>
-                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text text-c" value="" placeholder="快递单号" id="repairSendLogisticsNo" name="repairSendLogisticsNo">
+                <input style="width: 120px;margin-right: 10px;" type="text" class="input-text" value="" placeholder="快递单号" id="repairSendLogisticsNo" name="repairSendLogisticsNo">
             </div>
         </div>
         <div class="row cl">
@@ -221,7 +247,7 @@
                 <strong>寄出产品</strong>
             </div>
             <div class="formControls col-10 col-sm-10">
-                <div class="update-parts"><span>红色净水机(wx-1)x 1台</span><span>水箱 x 1件</span><span>t1 x 1件</span><span>t2 x 1件</span></div>
+                <div class="update-parts"></div>
             </div>
         </div>
         <div class="row cl">
@@ -305,8 +331,149 @@
             increaseArea: '20%'
         });
         get_repair_info();
+        showUpdateSendProduct();
     });
 
+    /*显示所有产品及配件信息*/
+    function showUpdateSendProduct() {
+        var productList = getProduct() ; //所有产品
+        var html = "";
+        for(var i=0;i<productList.length;i++) {
+            var product = productList[i];
+            var produceFittings = product.fittingsList;  //获取该产品的所有配件
+            var colorList = product.colorList;  //该产品的所有颜色
+
+
+            var colorHtml = '';
+            if(colorList != null && colorList.length >0 ){
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+                    /*for(var k=0;k<orderItemList.length;k++){
+                        var item = orderItemList[k];
+                        if(item.itemColorId == color.colorId){
+                            number = item.itemNum;
+                        }
+                    }*/
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="75" class="input-color-name" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="hidden" class="input-produce-name" value="' + product.productName + '">' +
+                                '             <input type="text" class="input-text input-color-number number-input" style="width: 100%;" value="'+ number +'" placeholder="产品数量"  id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
+                }
+                colorHtml += '</table>';
+            }else{
+                colorHtml += '<span>暂无该产品的颜色!<span>';
+            }
+
+            var produceFittingsHtml = '';
+            if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
+                for(var m=0;m<produceFittings.length;m++){
+                    var produceFit = produceFittings[m];
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="75" class="input-fittings-name" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="25" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="配件数量" id="" name="" onkeyup="keyFun($(this))" onpaste="keyFun($(this))" >' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+                }
+                produceFittingsHtml += '</table>';
+            }else{
+                produceFittingsHtml += '<span>暂无产品配件!<span>';
+            }
+
+            var produceHtml = '<input type="hidden" value="'+ product.productId +'">' +
+                    '<span>'+  product.productName +'</span>';
+
+            html += ' <tr >' +
+                    '    <td width="70">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    colorHtml +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
+                    produceFittingsHtml +
+                    '    </td>' +
+                    '</tr>';
+        }
+        html += '<tr><td colspan="3" style="text-align: center;"><button onClick="hideProductList();" class="btn btn-primary" type="button">确认</button></td></tr>'
+        $("#addProduct").html(html);
+    }
+
+    function showProductList() {
+        $('#produceSelect').show();
+    }
+
+    function hideProductList() {
+        var txt_product = '';
+        var color_numbers = '';
+        var fittings_numbers = '';
+        $("#addProduct").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var colorId = $(this).parent().find(".input-color-id").val();
+                var productName = $(this).parent().find(".input-produce-name").val();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                color_numbers += productId + ':' + colorId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ productName + '*' + number + '台</span>';
+            }
+        });
+        $("#addProduct").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var productId = $(this).parent().find(".input-produce-id").val();
+                var fittingsId = $(this).parent().find(".input-fittings-id").val();
+                var fittingsName = $(this).parent().parent().find(".input-fittings-name").html();
+                //var colorName = $(this).parent().find(".input-color-name").val();
+                //封装更换的所有产品
+                fittings_numbers += productId + ':' + fittingsId + ":" + number + ",";
+                txt_product += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ fittingsName + '*' + number + '件</span>';
+            }
+        })
+        $('#repairProduct').html(txt_product);
+        $('#closed_products').val(color_numbers);
+        $('#closed_fittings').val(fittings_numbers);
+        $('#produceSelect').hide();
+    }
+
+    /*获取产品*/
+    function getProduct(){
+        var productList;
+        var productName = $("#selectProcuct").val();
+        $.ajax({
+            type: "POST",
+            data:{'productName':productName},
+            url: "${path}/admin/signclosed/select_product",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    productList = data.returnMsg.productList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return productList;
+    }
+
     /*获取维修信息*/
     function get_repair_info() {
         $.ajax({
@@ -321,7 +488,6 @@
                     getProvince('repairProvinceNumber');
                     getCity('repairCityNumber',repair.provinceNumber);
                     getDistrict('repairAreaNumber',repair.cityNumber);
-                    console.log(repair);
                     var repairSchedule = '';
                     switch (repair.repairBackStatus) {
                         case 1:repairSchedule += '待寄回,';break;
@@ -342,12 +508,12 @@
                     var repairProduct = '';
                     if (repair.closedProdcues != null && repair.closedProdcues.length > 0) {
                         $.each(repair.closedProdcues,function(index,element){
-                            repairProduct += '<span>'+ this.closedProductName + '*' + this.closedProdcueNumber + '台</span>';
+                            repairProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.closedProductName + '*' + this.closedProdcueNumber + '台</span>';
                         })
                     }
                     if (repair.closedFittings != null && repair.closedFittings.length > 0) {
                         $.each(repair.closedFittings,function(index,element){
-                            repairProduct += '<span>'+ this.fittingName + '*' + this.closedFittingNumber + '件</span>';
+                            repairProduct += '<span style="margin-bottom: 10px;display: inline-block;float: left;">'+ this.fittingName + '*' + this.closedFittingNumber + '件</span>';
                         })
                     }
                     $('#repairId').val(repair.repairId);
@@ -380,7 +546,7 @@
                     $('#repairBackName').val(repair.repairBackName);
                     $('#repairBackTel').val(repair.repairBackTel);
                     //$('#repairBackMachineNo').val(repair.repairBackMachineNo);
-                    $('#repairBackEfastOrderId').html(repair.repairBackEfastOrderId);
+                    $('#repairBackEfastOrderId').val(repair.repairBackEfastOrderId);
                     $('#repairSendName').val(repair.repairSendName);
                     $('#repairSendTel').val(repair.repairSendTel);
                     $('#repairSendAddress').val(repair.repairSendAddress);
@@ -406,6 +572,10 @@
     /*修改维修信息*/
     function update_repair_info() {
         var repair_flag = checkRepair();
+        var repairProvinceNumber = $("#repairProvinceNumber").find("option:selected").text();
+        var repairCityNumber = $("#repairCityNumber").find("option:selected").text();
+        var repairAreaNumber = $("#repairAreaNumber").find("option:selected").text();
+        $('#merge_address').val(repairProvinceNumber+'-'+repairCityNumber+'-'+repairAreaNumber);
         if (repair_flag) {
             $.ajax({
                 cache: true,

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/add_remark.ftl

@@ -65,7 +65,7 @@
         $.ajax({
             cache: true,
             type: "POST",
-            url: "${path}/admin/detect/add_remark",
+            url: "${path}/admin/detect/update_complete",
             data:$('#form-admin-add').serialize(),// 你的formid
             async: false,
             success: function(data){