Browse Source

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

# Conflicts:
#	watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachineController.java
#	watero-rst-web/src/main/webapp/WEB-INF/views/pts/machine/addRenovationMachine.ftl
liujiankang 7 years ago
parent
commit
f4a7c8d510
29 changed files with 745 additions and 140 deletions
  1. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java
  2. 6 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  3. 325 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  4. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/BackGoodsMapper.java
  5. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedFittingMapper.java
  6. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ClosedProdcueMapper.java
  7. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/NoreasonBackMapper.java
  8. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java
  9. 6 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java
  10. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RepairMapper.java
  11. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SendFittingMapper.java
  12. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SendProdcueMapper.java
  13. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/VisitMapper.java
  14. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml
  15. 15 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/closedFittingMapper.xml
  16. 14 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/closedProdcueMapper.xml
  17. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  18. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/noreasonBackMapper.xml
  19. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/questionDescribeMapper.xml
  20. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml
  21. 10 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml
  22. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml
  23. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/sendFittingMapper.xml
  24. 9 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/sendProdcueMapper.xml
  25. 3 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/visitMapper.xml
  26. 123 7
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  27. 55 53
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl
  28. 2 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl
  29. 108 49
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_customer.ftl

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

@@ -75,6 +75,7 @@ public class CustomerInfo  implements Serializable {
     private Integer typeCompany;    // 所属商城   1:美国watero; 2:上朵电动牙刷  3:优尼雅净水机
 
     /*  客诉问题关联qa查询表  */
+    private Integer describeId;        //客诉问题id
     private Integer complaintId;        //客诉类型id
     private String smallClassName;      //客诉小类名称
     private String describeTitle;       //客诉问题标题
@@ -563,4 +564,12 @@ public class CustomerInfo  implements Serializable {
     public void setCityName(String cityName) {
         this.cityName = cityName;
     }
+
+    public Integer getDescribeId() {
+        return describeId;
+    }
+
+    public void setDescribeId(Integer describeId) {
+        this.describeId = describeId;
+    }
 }

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

@@ -21,6 +21,12 @@ public interface CustomerService {
     Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder);
 
     /**
+     * 修改客诉
+     * @param customerInfo
+     * @return
+     */
+    Integer updateCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder);
+    /**
      * 添加订单到efast
      * @param salesOrder
      * @return

+ 325 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -268,6 +268,330 @@ public class CustomerServiceImpl implements CustomerService {
     }
 
 
+    @Override
+    @Transactional
+    public Integer updateCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder){
+
+        //删除旧的售后数据
+        deleteCustomerAfterSales(customerInfo);
+        //修改客诉基本信息
+        Integer flag = 0;
+        flag = customerInfoMapper.updateCustomerInfo(customerInfo);
+        if(flag < 1){
+            throw new RuntimeException("修改客诉失败");
+        }
+        logger.info("-----------修改客诉-修改客诉基本信息---------------");
+
+        QuestionDescribe questionDescribe = new QuestionDescribe();
+        questionDescribe.setCustomerId(customerInfo.getCustomerId());
+        questionDescribe.setDescribeId(customerInfo.getDescribeId());//客诉问题主键
+        questionDescribe.setDescribeTitle(customerInfo.getDescribeTitle());  //客诉问题标题
+        questionDescribe.setDescribeContent(customerInfo.getDescribeContent());  //客诉问题描述
+        questionDescribe.setDescribeHandleDesc(customerInfo.getDescribeHandleDesc());   //处理描述
+        questionDescribeMapper.updateByPrimaryKeySelective(questionDescribe);
+
+        logger.info("-----------修改客诉-修改客诉问题---------------");
+
+        if ("2".equals(customerInfo.getCustomerIsVisit())) {
+            Visit visit = new Visit();
+            visit.setCustomerId(customerInfo.getCustomerId());
+            visit.setAdminId(customerInfo.getAdminId());
+            visit.setDesignatedAdminId(customerInfo.getVisitAdminId());
+            visit.setVisitName(customerInfo.getVisitName());
+            visit.setVisitTel(customerInfo.getVisitTel());
+            visit.setVisitDate(customerInfo.getVisitDate());
+            visit.setVisitTimeSelect(customerInfo.getVisitTimeSelect());
+            visit.setVisitStatus(1);    //回访状态
+            flag = visitMapper.addVisitInfo(visit);
+            if(flag < 1){
+                throw new RuntimeException("修改客诉回访失败");
+            }
+            logger.info("-----------修改客诉-修改客诉回访信息---------------");
+        }
+
+        if (2 == customerInfo.getCustomerCounselType() &&
+                (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
+                        customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)
+                ){
+
+            salesOrder = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
+            logger.info("-----------修改客诉-查询订单--------------");
+
+            CustomerCommon customerCommon = customerInfo.getCustomerCommon();
+            customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
+            customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
+            customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
+            customerCommon.setRelationState(1); //状态  默认使用中
+            customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
+            customerCommon.setTransactionNumber(customerInfo.getTransactionNumber());   //外部交易号
+
+            customerCommon.setRelationIsTransfer(0);    //是否已转账邮费  0:不需要
+            customerCommon.setRelationBackPostage(0);   //邮费默认为0
+
+            customerCommon.setRelationBackName(customerCommon.getRelationSendName()); //姓名
+            customerCommon.setRelationBackTel(customerCommon.getRelationSendTel()); //电话号码
+
+            /*  初始化产品类型,名称,配件名称 */
+            customerService.setName(customerCommon);
+            logger.info("-----------修改客诉-初始化产品,配件信息--------------");
+
+            ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();  //品质检测
+            ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
+            Map<String,Object> map;
+            boolean isReturn = false;
+            switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+                case 3: //换新
+                    customerService.chargebackEfastOrder(customerCommon,salesOrder,2);    //原订单生成退单
+
+                    map = customerService.sendEfastOrder(customerCommon,salesOrder);  //换新需要向Efast推送一条换新发货的订单
+                    if(map.get("status") == 1){
+                        customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
+                        complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
+                    }else{
+                        throw new RuntimeException("换新创建Efast订单失败");
+                    }
+                    complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
+                    customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
+                    complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
+                    customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
+                    break;
+                case 4: //维修
+
+                    customerService.chargebackEfastOrder(customerCommon,salesOrder,2);    //原订单生成退单
+
+                    map = customerService.sendEfastOrder(customerCommon,salesOrder);  //维修需要向Efast推送一条维修发货的订单
+                    if(map.get("status") == 1){
+                        customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
+                        complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
+                    }else{
+                        throw new RuntimeException("维修创建Efast订单失败");
+                    }
+                    complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
+                    customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
+                    complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
+                    customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
+                    break;
+                case 5: //补发  不用创建仓储签收任务
+                    map = customerService.sendEfastOrder(customerCommon,salesOrder);  //补发需要向Efast推送一条发货的订单
+                    if(map.get("status") == 1){
+                        customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
+                        complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
+                    }else{
+                        throw new RuntimeException("补发创建Efast订单失败");
+                    }
+                    break;
+                case 6: //退货
+
+                    customerService.chargebackEfastOrder(customerCommon,salesOrder,3);    //原订单生成退单
+
+                    complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
+                    customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
+                    complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
+                    customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
+                    break;
+                case 7: //无理由退货
+
+                    customerService.chargebackEfastOrder(customerCommon,salesOrder,3);    //原订单生成退单
+
+                    complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
+                    customerService.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
+                    complaintDetectInfo.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储签收id
+                    customerService.saveComplaintDetectInfo(complaintDetectInfo,customerCommon);   //创建品检
+                    break;
+            }
+            logger.info("-----------修改客诉-创建仓储/品检成功--------------");
+            customerCommon.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储id
+
+            Object object = CustomerCommon.getRelation(customerInfo.getCustomerIsSolve(), customerCommon);
+            Integer relationId = 0;
+            switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+                case 3: //换新
+                    Renewed renewed = (Renewed) object;
+                    flag = renewedMapper.insert(renewed);
+                    relationId = renewed.getRenewedId();
+                    break;
+                case 4: //维修
+                    Repair repair = (Repair) object;
+                    flag = repairMapper.insert(repair);
+                    relationId = repair.getRepairId();
+                    break;
+                case 5: //补发
+                    Reissue reissue = (Reissue) object;
+                    flag = reissueMapper.insert(reissue);
+                    relationId = reissue.getReissueId();
+                    break;
+                case 6: //退货
+                    BackGoods backGoods = (BackGoods) object;
+                    flag = backGoodsMapper.insert(backGoods);
+                    relationId = backGoods.getBackGoodsId();
+                    break;
+                case 7: //无理由退货
+                    NoreasonBack noreasonBack = (NoreasonBack) object;
+                    flag = noreasonBackMapper.insert(noreasonBack);
+                    relationId = noreasonBack.getNoreasonBackId();
+                    break;
+            }
+            if (flag < 1) {
+                throw new RuntimeException("添加客诉处理结果失败");
+            }
+            logger.info("-----------修改客诉-添加换新/维修/补发/退货/无理由退货信息成功--------------");
+            customerCommon.setRelationId(relationId);
+
+            CustomerCommon.setProduceOrFitting(customerInfo.getCustomerIsSolve(),customerCommon);
+
+            if(customerCommon.getClosedFittings()!=null && customerCommon.getClosedFittings().size() > 0){
+                closedFittingMapper.insert(customerCommon.getClosedFittings());
+            }
+            if(customerCommon.getClosedProdcues() != null && customerCommon.getClosedProdcues().size()>0){
+                closedProdcueMapper.insert(customerCommon.getClosedProdcues());
+            }
+            if(customerCommon.getSendProdcues() != null && customerCommon.getSendProdcues().size() > 0){
+                sendProdcueMapper.insert(customerCommon.getSendProdcues());
+            }
+            if(customerCommon.getSendFittings() != null && customerCommon.getSendFittings().size() > 0){
+                sendFittingMapper.insert(customerCommon.getSendFittings());
+            }
+            logger.info("-----------添加客诉-寄回寄出产品配件成功--------------");
+        }
+        return flag;
+    }
+
+    /**
+     * 删除旧的售后数据
+     * @param customer
+     */
+    public void deleteCustomerAfterSales(CustomerInfo customer){
+        CustomerInfo customerInfo = customerInfoMapper.getCustomerInfo(customer.getCustomerId());
+        //删除回访信息
+        if ("2".equals(customerInfo.getCustomerIsVisit())){
+            visitMapper.deleteByPrimaryKey(customer.getCustomerId());
+        }
+        //查询旧客诉类型,判断是否修改了客诉类型
+        Integer oldIsSolve = customerInfo.getCustomerIsSolve();// //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+        ClosedProdcue closedrecord = new ClosedProdcue();
+        ClosedFitting closedRecord = new ClosedFitting();
+        SendProdcue sendProdcue = new SendProdcue();
+        SendFitting sendFitting = new SendFitting();
+        CustomerCommon customerCommon = customerInfo.getCustomerCommon();
+        SalesOrder salesOrder = new SalesOrder();
+        if(oldIsSolve > 2){
+            customerCommon = customerInfo.getCustomerCommon();
+            customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
+            customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
+            customerCommon.setRelationSendStatus(1); //寄送状态 1:未寄送
+            customerCommon.setRelationState(1); //状态  默认使用中
+            customerCommon.setTransactionNumber(customerInfo.getTransactionNumber());   //外部交易号
+            customerCommon.setRelationIsTransfer(0);    //是否已转账邮费  0:不需要
+            customerCommon.setRelationBackPostage(0);   //邮费默认为0
+            customerCommon.setRelationBackName(customerCommon.getRelationSendName()); //姓名
+            customerCommon.setRelationBackTel(customerCommon.getRelationSendTel()); //电话号码
+            /*  初始化产品类型,名称,配件名称 */
+            /*customerService.setName(customerCommon);*/
+        }
+        switch (oldIsSolve){
+            case 3:
+                //删除换新数据
+                Renewed renewed = new Renewed();
+                renewed.setCustomerId(customer.getCustomerId());
+                //查询换新数据id
+                renewed = renewedMapper.getRenewedInfo(renewed);
+                if(customer.getCustomerIsSolve() < 3){ //从维修换货补发修改为已解决或未解决时,原订单生成退单
+                    salesOrder = salesOrderMapper.getSalesOrderById(renewed.getOrderId());
+                    customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
+                    SendProdcue record = new SendProdcue();
+                    record.setRelationId(renewed.getRenewedId());
+                    customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
+                    customerService.setName(customerCommon);
+                    customerService.chargebackEfastOrder(customerCommon,salesOrder,8);
+                }
+                //删除寄出寄回产品
+                closedRecord.setRelationId(renewed.getRenewedId());
+                closedFittingMapper.deleteByPrimaryKey(closedRecord);
+                closedrecord.setRelationId(renewed.getRenewedId());
+                closedProdcueMapper.deleteByPrimaryKey(closedrecord);
+                sendProdcue.setRelationId(renewed.getRenewedId());
+                sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
+                sendFitting.setRelationId(renewed.getRenewedId());
+                sendFittingMapper.deleteByPrimaryKey(sendFitting);
+                renewedMapper.deleteByPrimaryKey(renewed);
+                break;
+            case 4:
+                //删除维修数据
+                Repair repair = new Repair();
+                repair.setCustomerId(customer.getCustomerId());
+                //查询维修数据id
+                repair = repairMapper.getRepairInfo(repair);
+                if(customer.getCustomerIsSolve() < 3) { //从维修换货补发修改为已解决或未解决时,原订单生成退单
+                    salesOrder = salesOrderMapper.getSalesOrderById(repair.getOrderId());
+                    customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
+                    SendProdcue record = new SendProdcue();
+                    record.setRelationId(repair.getRepairId());
+                    customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
+                    customerService.setName(customerCommon);
+                    customerService.chargebackEfastOrder(customerCommon, salesOrder, 8);    //从维修换货补发修改为已解决或未解决时,原订单生成退单
+                }
+                //删除寄出寄回产品
+                closedRecord.setRelationId(repair.getRepairId());
+                closedFittingMapper.deleteByPrimaryKey(closedRecord);
+                closedrecord.setRelationId(repair.getRepairId());
+                closedProdcueMapper.deleteByPrimaryKey(closedrecord);
+                sendProdcue.setRelationId(repair.getRepairId());
+                sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
+                sendFitting.setRelationId(repair.getRepairId());
+                sendFittingMapper.deleteByPrimaryKey(sendFitting);
+                repairMapper.deleteByPrimaryKey(repair);
+                break;
+            case 5:
+                //删除补发数据
+                Reissue reissue = new Reissue();
+                reissue.setCustomerId(customer.getCustomerId());
+                //查询补发数据id
+                reissue = reissueMapper.getReissue(reissue);
+                if(customer.getCustomerIsSolve() < 3) { //从维修换货补发修改为已解决或未解决时,原订单生成退单
+                    salesOrder = salesOrderMapper.getSalesOrderById(reissue.getOrderId());
+                    customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
+                    SendProdcue record = new SendProdcue();
+                    record.setRelationId(reissue.getReissueId());
+                    customerCommon.setSendProdcues(sendProdcueMapper.listSendProdcue(record));
+                    customerService.setName(customerCommon);
+                    customerService.chargebackEfastOrder(customerCommon, salesOrder, 8);    //从维修换货补发修改为已解决或未解决时,原订单生成退单
+                }
+                //删除寄出产品
+                sendProdcue.setRelationId(reissue.getReissueId());
+                sendProdcueMapper.deleteByPrimaryKey(sendProdcue);
+                sendFitting.setRelationId(reissue.getReissueId());
+                sendFittingMapper.deleteByPrimaryKey(sendFitting);
+                reissueMapper.deleteByPrimaryKey(reissue);
+                break;
+            case 6:
+                //删除退货数据
+                BackGoods backGoods = new BackGoods();
+                backGoods.setCustomerId(customer.getCustomerId());
+                //查询维修数据id
+                backGoods = backGoodsMapper.getBackGoods(backGoods);
+                //删除寄出寄回产品
+                closedRecord.setRelationId(backGoods.getBackGoodsId());
+                closedFittingMapper.deleteByPrimaryKey(closedRecord);
+                closedrecord.setRelationId(backGoods.getBackGoodsId());
+                closedProdcueMapper.deleteByPrimaryKey(closedrecord);
+                backGoodsMapper.deleteByPrimaryKey(backGoods);
+                break;
+            case 7:
+                //删除无理由退货数据
+                NoreasonBack noreasonBack = new NoreasonBack();
+                noreasonBack.setCustomerId(customer.getCustomerId());
+                //查询维修数据id
+                noreasonBack = noreasonBackMapper.getNoreasonBack(noreasonBack);
+                //删除寄出寄回产品
+                closedRecord.setRelationId(noreasonBack.getNoreasonBackId());
+                closedFittingMapper.deleteByPrimaryKey(closedRecord);
+                closedrecord.setRelationId(noreasonBack.getNoreasonBackId());
+                closedProdcueMapper.deleteByPrimaryKey(closedrecord);
+                noreasonBackMapper.deleteByPrimaryKey(noreasonBack);
+                break;
+        }
+    }
+
     /**
      * 产品配件初始化
      * @param cc
@@ -655,7 +979,7 @@ public class CustomerServiceImpl implements CustomerService {
         }
         efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //交易号
         efastOrder.setOrderPostFirm(salesOrder.getSalesPostFirm()); //物流代码
-        efastOrder.setOrderDealCode(salesOrder.getSalesDealCode()); //物流单号
+        efastOrder.setOrderPostNum(salesOrder.getSalesPostNum()); //物流单号
         efastOrder.setOrderId(salesOrder.getSalesOrderId());        //订单编号
         efastOrder.setItemList(itemList);
 

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

@@ -6,7 +6,7 @@ import java.util.List;
 
 
 public interface BackGoodsMapper {
-    int deleteByPrimaryKey(Integer backGoodsId);
+    int deleteByPrimaryKey(BackGoods record);
 
     int insert(BackGoods record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.ClosedFitting;
 import java.util.List;
 
 public interface ClosedFittingMapper {
-    int deleteByPrimaryKey(Integer closedFittingId);
+    int deleteByPrimaryKey(ClosedFitting record);
 
     int insert(List<ClosedFitting> record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.ClosedProdcue;
 import java.util.List;
 
 public interface ClosedProdcueMapper {
-    int deleteByPrimaryKey(Integer closedProdcueId);
+    int deleteByPrimaryKey(ClosedProdcue record);
 
     int insert(List<ClosedProdcue> record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.NoreasonBack;
 import java.util.List;
 
 public interface NoreasonBackMapper {
-    int deleteByPrimaryKey(Integer noreasonBackId);
+    int deleteByPrimaryKey(NoreasonBack noreasonBack);
 
     int insert(NoreasonBack record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.Reissue;
 import java.util.List;
 
 public interface ReissueMapper {
-    int deleteByPrimaryKey(Integer reissueId);
+    int deleteByPrimaryKey(Reissue record);
 
     int insert(Reissue record);
 

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

@@ -6,7 +6,12 @@ import com.iamberry.rst.core.cm.Renewed;
 import java.util.List;
 
 public interface RenewedMapper {
-    int deleteByPrimaryKey(Integer renewedId);
+    /**
+     * 删除换新数据
+     * @param record
+     * @return
+     */
+    int deleteByPrimaryKey(Renewed record);
 
     int insert(Renewed record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.Repair;
 import java.util.List;
 
 public interface RepairMapper {
-    int deleteByPrimaryKey(Integer repairId);
+    int deleteByPrimaryKey(Repair record);
 
     int insert(Repair record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.SendFitting;
 import java.util.List;
 
 public interface SendFittingMapper {
-    int deleteByPrimaryKey(Integer sendFittingId);
+    int deleteByPrimaryKey(SendFitting record);
 
     int insert(List<SendFitting> record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.SendProdcue;
 import java.util.List;
 
 public interface SendProdcueMapper {
-    int deleteByPrimaryKey(Integer sendProdcueId);
+    int deleteByPrimaryKey(SendProdcue record);
 
     int insert(List<SendProdcue> record);
 

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

@@ -5,7 +5,7 @@ import com.iamberry.rst.core.cm.Visit;
 import java.util.List;
 
 public interface VisitMapper {
-    int deleteByPrimaryKey(Integer visitId);
+    int deleteByPrimaryKey(Integer customerId);
 
     /**
      * 添加客诉回访信息

+ 9 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml

@@ -123,9 +123,16 @@
     ORDER BY d.detect_id ASC
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="BackGoods" >
     delete from tb_rst_back_goods
-    where back_goods_id = #{backGoodsId,jdbcType=INTEGER}
+    <where>
+      <if test="backGoodsId != null" >
+        back_goods_id = #{backGoodsId}
+      </if>
+      <if test="customerId != null">
+        AND  customer_id = #{customerId}
+      </if>
+    </where>
   </delete>
   <insert id="insert" parameterType="BackGoods" useGeneratedKeys="true"  keyProperty="backGoodsId">
     insert into tb_rst_back_goods (customer_id, order_id,

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

@@ -37,11 +37,25 @@
     AND
       closed_fitting_type = #{closedFittingType}
   </delete>
+  <!-- 删除寄回配件 -->
+  <delete id="deleteByPrimaryKey" parameterType="ClosedFitting">
+    delete from
+    tb_rst_closed_fitting
+    <where>
+      <if test="relationId != null and relationId != ''">
+        relation_id = #{relationId}
+      </if>
+      <if test="closedFittingId != null and closedFittingId != ''">
+        and closed_fitting_id = #{closedFittingId}
+      </if>
+    </where>
+  </delete>
 
   <!-- 获取寄回配件集合 -->
   <select id="listClosedFitting" parameterType="ClosedFitting" resultType="ClosedFitting">
     select
-      cf.closed_fitting_number closedFittingNumber,
+      /*cf.closed_fitting_number closedFittingNumber,*/
+      cf.*,
       pf.fittings_name closedFittingsName
     from
       tb_rst_closed_fitting cf

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

@@ -17,10 +17,6 @@
     from tb_rst_closed_prodcue
     where closed_prodcue_id = #{closedProdcueId,jdbcType=INTEGER}
   </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
-    delete from tb_rst_closed_prodcue
-    where closed_prodcue_id = #{closedProdcueId,jdbcType=INTEGER}
-  </delete>
 
   <insert id="insert" parameterType="ClosedProdcue" >
     insert into tb_rst_closed_prodcue ( relation_id, product_id,
@@ -43,6 +39,20 @@
     and
       closed_prodcue_type = #{closedProdcueType}
   </delete>
+  <!-- 删除寄回产品信息 -->
+  <delete id="deleteByPrimaryKey" parameterType="ClosedProdcue">
+    delete from
+    tb_rst_closed_prodcue
+    <where>
+      <if test="relationId != null and relationId != ''">
+        relation_id = #{relationId}
+      </if>
+      <if test="closedProdcueId != null and closedProdcueId != ''">
+        and closed_prodcue_id = #{closedProdcueId}
+      </if>
+    </where>
+  </delete>
+
 
   <update id="updateByPrimaryKeySelective" parameterType="ClosedProdcue" >
     update tb_rst_closed_prodcue

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

@@ -252,6 +252,9 @@
       <if test="customerUpdateTime != null" >
         customer_update_time = #{customerUpdateTime},
       </if>
+      <if test="typeId != null" >
+        type_id = #{typeId}
+      </if>
     </set>
     where customer_id = #{customerId}
   </update>

+ 9 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/noreasonBackMapper.xml

@@ -124,9 +124,16 @@
     ORDER BY d.detect_id ASC
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="NoreasonBack" >
     delete from tb_rst_noreason_back
-    where noreason_back_id = #{noreasonBackId,jdbcType=INTEGER}
+    <where>
+      <if test="customerId != null">
+        customer_id = #{customerId}
+      </if>
+      <if test="noreasonBackId != null">
+        and noreason_back_id = #{noreasonBackId}
+      </if>
+    </where>
   </delete>
   <insert id="insert" parameterType="NoreasonBack" useGeneratedKeys="true"  keyProperty="noreasonBackId">
     insert into tb_rst_noreason_back (customer_id, order_id,

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

@@ -77,6 +77,9 @@
       <if test="customerId != null" >
         customer_id = #{customerId,jdbcType=INTEGER},
       </if>
+      <if test="describeHandleDesc != null" >
+        describe_handle_desc = #{describeHandleDesc,jdbcType=INTEGER},
+      </if>
     </set>
     where describe_id = #{describeId,jdbcType=INTEGER}
   </update>

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

@@ -68,9 +68,16 @@
     </where>
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="Reissue" >
     delete from tb_rst_reissue
-    where reissue_id = #{reissueId,jdbcType=INTEGER}
+    <where>
+      <if test="reissueId != null" >
+        reissue_id = #{reissueId}
+      </if>
+      <if test="customerId != null" >
+        AND  customer_id = #{customerId}
+      </if>
+    </where>
   </delete>
   <insert id="insert" parameterType="Reissue"   useGeneratedKeys="true"  keyProperty="reissueId">
     insert into tb_rst_reissue (customer_id, order_id,

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

@@ -173,9 +173,17 @@
     </where>
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="Renewed" >
     delete from tb_rst_renewed
-    where renewed_id = #{renewedId,jdbcType=INTEGER}
+    <where>
+      <if test="renewedId != null and renewedId != ''">
+        renewed_id = #{renewedId}
+      </if>
+      <if test="customerId != null and customerId != ''">
+        and customer_id = #{customerId}
+      </if>
+    </where>
+
   </delete>
   <insert id="insert" parameterType="Renewed"  useGeneratedKeys="true"  keyProperty="renewedId">
     insert into tb_rst_renewed (customer_id, order_id,

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

@@ -166,9 +166,16 @@
     ORDER BY d.detect_id ASC
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="Repair" >
     delete from tb_rst_repair
-    where repair_id = #{repairId,jdbcType=INTEGER}
+    <where>
+      <if test="repairId != null and repairId != ''">
+        repair_id = #{repairId}
+      </if>
+      <if test="customerId != null and customerId != ''">
+        and customer_id = #{customerId}
+      </if>
+    </where>
   </delete>
   <insert id="insert" parameterType="Repair" useGeneratedKeys="true"  keyProperty="repairId">
     insert into tb_rst_repair (customer_id, order_id,

+ 9 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/sendFittingMapper.xml

@@ -35,9 +35,16 @@
     </where>
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="SendFitting" >
     delete from tb_rst_send_fitting
-    where send_fitting_id = #{sendFittingId,jdbcType=INTEGER}
+    <where>
+      <if test="sendFittingId != null and sendFittingId != ''">
+        send_fitting_id = #{sendFittingId}
+      </if>
+      <if test="relationId != null and relationId != ''">
+        and relation_id = #{relationId}
+      </if>
+    </where>
   </delete>
 
 

+ 9 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/sendProdcueMapper.xml

@@ -36,9 +36,16 @@
     </where>
   </select>
 
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+  <delete id="deleteByPrimaryKey" parameterType="SendProdcue" >
     delete from tb_rst_send_prodcue
-    where send_prodcue_id = #{sendProdcueId,jdbcType=INTEGER}
+    <where>
+      <if test="sendProdcueId != null and sendProdcueId != ''">
+        send_prodcue_id = #{sendProdcueId}
+      </if>
+      <if test="relationId != null and relationId != ''">
+        and relation_id = #{relationId}
+      </if>
+    </where>
   </delete>
 
   <insert id="insert" parameterType="SendProdcue" >

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

@@ -66,7 +66,9 @@
 
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_visit
-    where visit_id = #{visitId,jdbcType=INTEGER}
+    <where>
+      customer_id = #{customerId}
+    </where>
   </delete>
 
   <!-- 添加客诉回访信息 -->

+ 123 - 7
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -208,6 +208,7 @@ public class AdminCustomerController {
             mv.addObject("customerCommon", customerCommon);
 
             /*查询所有的产品,颜色和配件信息*/
+
             List<Product> productList = productService.listProduce(new Product());
             for(Product product : productList){
                 ProductColor productColor = new ProductColor();
@@ -221,14 +222,16 @@ public class AdminCustomerController {
                 product.setFittingsList(fittingsInfoList);
             }
             mv.addObject("productList", productList);
+            if(customerCommon.getOrderId() != null){
+                /*查询订单信息*/
+                SalesOrder salesOrder = salesOrderService.getSalesOrderById(customerCommon.getOrderId());
+                SalesOrderItem salesOrderItem = new SalesOrderItem();
+                salesOrderItem.setItemOrderId(salesOrder.getSalesId());
+                List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
+                salesOrder.setSalesOrderItemList(salesOrderItemList);
+                mv.addObject("salesOrder", salesOrder);
+            }
 
-            /*查询订单信息*/
-            SalesOrder salesOrder = salesOrderService.getSalesOrderById(customerCommon.getOrderId());
-            SalesOrderItem salesOrderItem = new SalesOrderItem();
-            salesOrderItem.setItemOrderId(salesOrder.getSalesId());
-            List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
-            salesOrder.setSalesOrderItemList(salesOrderItemList);
-            mv.addObject("salesOrder", salesOrder);
         }
         if ("2".equals(customerInfo.getCustomerIsVisit())){ //1:不需要回访  2:需要回访
             Visit visit = new Visit();
@@ -849,6 +852,119 @@ public class AdminCustomerController {
         return new ResponseJson(200, "添加客诉成功!客诉编号为:" + customerId, 200);
     }
 
+    /**
+     * 修改客诉
+     *
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:update:customer")
+    @RequestMapping("/update_customer")
+    public ResponseJson updateCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
+                                    String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
+        ResponseJson rjx = this.isValiData(customerInfo);
+        if(rjx.getResultCode() == 500){
+            return rjx;
+        }
+        Integer flag = 0;
+        JSONArray jsonArray;
+        List<SendProdcue> sendProdcueList;
+        List<SendFitting> sendFittingList;
+        List<ClosedProdcue> closedProdcueList;
+        List<ClosedFitting> closedFittingList;
+
+        Integer customerIsSolve = customerInfo.getCustomerIsSolve();    //处理类型
+        String phone = customerInfo.getCustomerTel();       //手机号码
+        Integer typeCompany = customerInfo.getTypeCompany();    // 所属商城   1:美国watero; 2:上朵电动牙刷  3:优尼雅净水机
+
+        jsonArray = JSONArray.fromObject(sendProdcuesJson);
+        sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
+
+        jsonArray = JSONArray.fromObject(sendFittingsJson);
+        sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
+
+        jsonArray = JSONArray.fromObject(closedProdcuesJson);
+        closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
+
+        jsonArray = JSONArray.fromObject(closedFittingsJson);
+        closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
+
+        customerCommon.setSendProdcues(sendProdcueList);
+        customerCommon.setSendFittings(sendFittingList);
+        customerCommon.setClosedProdcues(closedProdcueList);
+        customerCommon.setClosedFittings(closedFittingList);
+
+        customerInfo.setCustomerCommon(customerCommon);
+        String orderId = "";
+        if (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5) {
+            Integer adminId = AdminUtils.getLoginAdminId();
+            orderId = OrderNoUtil.createOrderCode(adminId);
+        }
+        customerInfo.setTransactionNumber(orderId);
+
+        Integer customerId = customerInfo.getCustomerId();
+        logger.info("-----------------修改客诉开始----------------------");
+        try {
+            flag = customerService.updateCustomerInfo(customerInfo, salesOrder);
+        } catch (RuntimeException e) {
+            return new ResponseJson(500, e.getMessage(), 500);
+        }
+        customerId = customerInfo.getCustomerId();
+        logger.info("-----------------修改客诉结束----------------------");
+        if (flag < 1) {
+            return new ResponseJson(500, "修改客诉失败!", 500);
+        }
+
+        //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
+        /*if (customerIsSolve == 3 || customerIsSolve == 4 || customerIsSolve == 5 || customerIsSolve == 6 || customerIsSolve == 7) {
+            String solveMsg = "";
+            switch (customerIsSolve) {
+                case 3:
+                    solveMsg = "为您更换新机";
+                    break;
+                case 4:
+                    solveMsg = "为您维修机器";
+                    break;
+                case 5:
+                    solveMsg = "为您补发产品";
+                    break;
+                case 6:
+                    solveMsg = "为您办理退货";
+                    break;
+                case 7:
+                    solveMsg = "为您办理退货";
+                    break;
+            }
+
+            String addCustomerSuccessMsg = "";
+            String typeMsg = "";
+            switch (typeCompany) {
+                case 1:
+                    addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_WATERO;
+                    typeMsg = "美国WaterO售后";
+                    break;
+                case 2:
+                    addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_SHANGDUO;
+                    typeMsg = "上朵售后";
+                    break;
+                case 3:
+                    addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_YULIA;
+                    typeMsg = "YULIA售后";
+                    break;
+            }
+
+            Object [] msg = new Object[]{solveMsg,typeMsg};
+            String text = MessageFormat.format(addCustomerSuccessMsg, msg);
+            logger.info("添加客诉成功后,给 "+ phone +" 手机用户发送短信:" + text );
+            String result = smsService.sendOtherCMS(phone, text);
+
+            if (!"SUCCESS".equals(result)) {
+                return new ResponseJson(505, "添加客诉发送短信失败,失败原因:" + result + "<br>客诉信息发送失败并不影响客诉添加。客诉编号为:"+ customerId, 505);
+            }
+        }*/
+        return new ResponseJson(200, "修改客诉成功!客诉编号为:" + customerId, 200);
+    }
 
 
     /**

+ 55 - 53
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl

@@ -439,59 +439,61 @@
                             </tr>
                         </thead>
                         <tbody id="back-product">
-                        <#list productList as product>
-                        <tr>
-                            <td width="80">
-                                <input type="hidden" value="${product.productId}"><span>${product.productName}</span>
-                            </td>
-                            <td style="padding: 0px;text-align: center;">
-                                <table style="height: 100%;">
-                                    <tbody>
-                                        <#list product.colorList as color>
-                                        <tr>
-                                            <td width="55" style="border-left: none;text-align: center;border-top: 1px solid #ddd;">
-                                            ${color.colorName}
-                                            </td>
-                                            <td width="45" style="border-top: 1px solid #ddd; padding: 0px;width: 25px;">
-                                                <input type="hidden" class="input-produce-id" value="${product.productId}">
-                                                <input type="hidden" class="input-color-id" value="${color.colorId}">
-                                                <#assign number = ""/>
-                                                <#list customerCommon.sendProdcues as sendProdcues>
-                                                    <#if sendProdcues.colorId == color.colorId >
-                                                        <#assign number = sendProdcues.sendProdcueNumber/>
-                                                    </#if>
-                                                </#list>
-                                                <input type="text" class="input-text input-color-number number-input" style="width: 100%;border: none;text-align: center;" value="${number}" placeholder="产品数量" id="color-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
-                                            </td>
-                                        </tr>
-                                        </#list>
-                                    </tbody>
-                                </table>
-                            </td>
-                            <td style="padding: 0px;text-align: center;">
-                                <table style="height: 100%;">
-                                    <tbody>
-                                        <#list product.fittingsList as fittingsInfo>
-                                        <tr>
-                                            <td width="55" style="border-left: none;text-align: center; border-top: 1px solid #ddd;">${fittingsInfo.fittingsName}</td>
-                                            <td width="45" style="border-top: 1px solid #ddd;padding: 0px;width: 25px;">
-                                                <input type="hidden" class="input-produce-id" value="${fittingsInfo.productId}">
-                                                <input type="hidden" class="input-fittings-id" value="${fittingsInfo.fittingsId}">
-                                                <#assign number = ""/>
-                                                <#list customerCommon.sendFittings as sendFittings>
-                                                    <#if sendFittings.fittingsId == fittingsInfo.fittingsId >
-                                                        <#assign number = sendFittings.sendFittingNumber/>
-                                                    </#if>
-                                                </#list>
-                                                <input type="text" class="input-text input-fittings-number" style="width: 100%;border: none;text-align: center;" value="${number}" placeholder="配件数量" id="fittings-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
-                                            </td>
-                                        </tr>
-                                        </#list>
-                                    </tbody>
-                                </table>
-                            </td>
-                        </tr>
-                        </#list>
+                        <#if productList??>
+                            <#list productList as product>
+                            <tr>
+                                <td width="80">
+                                    <input type="hidden" value="${product.productId}"><span>${product.productName}</span>
+                                </td>
+                                <td style="padding: 0px;text-align: center;">
+                                    <table style="height: 100%;">
+                                        <tbody>
+                                            <#list product.colorList as color>
+                                            <tr>
+                                                <td width="55" style="border-left: none;text-align: center;border-top: 1px solid #ddd;">
+                                                ${color.colorName}
+                                                </td>
+                                                <td width="45" style="border-top: 1px solid #ddd; padding: 0px;width: 25px;">
+                                                    <input type="hidden" class="input-produce-id" value="${product.productId}">
+                                                    <input type="hidden" class="input-color-id" value="${color.colorId}">
+                                                    <#assign number = ""/>
+                                                    <#list customerCommon.sendProdcues as sendProdcues>
+                                                        <#if sendProdcues.colorId == color.colorId >
+                                                            <#assign number = sendProdcues.sendProdcueNumber/>
+                                                        </#if>
+                                                    </#list>
+                                                    <input type="text" class="input-text input-color-number number-input" style="width: 100%;border: none;text-align: center;" value="${number}" placeholder="产品数量" id="color-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
+                                                </td>
+                                            </tr>
+                                            </#list>
+                                        </tbody>
+                                    </table>
+                                </td>
+                                <td style="padding: 0px;text-align: center;">
+                                    <table style="height: 100%;">
+                                        <tbody>
+                                            <#list product.fittingsList as fittingsInfo>
+                                            <tr>
+                                                <td width="55" style="border-left: none;text-align: center; border-top: 1px solid #ddd;">${fittingsInfo.fittingsName}</td>
+                                                <td width="45" style="border-top: 1px solid #ddd;padding: 0px;width: 25px;">
+                                                    <input type="hidden" class="input-produce-id" value="${fittingsInfo.productId}">
+                                                    <input type="hidden" class="input-fittings-id" value="${fittingsInfo.fittingsId}">
+                                                    <#assign number = ""/>
+                                                    <#list customerCommon.sendFittings as sendFittings>
+                                                        <#if sendFittings.fittingsId == fittingsInfo.fittingsId >
+                                                            <#assign number = sendFittings.sendFittingNumber/>
+                                                        </#if>
+                                                    </#list>
+                                                    <input type="text" class="input-text input-fittings-number" style="width: 100%;border: none;text-align: center;" value="${number}" placeholder="配件数量" id="fittings-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
+                                                </td>
+                                            </tr>
+                                            </#list>
+                                        </tbody>
+                                    </table>
+                                </td>
+                            </tr>
+                            </#list>
+                        </#if>
                         </tbody>
                     </table>
                 </div>

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

@@ -305,9 +305,11 @@
                                 <a style="text-decoration:none" href="javascript:void(0);" title="详情" onclick="admin_details_customer(${customer.customerId!''})">
                                     <font color=#06c>详情</font>
                                 </a><br/>
+                                <#--<#if customer.customerIsSolve != 1>-->
                                 <a style="text-decoration:none" href="javascript:void(0);" title="修改客诉" onclick="admin_update_customer(${customer.customerId!''})">
                                     <font color=#06c>修改客诉</font>
                                 </a><br/>
+                                <#--</#if>-->
                                 <#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!''})">

+ 108 - 49
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_customer.ftl

@@ -67,7 +67,7 @@
 </nav>
 <article class="page-container" style="padding: 10px;">
     <div class="pd-20 cl">
-        <form action="${path}/admin/customer/save_customer" method="post" class="form form-horizontal" id="form-customer-add"  onkeydown="if(event.keyCode==13)return false;">
+        <form action="${path}/admin/customer/update_customer" method="post" class="form form-horizontal" id="form-customer-add"  onkeydown="if(event.keyCode==13)return false;">
 
             <input type="hidden" id="customerId" name="customerId" value="${customerInfo.customerId!''}">
             <input type="hidden" id="customerName" name="customerName" value="">
@@ -130,7 +130,7 @@
                 <div class="formControls col-10 col-sm-10 skin-minimal" id="produceTypeHtml">
                     <#list typeList as type>
                         <div class="radio-box">
-                            <input type="radio" id="produceType-${type_index}" name="produceType" value="${type.typeId!''}" <#if customerInfo.typeId == type.typeId>checked</#if> >
+                            <input type="radio" id="produceType-${type_index}" name="typeId" typeCompany="${type.typeCompany}"  value="${type.typeId!''}" <#if customerInfo.typeId == type.typeId>checked</#if> >
                             <label for="produceType-${type_index}">${type.typeName!''}</label>
                         </div>
                     </#list>
@@ -202,6 +202,7 @@
                     <script id="describeContentText" type="text/plain" style="width:983px;height:250px;"></script>
                     </script>
                     <input type="hidden" name="describeContent" id="describeContent" value="">
+                    <input type="hidden" name="describeId" id="describeId" value="">
                 </div>
             </div>
             <div class="row cl">
@@ -285,9 +286,10 @@
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>订单信息:</label>
                 <div class="formControls col-1 col-sm-1">
 
-                    <#--<button type="button" class="btn btn-primary" id="selectOrder">搜索订单</button>-->
+                    <button type="button" class="btn btn-primary" id="selectOrder">搜索订单</button>
                 </div>
             </div>
+            <#if salesOrder??>
             <div class="row cl" id="order" style="display: none;">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-9 col-sm-9 text-c">
@@ -303,28 +305,30 @@
                             <th style="text-align: center;">购买产品</th>
                             <th style="text-align: center;">购买日期</th>
                         </tr>
+
                         <tr id="showOrder">
-                            <td style="text-align: center;">${salesOrder.companyName}</td>
-                            <td style="text-align: center;">${salesOrder.storeName}</td>
-                            <td style="text-align: center;">${salesOrder.salesOrderId}</td>
-                            <td style="text-align: center;">${salesOrder.salesDealCode}</td>
-                            <td style="text-align: center;">${salesOrder.salesAddressName}</td>
-                            <td style="text-align: center;">${salesOrder.salesAddressTel}</td>
-                            <td style="text-align: center;">${salesOrder.salesPayMoney}</td>
-                            <td style="text-align: center;">
-                                <#list salesOrder.salesOrderItemList as salesOrderItem>
+                                <td style="text-align: center;">${salesOrder.companyName!''}</td>
+                                <td style="text-align: center;">${salesOrder.storeName!''}</td>
+                                <td style="text-align: center;">${salesOrder.salesOrderId!''}</td>
+                                <td style="text-align: center;">${salesOrder.salesDealCode!''}</td>
+                                <td style="text-align: center;">${salesOrder.salesAddressName!''}</td>
+                                <td style="text-align: center;">${salesOrder.salesAddressTel!''}</td>
+                                <td style="text-align: center;">${salesOrder.salesPayMoney!''}</td>
+                                <td style="text-align: center;">
+                                    <#list salesOrder.salesOrderItemList as salesOrderItem>
                                     ${salesOrderItem.itemProductName}* ${salesOrderItem.itemNum}<br>
-                                </#list>
-                            </td>
-                            <td style="text-align: center;">${(salesOrder.salesPayTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                                    </#list>
+                                </td>
+                                <td style="text-align: center;">${(salesOrder.salesPayTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                         </tr>
                     </table>
-                    <input type="hidden" id="companyId" name="companyId" value="${salesOrder.salesCompanyId}" >
-                    <input type="hidden" id="storeId" name="storeId" value="${salesOrder.salesStoreId}" >
-                    <input type="hidden" id="orderId" name="salesId" value="${salesOrder.salesId}" >
+
                 </div>
             </div>
-
+            </#if>
+            <input type="hidden" id="companyId" name="companyId" value="<#if salesOrder??>${salesOrder.salesCompanyId}</#if>">
+            <input type="hidden" id="storeId" name="storeId" value="<#if salesOrder??>${salesOrder.salesStoreId}</#if>">
+            <input type="hidden" id="orderId" name="salesId" value="<#if salesOrder??>${salesOrder.salesId}</#if>">
             <div class="row cl" id="recipientInfoTitle" style="display: none;">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>收件信息:</label>
                 <div class="formControls col-8 col-sm-8">请先选择订单,系统自动填充姓名,电话和地址信息。</div>
@@ -333,10 +337,10 @@
             <div class="row cl" id="recipientInfo" style="display: none;">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="${customerCommon.relationBackName}" placeholder="填写收件人姓名" id="sendName" name="relationSendName" datatype="/^[\u4e00-\u9fa5]{1,20}$/" errormsg="联系人格式不正确!" >
+                    <input type="text" class="input-text" value="${customerCommon.relationSendName!''}" placeholder="填写收件人姓名" id="sendName" name="relationSendName" datatype="/^[\u4e00-\u9fa5]{1,20}$/" errormsg="联系人格式不正确!" >
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="${customerCommon.relationBackTel}" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
+                    <input type="text" class="input-text" value="${customerCommon.relationSendTel!''}" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
                 </div>
                 <div class="formControls col-2 col-sm-2"  id="postageAccount">
                     <input type="text" class="input-text" value="${customerCommon.relationAlipay!''}" placeholder="邮费转账 支付宝账户" id="relationAlipay" name="relationAlipay" errormsg="邮费转账账户!">
@@ -452,7 +456,7 @@
                 <label class="form-label col-1 col-sm-1">TDS收集:</label>
                 <div class="formControls col-2 col-sm-2" style="position: relative;">
                     <input type="hidden" name="arrcity_3word" id="arrcity_3word" value="" />
-                    <input style="width: 190px;" placeholder="" class="input-text my-search-input" placeholder="请输入城市名称搜索" type="text" name="arrcity" id="arrcity" value="${index_num}" />
+                    <input style="width: 190px;" placeholder="" class="input-text my-search-input" placeholder="请输入城市名称搜索" type="text" name="arrcity" id="arrcity" value="" />
                     <div id="suggest" class="ac_results"></div>
                 </div>
                 <div class="formControls col-2 col-sm-2">
@@ -462,7 +466,7 @@
                     </select>
 				</span>
                 </div>
-                <input type="hidden" name="customerArea" id="customerArea">
+                <input type="hidden" name="customerArea" id="customerArea" value="${customerInfo.customerArea!''}">
                 <div class="formControls col-2 col-sm-2">
                     <input type="text" class="input-text" value="${customerInfo.customerInTDS!'0'}" placeholder="进水TDS数值,最大999" id="customerInTDS" name="customerInTDS" onkeyup="TDSLinkage($(this),999)" onpaste="TDSLinkage($(this),999)">
                 </div>
@@ -470,11 +474,11 @@
                     <input type="text" class="input-text" value="${customerInfo.customerOutTDS!'0'}" placeholder="出水TDS数值,最大999" id="customerOutTDS" name="customerOutTDS" onkeyup="TDSLinkage($(this),999)" onpaste="TDSLinkage($(this),999)">
                 </div>
             </div>
-            <div class="row cl" id="TDScollectShow" style="display: none;">
+            <div class="row cl" id="TDScollectShow" /*style="display: none;"*/>
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-6 col-sm-6">
-                    <span id="DTS-address"></span>
-                    &nbsp;&nbsp;&nbsp;&nbsp;<span id="DTS-in"></span>&nbsp;&nbsp;  <span id="DTS-out"></span>
+                    <span id="DTS-address"><#if customerInfo.customerArea??>地址:${customerInfo.customerArea}</#if></span>
+                    &nbsp;&nbsp;&nbsp;&nbsp;<span id="DTS-in"><#if customerInfo.customerInTDS??>进水:${customerInfo.customerInTDS} PPM</#if></span>&nbsp;&nbsp;  <span id="DTS-out"><#if customerInfo.customerOutTDS??>出水:${customerInfo.customerOutTDS} PPM</#if></span>
                 </div>
             </div>
             <div class="row cl" id="sendAddressInfo">
@@ -509,10 +513,59 @@
                             </tr>
                         </thead>
                         <tbody id="back-product">
-
-                            <tr id="">
-                                <td style="text-align: center;" colspan="3">请选择订单之后再选择产品</td>
-                            </tr>
+                <#list productList as product>
+                <tr>
+                <td width="80">
+                        <input type="hidden" value="${product.productId}"><span>${product.productName}</span>
+                        </td>
+                        <td style="padding: 0px;text-align: center;">
+                        <table style="height: 100%;">
+                <tbody>
+                    <#list product.colorList as color>
+                    <tr>
+                    <td width="55" style="border-left: none;text-align: center;border-top: 1px solid #ddd;">
+                            ${color.colorName}
+                            </td>
+                            <td width="45" style="border-top: 1px solid #ddd; padding: 0px;width: 25px;">
+                            <input type="hidden" class="input-produce-id" value="${product.productId}">
+                            <input type="hidden" class="input-color-id" value="${color.colorId}">
+                                <#assign number = ""/>
+                                <#list customerCommon.closedProdcues as closedProdcues>
+                                    <#if closedProdcues.colorId == color.colorId >
+                                        <#assign number = closedProdcues.closedProdcueNumber/>
+                                    </#if>
+                                </#list>
+                            <input type="text" class="input-text input-color-number number-input" style="width: 100%;border: none;text-align: center;" value="${number}" placeholder="产品数量" id="color-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
+                    </td>
+                    </tr>
+                    </#list>
+                </tbody>
+                </table>
+                </td>
+                    <td style="padding: 0px;text-align: center;">
+                            <table style="height: 100%;">
+                                <tbody>
+                    <#list product.fittingsList as fittingsInfo>
+                                    <tr>
+                                    <td width="55" style="border-left: none;text-align: center; border-top: 1px solid #ddd;">${fittingsInfo.fittingsName}</td>
+                                            <td width="45" style="border-top: 1px solid #ddd;padding: 0px;width: 25px;">
+                                            <input type="hidden" class="input-produce-id" value="${fittingsInfo.productId}">
+                                            <input type="hidden" class="input-fittings-id" value="${fittingsInfo.fittingsId}">
+                                                <#assign number2 = ""/>
+                                                <#list customerCommon.closedFittings as closedFittings>
+                                                    <#if closedFittings.fittingsId == fittingsInfo.fittingsId >
+                                                        <#assign number2 = closedFittings.closedFittingNumber/>
+                                                    </#if>
+                                                </#list>
+                                            <input type="text" class="input-text input-fittings-number" style="width: 100%;border: none;text-align: center;" value="${number2}" placeholder="配件数量" id="fittings-1-1" name="" onkeyup="keyFun($(this),999)" onpaste="keyFun($(this),999)">
+                                    </td>
+                                    </tr>
+                                    </#list>
+                                </tbody>
+                            </table>
+                    </td>
+                </tr>
+                </#list>
                         </tbody>
                     </table>
                 </div>
@@ -822,7 +875,6 @@
 
     /* 用于判断是否第一次初始化省市区-- 只在选择类型为售后时使用 */
     var isInitAddress = ${customerInfo.customerIsSolve!''};
-
     /*初始化页面参数*/
     $(function () {
         /* 初始化单选框样式 */
@@ -947,16 +999,15 @@
     /*用于初始化回访信息的展示*/
     function initVisitEvent(){
         $("input[name='customerIsVisit']").change(function (){
-            if(!isUpdate){
+
                 if($(this).val() == 2){
                     $("#needToVisit").css("display","block");
                 }else{
                     $("#needToVisit").css("display","none");
                 }
-            }
+
         })
     }
-
     /**
      * 初始化问题描述
      */
@@ -971,6 +1022,8 @@
                 if (data.returnCode == 200) {
                     var questionDescribe = data.returnMsg.questionDescribe;
                     $("#describeTitle").val(questionDescribe.describeTitle);
+                    $("#describeId").val(questionDescribe.describeId);
+                    $("#describeHandleDesc").val(questionDescribe.describeHandleDesc);
                     describeContentText.addListener("ready", function () {
                         describeContentText.setContent(questionDescribe.describeContent);
                     });
@@ -1178,21 +1231,27 @@
 
             /* 在选择售后类型是,直接初始化省市区,使用isInitAddress 变量来判断 */
             if(isInitAddress == 1 || isInitAddress == 2){
-//                var proId = setPro(null,2);
-//                var cityId = setCity(null,proId,2);
-//                setDistrict(null,cityId,2);
-//                isInitAddress = 1;
-            }else if(isInitAddress == 3 || isInitAddress == 4 ||  isInitAddress == 5 ||  isInitAddress == 6 ||  isInitAddress == 7){
-                setPro(null,2);  //创建省
-                var proId = ${customerCommon.provinceNumber};
-                $("#province option[value='"+ proId +"']").attr("selected","true"); //设置省
-                setCity(null,proId,2);
-                var cityId = ${customerCommon.cityNumber};
-                $("#city option[value='" + cityId + "']").attr("selected","true"); //设置市
+                var proId = setPro(null,2);
+                var cityId = setCity(null,proId,2);
                 setDistrict(null,cityId,2);
-                var disId = ${customerCommon.areaNumber};
-                $("#district option[value='" + disId + "']").attr("selected","true"); //设置地区
                 isInitAddress = 1;
+            }else if(isInitAddress == 3 || isInitAddress == 4 ||  isInitAddress == 5 ||  isInitAddress == 6 ||  isInitAddress == 7){
+                    setPro(null,2);  //创建省
+                    setCity(null,proId,2);
+                    setDistrict(null, cityId, 2);
+                <#if customerCommon.provinceNumber?? >
+                    var proId = ${customerCommon.provinceNumber!''};
+                    $("#province option[value='"+ proId +"']").attr("selected","true"); //设置省
+                </#if>
+                <#if customerCommon.cityNumber?? >
+                    var cityId = ${customerCommon.cityNumber!''};
+                    $("#city option[value='" + cityId + "']").attr("selected", "true"); //设置市
+                </#if>
+                <#if customerCommon.areaNumber?? >
+                    var disId = ${customerCommon.areaNumber!''};
+                    $("#district option[value='" + disId + "']").attr("selected", "true"); //设置地区
+                    isInitAddress = 1;
+                </#if>
             }
 
             $("#renewed").show();
@@ -1226,7 +1285,7 @@
                     $("#TDScollectShow").show();
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
-                    $("#updateProduct").hide(); //换新产品
+                    $("#updateProduct").show(); //换新产品
                     $("#postageAccount").show();    //邮费转账账户
                     visitByType(2); //需要回访
                     break;
@@ -1246,7 +1305,7 @@
                     $("#TDScollectShow").show();
                     $("#sendAddressInfo").show();
                     $("#sendAddressByPhone").show();
-                    $("#updateProduct").hide();//维修产品
+                    $("#updateProduct").show();//维修产品
                     $("#postageAccount").show();    //邮费转账账户
                     visitByType(2); //需要回访
                     break;