瀏覽代碼

添加了维修和退货接口

liuzhiwei 7 年之前
父節點
當前提交
de25692a46
共有 51 個文件被更改,包括 2388 次插入120 次删除
  1. 10 7
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/City.java
  2. 7 4
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/Country.java
  3. 10 7
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/District.java
  4. 10 7
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/Province.java
  5. 46 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/AwaitingSignclosedProductInfo.java
  6. 42 4
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintSignclosedInfo.java
  7. 47 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SignclosedProductInfo.java
  8. 8 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java
  9. 9 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/AwaitingSignclosedProductInfoService.java
  10. 17 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedInfoService.java
  11. 8 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedProductInfoService.java
  12. 2 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/FittingsInfoService.java
  13. 12 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java
  14. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/address/AddressServiceImpl.java
  15. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/AwaitingSignclosedProductInfoServiceImpl.java
  16. 21 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedInfoServiceImpl.java
  17. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedProductInfoServiceImpl.java
  18. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/AwaitingSignclosedProductMapper.java
  19. 16 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintSignclosedInfoMapper.java
  20. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintSignclosedProductInfoMapper.java
  21. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoMapper.java
  22. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoServiceImpl.java
  23. 26 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/awaitingSignclosedProductMapper.xml
  24. 134 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedInfoMapper.xml
  25. 27 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedProductInfoMapper.xml
  26. 6 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/fittingsInfoMapper.xml
  27. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java
  28. 12 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java
  29. 40 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml
  30. 60 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  31. 139 7
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java
  32. 125 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSignclosedController.java
  33. 51 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/kuaidi/LogisticsController.java
  34. 5 5
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java
  35. 206 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java
  36. 68 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/ResultMsg.java
  37. 234 47
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl
  38. 7 3
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/add_remark.ftl
  39. 6 6
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_complete.ftl
  40. 17 1
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_list.ftl
  41. 201 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/update_complete.ftl
  42. 113 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/view_progress.ftl
  43. 288 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/logistics/view_logistics.ftl
  44. 228 0
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/signclosed/signclosed_list.ftl
  45. 1 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order.ftl
  46. 3 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl
  47. 2 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl
  48. 5 5
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/parts_list.ftl
  49. 5 2
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_add.ftl
  50. 5 3
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_update.ftl
  51. 60 0
      watero-rst-web/src/main/webapp/common/js/common/common.js

+ 10 - 7
watero-rst-core/src/main/java/com.iamberry.rst.core/address/City.java

@@ -1,27 +1,30 @@
 package com.iamberry.rst.core.address;
 
-public class City {
-    private Long cityId;
+import java.io.Serializable;
 
-    private Long provinceId;
+public class City implements Serializable {
+    private static final long serialVersionUID = -6644037349560289619L;
+    private Integer cityId;
+
+    private Integer provinceId;
 
     private String city;
 
     private Integer divisionCode;
 
-    public Long getCityId() {
+    public Integer getCityId() {
         return cityId;
     }
 
-    public void setCityId(Long cityId) {
+    public void setCityId(Integer cityId) {
         this.cityId = cityId;
     }
 
-    public Long getProvinceId() {
+    public Integer getProvinceId() {
         return provinceId;
     }
 
-    public void setProvinceId(Long provinceId) {
+    public void setProvinceId(Integer provinceId) {
         this.provinceId = provinceId;
     }
 

+ 7 - 4
watero-rst-core/src/main/java/com.iamberry.rst.core/address/Country.java

@@ -1,17 +1,20 @@
 package com.iamberry.rst.core.address;
 
-public class Country {
-    private Long countryId;
+import java.io.Serializable;
+
+public class Country implements Serializable {
+    private static final long serialVersionUID = -5998558934517751336L;
+    private Integer countryId;
 
     private String countryName;
 
     private String countryNo;
 
-    public Long getCountryId() {
+    public Integer getCountryId() {
         return countryId;
     }
 
-    public void setCountryId(Long countryId) {
+    public void setCountryId(Integer countryId) {
         this.countryId = countryId;
     }
 

+ 10 - 7
watero-rst-core/src/main/java/com.iamberry.rst.core/address/District.java

@@ -1,27 +1,30 @@
 package com.iamberry.rst.core.address;
 
-public class District {
-    private Long districtId;
+import java.io.Serializable;
 
-    private Long cityId;
+public class District implements Serializable {
+    private static final long serialVersionUID = -7978460253464647599L;
+    private Integer districtId;
+
+    private Integer cityId;
 
     private String district;
 
     private Integer divisionCode;
 
-    public Long getDistrictId() {
+    public Integer getDistrictId() {
         return districtId;
     }
 
-    public void setDistrictId(Long districtId) {
+    public void setDistrictId(Integer districtId) {
         this.districtId = districtId;
     }
 
-    public Long getCityId() {
+    public Integer getCityId() {
         return cityId;
     }
 
-    public void setCityId(Long cityId) {
+    public void setCityId(Integer cityId) {
         this.cityId = cityId;
     }
 

+ 10 - 7
watero-rst-core/src/main/java/com.iamberry.rst.core/address/Province.java

@@ -1,27 +1,30 @@
 package com.iamberry.rst.core.address;
 
-public class Province {
-    private Long provinceId;
+import java.io.Serializable;
 
-    private Long countryId;
+public class Province implements Serializable {
+    private static final long serialVersionUID = 3772529317606125313L;
+    private Integer provinceId;
+
+    private Integer countryId;
 
     private String province;
 
     private Integer divisionCode;
 
-    public Long getProvinceId() {
+    public Integer getProvinceId() {
         return provinceId;
     }
 
-    public void setProvinceId(Long provinceId) {
+    public void setProvinceId(Integer provinceId) {
         this.provinceId = provinceId;
     }
 
-    public Long getCountryId() {
+    public Integer getCountryId() {
         return countryId;
     }
 
-    public void setCountryId(Long countryId) {
+    public void setCountryId(Integer countryId) {
         this.countryId = countryId;
     }
 

+ 46 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/AwaitingSignclosedProductInfo.java

@@ -17,6 +17,12 @@ public class AwaitingSignclosedProductInfo implements Serializable {
     private Integer productNum;//产品数量
     private Date signclosedCreateTime;//创建时间
     private Date signclosedUpdateTime;//修改时间
+    private Integer signclosedProductType;//1 产品  2配件
+    private Integer signclosedProductId;//关联产品id  (根据产品类型判断)
+    private Integer signclosedProductColor;//关联产品颜色id
+
+    private String colorName;//颜色名称
+    private String productNumber;//产品型号
 
     public Integer getProductId() {
         return productId;
@@ -65,4 +71,44 @@ public class AwaitingSignclosedProductInfo implements Serializable {
     public void setSignclosedUpdateTime(Date signclosedUpdateTime) {
         this.signclosedUpdateTime = signclosedUpdateTime;
     }
+
+    public Integer getSignclosedProductType() {
+        return signclosedProductType;
+    }
+
+    public void setSignclosedProductType(Integer signclosedProductType) {
+        this.signclosedProductType = signclosedProductType;
+    }
+
+    public Integer getSignclosedProductId() {
+        return signclosedProductId;
+    }
+
+    public void setSignclosedProductId(Integer signclosedProductId) {
+        this.signclosedProductId = signclosedProductId;
+    }
+
+    public Integer getSignclosedProductColor() {
+        return signclosedProductColor;
+    }
+
+    public void setSignclosedProductColor(Integer signclosedProductColor) {
+        this.signclosedProductColor = signclosedProductColor;
+    }
+
+    public String getColorName() {
+        return colorName;
+    }
+
+    public void setColorName(String colorName) {
+        this.colorName = colorName;
+    }
+
+    public String getProductNumber() {
+        return productNumber;
+    }
+
+    public void setProductNumber(String productNumber) {
+        this.productNumber = productNumber;
+    }
 }

+ 42 - 4
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintSignclosedInfo.java

@@ -1,7 +1,9 @@
 package com.iamberry.rst.core.cm;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 1.1.57	客诉-签收表
@@ -23,10 +25,10 @@ public class ComplaintSignclosedInfo implements Serializable {
     private Integer signclosedAddrCity;//寄件地址(市)
     private Integer signclosedIsFittings;//是否少配件
     private Date signclosedDate;//签收时间
-    private Integer signclosedIsQuality;//是否品检
-    private Integer signclosedIsInto;//是否已转入品检
-    private Integer signclosedState;//处理状态
-    private Integer signclosedObjectsState;//物件状态
+    private Integer signclosedIsQuality;//是否品检   1 需要品检 2不需要品检
+    private Integer signclosedIsInto;//是否已转入品检    1 已转入品检2未转入品检
+    private Integer signclosedState;//处理状态      1已签收2未签收
+    private Integer signclosedObjectsState;//物件状态 1正常签收2物件不对
     private Integer signclosedCustomerId;//客诉id
     private Integer signclosedUrgedNum;//qc催促次数
     private String oldEfastId;//原有Efast订单id
@@ -36,6 +38,10 @@ public class ComplaintSignclosedInfo implements Serializable {
     private Date signclosedCreateTime;//创建时间
     private Date signclosedUpdateTime;//修改时间
 
+    private List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfoList = new ArrayList<AwaitingSignclosedProductInfo>();	//待签收实体类
+    private List<SignclosedProductInfo> signclosedProductInfoList = new ArrayList<SignclosedProductInfo>();	//签收实体类
+    private String provincesName;//寄件地址(省)
+    private String cityName;//寄件地址(市)
     public Integer getSignclosedId() {
         return signclosedId;
     }
@@ -227,4 +233,36 @@ public class ComplaintSignclosedInfo implements Serializable {
     public void setSignclosedUpdateTime(Date signclosedUpdateTime) {
         this.signclosedUpdateTime = signclosedUpdateTime;
     }
+
+    public List<AwaitingSignclosedProductInfo> getAwaitingSignclosedProductInfoList() {
+        return awaitingSignclosedProductInfoList;
+    }
+
+    public void setAwaitingSignclosedProductInfoList(List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfoList) {
+        this.awaitingSignclosedProductInfoList = awaitingSignclosedProductInfoList;
+    }
+
+    public List<SignclosedProductInfo> getSignclosedProductInfoList() {
+        return signclosedProductInfoList;
+    }
+
+    public void setSignclosedProductInfoList(List<SignclosedProductInfo> signclosedProductInfoList) {
+        this.signclosedProductInfoList = signclosedProductInfoList;
+    }
+
+    public String getProvincesName() {
+        return provincesName;
+    }
+
+    public void setProvincesName(String provincesName) {
+        this.provincesName = provincesName;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
 }

+ 47 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SignclosedProductInfo.java

@@ -17,6 +17,13 @@ public class SignclosedProductInfo implements Serializable {
     private Integer productNum;//产品数量
     private Date signclosedCreateTime;//创建时间
     private Date signclosedUpdateTime;//修改时间
+    private Integer signclosedProductType;//1 产品  2配件
+    private Integer signclosedProductId;//关联产品id  (根据产品类型判断)
+    private Integer signclosedProductColor;//关联产品颜色id
+
+
+    private String colorName;//颜色名称
+    private String productNumber;//产品型号
 
     public Integer getProductId() {
         return productId;
@@ -65,4 +72,44 @@ public class SignclosedProductInfo implements Serializable {
     public void setSignclosedUpdateTime(Date signclosedUpdateTime) {
         this.signclosedUpdateTime = signclosedUpdateTime;
     }
+
+    public Integer getSignclosedProductType() {
+        return signclosedProductType;
+    }
+
+    public void setSignclosedProductType(Integer signclosedProductType) {
+        this.signclosedProductType = signclosedProductType;
+    }
+
+    public Integer getSignclosedProductId() {
+        return signclosedProductId;
+    }
+
+    public void setSignclosedProductId(Integer signclosedProductId) {
+        this.signclosedProductId = signclosedProductId;
+    }
+
+    public Integer getSignclosedProductColor() {
+        return signclosedProductColor;
+    }
+
+    public void setSignclosedProductColor(Integer signclosedProductColor) {
+        this.signclosedProductColor = signclosedProductColor;
+    }
+
+    public String getColorName() {
+        return colorName;
+    }
+
+    public void setColorName(String colorName) {
+        this.colorName = colorName;
+    }
+
+    public String getProductNumber() {
+        return productNumber;
+    }
+
+    public void setProductNumber(String productNumber) {
+        this.productNumber = productNumber;
+    }
 }

+ 8 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/Product.java

@@ -35,6 +35,7 @@ public class Product implements Serializable {
 
     private String productNumber;        //产品型号
 
+    private String typeName;            //产品名称
 
     private List<ProductColor> colorList = new ArrayList<ProductColor>();   //产品颜色集合
 
@@ -118,6 +119,13 @@ public class Product implements Serializable {
         this.productNumber = productNumber;
     }
 
+    public String getTypeName() {
+        return typeName;
+    }
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
     @Override
     public String toString() {
         return "Product{" +

+ 9 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/AwaitingSignclosedProductInfoService.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+import com.iamberry.rst.core.cm.SignclosedProductInfo;
+
+import java.util.List;
 
 /**
  * 客诉-待签收产品service
@@ -15,6 +18,12 @@ public interface AwaitingSignclosedProductInfoService {
      * 获取单个待签收产品
      */
     AwaitingSignclosedProductInfo getByPrimaryId(Integer productId);
+
+    /**
+     * 查询多个签收产品记录
+     * @return
+     */
+    List<AwaitingSignclosedProductInfo> listByPrimaryId(Integer signclosedId);
     /**
      * 修改单个待签收产品
      * @return

+ 17 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/ComplaintSignclosedInfoService.java

@@ -1,6 +1,11 @@
 package com.iamberry.rst.faces.cm;
 
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
 import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+
+import java.util.List;
 
 /**
  * 客诉-签收表Service
@@ -21,4 +26,16 @@ public interface ComplaintSignclosedInfoService {
      * @return
      */
     int updateSignclosedById(ComplaintSignclosedInfo record);
+
+    /**
+     * 增加催促次数
+     * @return
+     */
+    int updateUrgedNumById(ComplaintSignclosedInfo complaintSignclosedInfo);
+
+    /**
+     * 查询多个签收记录
+     * @return
+     */
+    PagedResult<ComplaintSignclosedInfo> listSignclosed(PageRequest<ComplaintSignclosedInfo> pageRequest);
 }

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

@@ -2,6 +2,8 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.SignclosedProductInfo;
 
+import java.util.List;
+
 /**
  * 客诉-签收产品表Service
  */
@@ -16,6 +18,12 @@ public interface ComplaintSignclosedProductInfoService {
      * @return
      */
     SignclosedProductInfo getSignclosedById(Integer productId);
+
+    /**
+     * 查询多个签收产品记录
+     * @return
+     */
+    List<SignclosedProductInfo> listSignclosedById(Integer signclosedId);
     /**
      * 修改单个签收产品记录
      * @return

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

@@ -28,9 +28,10 @@ public interface FittingsInfoService {
      * @return
      */
     Integer updateFittingsInfo(FittingsInfo fittingsInfo);
+
     /**
      * 查询所有配件信息
      * @return
      */
-    List<FittingsInfo> listFittings();
+    List<FittingsInfo> listFittings(FittingsInfo fittingsInfo);
 }

+ 12 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java

@@ -48,6 +48,18 @@ public interface ProductService {
     List<Product> listProduce();
 
     /**
+     * 获取所有产品
+     * @return
+     */
+    List<Product> listProduce(Product product);
+
+    /**
+     * 获取所有产品颜色
+     * @return
+     */
+    List<ProductColor> listProduceColor(ProductColor productColor);
+
+    /**
      * 查询产品和产品颜色集合
      * @param productColor
      * @return

+ 1 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/address/AddressServiceImpl.java

@@ -19,7 +19,7 @@ public class AddressServiceImpl implements AddressService {
 
     @Override
     public List<Province> listProvince(Province province) {
-        province.setCountryId((long) 1);
+        province.setCountryId(1);
         return addressMapper.listProvince(province);
     }
 

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

@@ -6,6 +6,9 @@ import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
 import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+
 @Service
 public class AwaitingSignclosedProductInfoServiceImpl implements AwaitingSignclosedProductInfoService {
     @Autowired
@@ -21,6 +24,11 @@ public class AwaitingSignclosedProductInfoServiceImpl implements AwaitingSignclo
     }
 
     @Override
+    public List<AwaitingSignclosedProductInfo> listByPrimaryId(Integer signclosedId) {
+        return awaitingSignclosedProductMapper.listByPrimaryId(signclosedId);
+    }
+
+    @Override
     public int updateById(AwaitingSignclosedProductInfo record) {
         return awaitingSignclosedProductMapper.updateById(record);
     }

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/ComplaintSignclosedInfoServiceImpl.java

@@ -1,15 +1,22 @@
 package com.iamberry.rst.service.cm;
 
 
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
 import com.iamberry.rst.core.cm.ComplaintQuestionInfo;
 import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
 import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
 import com.iamberry.rst.service.cm.mapper.ComplaintQuestionInfoMapper;
 import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
+import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedInfoService {
     @Autowired
@@ -30,4 +37,18 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
     public int updateSignclosedById(ComplaintSignclosedInfo record) {
         return complaintSignclosedInfoMapper.updateSignclosedById(record);
     }
+
+    @Override
+    public int updateUrgedNumById(ComplaintSignclosedInfo complaintSignclosedInfo) {
+        return complaintSignclosedInfoMapper.updateUrgedNumById(complaintSignclosedInfo);
+    }
+
+    @Override
+    public PagedResult<ComplaintSignclosedInfo> listSignclosed(PageRequest<ComplaintSignclosedInfo> pageRequest) {
+        PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
+        List<ComplaintSignclosedInfo> signclosedList = complaintSignclosedInfoMapper.listSignclosed(pageRequest.getData());
+        return PageUtil.getPage(signclosedList);
+
+    }
+
 }

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

@@ -10,6 +10,8 @@ import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedProductInfoMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class ComplaintSignclosedProductInfoServiceImpl implements ComplaintSignclosedProductInfoService {
     @Autowired
@@ -27,6 +29,11 @@ public class ComplaintSignclosedProductInfoServiceImpl implements ComplaintSignc
     }
 
     @Override
+    public List<SignclosedProductInfo> listSignclosedById(Integer signclosedId) {
+        return complaintSignclosedProductInfoMapper.listSignclosedById(signclosedId);
+    }
+
+    @Override
     public int updateSignclosedById(SignclosedProductInfo record) {
         return complaintSignclosedProductInfoMapper.updateSignclosedById(record);
     }

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

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+
+import java.util.List;
+
 /**
  * 客诉-待签收产品mapper
  */
@@ -14,6 +17,13 @@ public interface AwaitingSignclosedProductMapper {
      * 获取单个待签收产品
      */
     AwaitingSignclosedProductInfo getByPrimaryId(Integer productId);
+
+    /**
+     * 获取多个待签收产品
+     */
+    List<AwaitingSignclosedProductInfo> listByPrimaryId(Integer signclosedId);
+
+
     /**
      * 修改单个待签收产品
      * @return

+ 16 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintSignclosedInfoMapper.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+
+import java.util.List;
+
 /**
  * 客诉-签收表mapper
  */
@@ -20,4 +23,17 @@ public interface ComplaintSignclosedInfoMapper {
      * @return
      */
     int updateSignclosedById(ComplaintSignclosedInfo record);
+
+    /**
+     * 增加催促次数
+     * @return
+     */
+    int updateUrgedNumById(ComplaintSignclosedInfo complaintSignclosedInfo);
+
+    /**
+     * 查询多个签收记录
+     * @return
+     */
+    List<ComplaintSignclosedInfo> listSignclosed(ComplaintSignclosedInfo record);
+
 }

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

@@ -1,6 +1,9 @@
 package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.SignclosedProductInfo;
+
+import java.util.List;
+
 /**
  * 客诉-签收产品表mapper
  */
@@ -16,6 +19,13 @@ public interface ComplaintSignclosedProductInfoMapper {
      */
     SignclosedProductInfo getSignclosedById(Integer productId);
     /**
+     * 查询多个签收产品记录
+     * @return
+     */
+    List<SignclosedProductInfo> listSignclosedById(Integer signclosedId);
+
+
+    /**
      * 修改单个签收产品记录
      * @return
      */

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

@@ -30,5 +30,5 @@ public interface FittingsInfoMapper {
      * 查询所有配件信息
      * @return
      */
-    List<FittingsInfo> listFittings();
+    List<FittingsInfo> listFittings(FittingsInfo fittingsInfo);
 }

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/FittingsInfoServiceImpl.java

@@ -31,7 +31,7 @@ public class FittingsInfoServiceImpl implements FittingsInfoService {
     }
 
     @Override
-    public List<FittingsInfo> listFittings() {
-        return fittingsInfoMapper.listFittings();
+    public List<FittingsInfo> listFittings(FittingsInfo fittingsInfo) {
+        return fittingsInfoMapper.listFittings(fittingsInfo);
     }
 }

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

@@ -8,9 +8,13 @@
     <result column="product_num" property="productNum" jdbcType="INTEGER" />
     <result column="signclosed_create_time" property="signclosedCreateTime" jdbcType="TIMESTAMP" />
     <result column="signclosed_update_time" property="signclosedUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="signclosed_product_type" property="signclosedProductType" jdbcType="INTEGER" />
+    <result column="signclosed_product_id" property="signclosedProductId" jdbcType="INTEGER" />
+    <result column="signclosed_product_color" property="signclosedProductColor" jdbcType="INTEGER" />
   </resultMap>
   <sql id="Base_Column_List" >
-    product_id, signclosed_id, product_name, product_num, signclosed_create_time, signclosed_update_time
+    product_id, signclosed_id, product_name, product_num, signclosed_create_time, signclosed_update_time,
+    signclosed_product_type,signclosed_product_id,signclosed_product_color
   </sql>
   <select id="getByPrimaryId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -18,12 +22,32 @@
     from tb_rst_complaint_awaiting_signclosed_product
     where product_id = #{productId,jdbcType=INTEGER}
   </select>
+  <select id="listByPrimaryId" resultMap="BaseResultMap" parameterType="AwaitingSignclosedProductInfo" >
+    select
+    sp.product_id productId,
+	sp.signclosed_id signclosedId,
+	sp.product_name productName,
+	sp.product_num productNum,
+	sp.signclosed_create_time signclosedCreateTime,
+	sp.signclosed_update_time signclosedUpdateTime,
+	sp.signclosed_product_type signclosedProductType,
+	sp.signclosed_product_id signclosedProductId,
+	sp.signclosed_product_color signclosedProductColor,
+    pc.color_name colorName,
+    pi.product_number productNumber
+    from
+    tb_rst_complaint_awaiting_signclosed_product sp
+    LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
+    LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
+    where signclosed_id = #{signclosedId,jdbcType=INTEGER}
+  </select>
   <insert id="insert" parameterType="AwaitingSignclosedProductInfo" useGeneratedKeys="true" keyProperty="productId">
     insert into tb_rst_complaint_awaiting_signclosed_product (product_id, signclosed_id, product_name, 
-      product_num, signclosed_create_time, signclosed_update_time
+      product_num, signclosed_create_time, signclosed_update_time,signclosed_product_type,signclosed_product_id,signclosed_product_color
       )
     values (#{productId,jdbcType=INTEGER}, #{signclosedId,jdbcType=INTEGER}, #{productName,jdbcType=VARCHAR}, 
       #{productNum,jdbcType=INTEGER}, #{signclosedCreateTime,jdbcType=TIMESTAMP}, #{signclosedUpdateTime,jdbcType=TIMESTAMP}
+      ,#{signclosedProductType,jdbcType=INTEGER}, #{signclosedProductId,jdbcType=INTEGER}, #{signclosedProductColor,jdbcType=INTEGER}
       )
   </insert>
 

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

@@ -41,6 +41,134 @@
     from tb_rst_complaint_signclosed
     where signclosed_id = #{signclosedId,jdbcType=INTEGER}
   </select>
+
+  <resultMap id="complaintSignclosedInfoMap" type="ComplaintSignclosedInfo">
+    <id property="signclosed_id" column="signclosedId"/>
+    <result property="signclosed_type" column="signclosedType"/>
+    <result property="signclosed_type_name" column="signclosedTypeName"/>
+    <result property="machine_no" column="machineNo"/>
+    <result property="signclosed_logistics" column="signclosedLogistics"/>
+    <result property="signclosed_logistics_number" column="signclosedLogisticsNumber"/>
+    <result property="signclosed_send_name" column="signclosedSendName"/>
+    <result property="signclosed_send_tel" column="signclosedSendTel"/>
+    <result property="signclosed_addr_provinces" column="signclosedAddrProvinces"/>
+    <result property="signclosed_addr_city" column="signclosedAddrCity"/>
+    <result property="signclosed_is_fittings" column="signclosedIsFittings"/>
+    <result property="signclosed_date" column="signclosedDate"/>
+    <result property="signclosed_is_quality" column="signclosedIsQuality"/>
+    <result property="signclosed_is_into" column="signclosedIsInto"/>
+    <result property="signclosed_state" column="signclosedState"/>
+    <result property="signclosed_objects_state" column="signclosedObjectsState"/>
+    <result property="signclosed_customer_id" column="signclosedCustomerId"/>
+    <result property="signclosed_urged_num" column="signclosedUrgedNum"/>
+    <result property="old_efast_id" column="oldEfastId"/>
+    <result property="new_efast_id" column="newEfastId"/>
+    <result property="signclosed_customer_desc" column="signclosedCustomerDesc"/>
+    <result property="signclosed_desc" column="signclosedDesc"/>
+    <result property="signclosed_create_time" column="signclosedCreateTime"/>
+    <result property="signclosed_update_time" column="signclosedUpdateTime"/>
+    <collection property="awaitingSignclosedProductInfoList" column="SIGNCLOSED_ID" ofType="AwaitingSignclosedProductInfo" select="listAwaitingSignclosedById"/>
+    <collection property="signclosedProductInfoList" column="SIGNCLOSED_ID" ofType="SignclosedProductInfo" select="listSignclosedById"/>
+  </resultMap>
+  <select id="listAwaitingSignclosedById" resultType="AwaitingSignclosedProductInfo" parameterType="String" >
+    select
+    sp.product_id productId,
+    sp.signclosed_id signclosedId,
+    sp.product_name productName,
+    sp.product_num productNum,
+    sp.signclosed_create_time signclosedCreateTime,
+    sp.signclosed_update_time signclosedUpdateTime,
+    sp.signclosed_product_type signclosedProductType,
+    sp.signclosed_product_id signclosedProductId,
+    sp.signclosed_product_color signclosedProductColor,
+    pc.color_name colorName,
+    pi.product_number productNumber
+    from
+    tb_rst_complaint_awaiting_signclosed_product sp
+    LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
+    LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
+    where signclosed_id = #{signclosedId}
+  </select>
+
+  <select id="listSignclosedById" resultType="SignclosedProductInfo" parameterType="String" >
+    select
+    sp.product_id productId,
+    sp.signclosed_id signclosedId,
+    sp.product_name productName,
+    sp.product_num productNum,
+    sp.signclosed_create_time signclosedCreateTime,
+    sp.signclosed_update_time signclosedUpdateTime,
+    sp.signclosed_product_type signclosedProductType,
+    sp.signclosed_product_id signclosedProductId,
+    sp.signclosed_product_color signclosedProductColor,
+    pc.color_name colorName,
+    pi.product_number productNumber
+    from
+    tb_rst_complaint_signclosed_product sp
+    LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
+    LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
+    where signclosed_id = #{signclosedId}
+  </select>
+  <select id="listSignclosed" resultMap="complaintSignclosedInfoMap" parameterType="ComplaintSignclosedInfo" >
+    SELECT
+      cs.signclosed_id,
+      cs.signclosed_type,
+      cs.signclosed_type_name,
+      cs.machine_no,
+      cs.signclosed_logistics,
+      cs.signclosed_logistics_number,
+      cs.signclosed_send_name,
+      cs.signclosed_send_tel,
+      cs.signclosed_addr_provinces,
+      cs.signclosed_addr_city,
+      cs.signclosed_is_fittings,
+      cs.signclosed_date,
+      cs.signclosed_is_quality,
+      cs.signclosed_is_into,
+      cs.signclosed_state,
+      cs.signclosed_objects_state,
+      cs.signclosed_customer_id,
+      cs.signclosed_urged_num,
+      cs.old_efast_id,
+      cs.new_efast_id,
+      cs.signclosed_customer_desc,
+      cs.signclosed_desc,
+      cs.signclosed_create_time,
+      cs.signclosed_update_time,
+      ap.province provincesName,
+      ac.city cityName
+    FROM
+	tb_rst_complaint_signclosed cs
+	LEFT JOIN tb_rst_address_province ap ON cs.signclosed_addr_provinces = ap.province_id
+	LEFT JOIN tb_rst_address_city ac ON cs.signclosed_addr_city = ac.city_id
+    <where>
+      <if test="signclosedSendName != null and signclosedSendName != ''" >
+        cs.signclosed_send_name = #{signclosedSendName}
+      </if>
+      <if test="signclosedSendTel != null and signclosedSendTel != ''" >
+        AND cs.signclosed_send_tel = #{signclosedSendTel}
+      </if>
+      <if test="signclosedLogisticsNumber != null and signclosedLogisticsNumber != ''" >
+        AND cs.signclosed_logistics_number = #{signclosedLogisticsNumber}
+      </if>
+      <if test="signclosedType != null and signclosedType != ''" >
+        AND cs.signclosed_type = #{signclosedType}
+      </if>
+      <if test="signclosedObjectsState != null and signclosedObjectsState != ''" >
+        AND cs.signclosed_objects_state = #{signclosedObjectsState}
+      </if>
+      <if test="signclosedState != null and signclosedState != ''" >
+        AND cs.signclosed_state = #{signclosedState}
+      </if>
+      <if test="signclosedIsInto != null and signclosedIsInto != ''" >
+        AND cs.signclosed_is_into = #{signclosedIsInto}
+      </if>
+      <if test="signclosedIsQuality != null and signclosedIsQuality != ''" >
+        AND cs.signclosed_is_quality = #{signclosedIsQuality}
+      </if>
+    </where>
+  </select>
+
   <insert id="insert" parameterType="ComplaintSignclosedInfo" >
     insert into tb_rst_complaint_signclosed (signclosed_id, signclosed_type, signclosed_type_name, 
       machine_no, signclosed_logistics, signclosed_logistics_number, 
@@ -138,4 +266,10 @@
     </set>
     where signclosed_id = #{signclosedId,jdbcType=INTEGER}
   </update>
+
+  <update id="updateUrgedNumById" parameterType="ComplaintSignclosedInfo" >
+    update tb_rst_complaint_signclosed SET
+        signclosed_urged_num = signclosed_urged_num + 1
+    where signclosed_id = #{signclosedId,jdbcType=INTEGER}
+  </update>
 </mapper>

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

@@ -8,9 +8,13 @@
     <result column="product_num" property="productNum" jdbcType="INTEGER" />
     <result column="signclosed_create_time" property="signclosedCreateTime" jdbcType="TIMESTAMP" />
     <result column="signclosed_update_time" property="signclosedUpdateTime" jdbcType="TIMESTAMP" />
+    <result column="signclosed_product_type" property="signclosedProductType" jdbcType="INTEGER" />
+    <result column="signclosed_product_id" property="signclosedProductId" jdbcType="INTEGER" />
+    <result column="signclosed_product_color" property="signclosedProductColor" jdbcType="INTEGER" />
   </resultMap>
   <sql id="Base_Column_List" >
-    product_id, signclosed_id, product_name, product_num, signclosed_create_time, signclosed_update_time
+    product_id, signclosed_id, product_name, product_num, signclosed_create_time,
+    signclosed_update_time,signclosed_product_type,signclosed_product_id,signclosed_product_color
   </sql>
   <select id="getSignclosedById" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -18,12 +22,33 @@
     from tb_rst_complaint_signclosed_product
     where product_id = #{productId,jdbcType=INTEGER}
   </select>
+  <select id="listSignclosedById" resultMap="BaseResultMap" parameterType="SignclosedProductInfo" >
+    select
+    sp.product_id productId,
+	sp.signclosed_id signclosedId,
+	sp.product_name productName,
+	sp.product_num productNum,
+	sp.signclosed_create_time signclosedCreateTime,
+	sp.signclosed_update_time signclosedUpdateTime,
+	sp.signclosed_product_type signclosedProductType,
+	sp.signclosed_product_id signclosedProductId,
+	sp.signclosed_product_color signclosedProductColor,
+    pc.color_name colorName,
+    pi.product_number productNumber
+    from
+    tb_rst_complaint_signclosed_product sp
+    LEFT JOIN tb_rst_product_color pc on sp.signclosed_product_color = pc.color_id
+    LEFT JOIN tb_rst_product_info pi on sp.signclosed_product_id = pi.product_id
+    where signclosed_id = #{signclosedId,jdbcType=INTEGER}
+  </select>
+
   <insert id="insert" parameterType="SignclosedProductInfo" >
     insert into tb_rst_complaint_signclosed_product (product_id, signclosed_id, product_name, 
-      product_num, signclosed_create_time, signclosed_update_time
+      product_num, signclosed_create_time, signclosed_update_time,signclosed_product_type,signclosed_product_id,signclosed_product_color
       )
     values (#{productId,jdbcType=INTEGER}, #{signclosedId,jdbcType=INTEGER}, #{productName,jdbcType=VARCHAR}, 
       #{productNum,jdbcType=INTEGER}, #{signclosedCreateTime,jdbcType=TIMESTAMP}, #{signclosedUpdateTime,jdbcType=TIMESTAMP}
+      ,#{signclosedProductType,jdbcType=INTEGER}, #{signclosedProductId,jdbcType=INTEGER}, #{signclosedProductColor,jdbcType=INTEGER}
       )
   </insert>
 

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

@@ -25,10 +25,15 @@
   </select>
 
   <!-- 查询所有配件信息 -->
-  <select id="listFittings" resultType="FittingsInfo">
+  <select id="listFittings" resultType="FittingsInfo" parameterType="FittingsInfo">
     select
     <include refid="fittingsInfo" />
     from tb_rst_product_fittings
+    <where>
+      <if test="productId != null">
+        product_id = #{productId}
+      </if>
+    </where>
   </select>
 
   <!-- 添加配件信息 -->

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java

@@ -104,6 +104,16 @@ public class ProductServiceImpl implements ProductService {
     }
 
     @Override
+    public List<Product> listProduce(Product product){
+        return productMapper.listProduceSelect(product);
+    }
+
+    @Override
+    public List<ProductColor> listProduceColor(ProductColor productColor) {
+        return productMapper.listProduceColor(productColor);
+    }
+
+    @Override
     public List<ProductColor> listproductAndColor(ProductColor productColor) {
         return productMapper.listproductAndColor(productColor);
     }

+ 12 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java

@@ -30,6 +30,18 @@ public interface ProductMapper {
     List<Product> listProduce();
 
     /**
+     * 获取所有产品
+     * @return
+     */
+    List<Product> listProduceSelect(Product product);
+
+    /**
+     * 获取所有产品颜色
+     * @return
+     */
+    List<ProductColor> listProduceColor(ProductColor productColor);
+
+    /**
      * 查询产品和产品颜色集合
      * @param productColor
      * @return

+ 40 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml

@@ -52,6 +52,36 @@
         </where>
     </select>
 
+    <select id="listProduceColor" parameterType="ProductColor" resultType="ProductColor">
+        select
+        c.color_id colorId,
+        c.color_product_id colorProductId,
+        c.color_name colorName,
+        c.color_discount colorDiscount,
+        c.color_price colorPrice,
+        c.color_bar colorBar,
+        c.color_picture colorPicture,
+        c.color_status colorStatus,
+        c.color_cretae_time colorCretaeTime,
+        c.color_update_time colorUpdateTime
+        from
+        tb_rst_product_color c
+        <where>
+            <if test="colorId != null">
+                color_id = #{colorId}
+            </if>
+            <if test="colorProductId != null">
+                and color_product_id = #{colorProductId}
+            </if>
+            <if test="colorBar != null">
+                and color_bar = #{colorBar}
+            </if>
+            <if test="colorStatus != null">
+                and color_status = #{colorStatus}
+            </if>
+        </where>
+    </select>
+
     <!-- 根据条件查询产品类型集合 -->
     <select id="listProductType" parameterType="ProductType" resultType="ProductType">
       select
@@ -68,6 +98,16 @@
     <select id="listProduce"  resultType="product">
         select * from tb_rst_product_info where product_type = 1
     </select>
+
+    <select id="listProduceSelect"  resultType="product" parameterType="product">
+       SELECT
+            t.*,
+            trpt.type_name
+        FROM
+            tb_rst_product_info t
+        LEFT JOIN tb_rst_product_type trpt ON t.product_id = trpt.type_id
+    </select>
+
     <select id="getProduce"  resultType="product">
         select * from tb_rst_product_info where product_id = #{productId}
     </select>

+ 60 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -1,6 +1,8 @@
 package com.iamberry.rst.controllers.cm;
 
 import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.sys.Admin;
@@ -12,6 +14,7 @@ import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.rst.faces.cm.CompanyInfoService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
+import com.iamberry.rst.utils.produceUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -58,6 +61,10 @@ public class AdminCustomerController {
     @Autowired
     private BackGoodsService backGoodsService;
 
+    @Autowired
+    private FittingsInfoService fittingsInfoService;
+
+
     /**
      * 获取客诉列表
      *
@@ -283,7 +290,7 @@ public class AdminCustomerController {
             rj.addResponseKeyValue("adminId",adminId);
             return rj;
         } else {
-            return new ResponseJson(500, "修改失败!", 500);
+            return new ResponseJson(500, "查询失败!", 500);
         }
     }
 
@@ -305,11 +312,62 @@ public class AdminCustomerController {
             rj.addResponseKeyValue("productTypeList",productTypeList);
             return rj;
         } else {
-            return new ResponseJson(500, "修改失败!", 500);
+            return new ResponseJson(500, "查询失败!", 500);
+        }
+    }
+
+    /**
+     * 查询产品
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:add:customer")
+    @RequestMapping("/select_produce")
+    public ResponseJson selectProduce(HttpServletRequest request) {
+        ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
+
+        Product product = new Product();
+        List<Product> productList = productService.listProduce(product);
+
+        for(Product pro : productList){
+            ProductColor productColor  = new ProductColor();
+            productColor.setColorProductId(pro.getProductId());
+            List<ProductColor> productColorList = productService.listProduceColor(productColor);
+            pro.setColorList(productColorList);
+        }
+        if (productList != null && productList.size()> 0) {
+            rj.addResponseKeyValue("productList",productList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败!", 500);
         }
     }
 
     /**
+     * 查询产品
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customer:add:customer")
+    @RequestMapping("/select_produce_fittings")
+    public ResponseJson selectProduceFittings(HttpServletRequest request,FittingsInfo fittingsInfo) {
+        ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
+
+        List<FittingsInfo> produceFittingsList = fittingsInfoService.listFittings(fittingsInfo);
+
+        if (produceFittingsList != null && produceFittingsList.size()> 0) {
+            rj.addResponseKeyValue("produceFittingsList",produceFittingsList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败!", 500);
+        }
+    }
+
+
+
+    /**
      * 添加回访完成内容
      * @param request
      * @param visit

+ 139 - 7
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminDetectController.java

@@ -1,16 +1,20 @@
 package com.iamberry.rst.controllers.cm;
 
-import com.iamberry.rst.core.cm.ComplaintDetectInfo;
-import com.iamberry.rst.core.cm.FittingsInfo;
+import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.Order;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.RentType;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsDevice;
+import com.iamberry.rst.faces.cm.AwaitingSignclosedProductInfoService;
 import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.faces.cm.ComplaintSignclosedProductInfoService;
 import com.iamberry.rst.faces.cm.FittingsInfoService;
 import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedProductInfoMapper;
 import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.commons.lang.StringUtils;
@@ -41,8 +45,12 @@ public class AdminDetectController {
     private ProductService productService;
     @Autowired
     private FittingsInfoService fittingsInfoService;
-
-
+    @Autowired
+    private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper;
+    @Autowired
+    private ComplaintSignclosedProductInfoService signclosedProductInfoService;
+    @Autowired
+    private AwaitingSignclosedProductInfoService awaitingSignclosedProductService;
     /**
      * 跳转到添加检测记录页面
      *
@@ -182,7 +190,7 @@ public class AdminDetectController {
         ModelAndView mv = new ModelAndView("cm/inspection/add_remark");
         String detectId = request.getParameter("detectId");
         if(detectId == null || detectId.equals("")){
-            return null;
+            return mv;
         }
         ComplaintDetectInfo detectInfo = complaintDetectInfoService.getComplaintDetectById(Integer.valueOf(detectId));
         mv.addObject("detectId",detectId);
@@ -202,7 +210,7 @@ public class AdminDetectController {
         String detectId = request.getParameter("detectId");
         String state = request.getParameter("state");
         if(detectId == null || detectId.equals("")){
-            return null;
+            return mv;
         }
         ComplaintDetectInfo detectInfo = complaintDetectInfoService.getComplaintDetectById(Integer.valueOf(detectId));
         mv.addObject("detectId",detectId);
@@ -222,7 +230,7 @@ public class AdminDetectController {
         ModelAndView mv = new ModelAndView("cm/inspection/detect_complete");
         String detectId = request.getParameter("detectId");
         if(detectId == null || detectId.equals("")){
-            return null;
+            return mv;
         }
         ComplaintDetectInfo detectInfo = complaintDetectInfoService.getComplaintDetectById(Integer.valueOf(detectId));
         mv.addObject("detectId",detectId);
@@ -300,5 +308,129 @@ public class AdminDetectController {
         }
         return msg;
     }
+
+    /**
+     * 跳转到查看仓储进度页面
+     *
+     * @return
+     */
+    @RequiresPermissions("complete:update:complete")
+    @RequestMapping(value = "/to_view_progress")
+    public ModelAndView toViewProgress(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/inspection/view_progress");
+        String signclosedId = request.getParameter("signclosedId");
+        if(signclosedId == null || signclosedId.equals("")){
+            return mv;
+        }
+        if(Integer.valueOf(signclosedId) == 0){
+            return mv;
+        }
+        List<SignclosedProductInfo> signclosedProductInfo = null;
+        List<AwaitingSignclosedProductInfo> awaitingSignclosedProductInfo = null;
+        ComplaintSignclosedInfo complaintSignclosedInfo = complaintSignclosedInfoMapper.getSignclosedById(Integer.valueOf(signclosedId));
+
+        if(complaintSignclosedInfo.getSignclosedState() == 1){//如果已签收。查询签收表所有产品 反之查询待签收表
+            signclosedProductInfo = signclosedProductInfoService.listSignclosedById(complaintSignclosedInfo.getSignclosedId());
+        }else{
+            awaitingSignclosedProductInfo = awaitingSignclosedProductService.listByPrimaryId(complaintSignclosedInfo.getSignclosedId());
+        }
+
+        mv.addObject("signclosedProductInfo",signclosedProductInfo == null ? awaitingSignclosedProductInfo :signclosedProductInfo);
+        mv.addObject("signclosedInfo",complaintSignclosedInfo);
+        mv.addObject("signclosedId",signclosedId);
+        return mv;
+    }
+
+    /**
+     * 跳转到查看物流信息页面
+     *
+     * @return
+     */
+    @RequiresPermissions("complete:update:complete")
+    @RequestMapping(value = "/to_view_logistics")
+    public ModelAndView toViewLogistics(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/logistics/view_logistics");
+        String billCode = request.getParameter("billCode");
+        String billName = request.getParameter("billName");
+        if(billCode == null || billCode.equals("") ||billName == null || billName.equals("")){
+            return mv;
+        }
+        mv.addObject("billCode",billCode);
+        mv.addObject("billName",billName);
+        return mv;
+    }
+
+    /**
+     * 增加催促提醒
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("reminding:add:reminding")
+    @ResponseBody
+    @RequestMapping("/add_reminding")
+    public ResponseJson add_reminding(HttpServletRequest request,ComplaintSignclosedInfo complaintSignclosedInfo) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        Integer num = complaintSignclosedInfoMapper.updateUrgedNumById(complaintSignclosedInfo);
+        if (num < 1) {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        } else {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+        }
+        return msg;
+    }
+
+    /**
+     * 跳转到修改检测完成信息页面
+     *
+     * @return
+     */
+    @RequiresPermissions("complete:update:complete")
+    @RequestMapping(value = "/to_update_complete")
+    public ModelAndView toUpdateComplete(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/inspection/update_complete");
+        String detectId = request.getParameter("detectId");
+        if(detectId == null || detectId.equals("")){
+            return mv;
+        }
+        ComplaintDetectInfo detectInfo = complaintDetectInfoService.getComplaintDetectById(Integer.valueOf(detectId));
+        mv.addObject("detectId",detectId);
+        mv.addObject("detectInfo",detectInfo);
+        return mv;
+    }
+
+    /**
+     * 检测完成
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("complete:update:complete")
+    @ResponseBody
+    @RequestMapping("/update_complete")
+    public ResponseJson update_complete(HttpServletRequest request, ComplaintDetectInfo detectInfo) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        if(detectInfo == null){
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+            return msg;
+        }
+        if(detectInfo.getDetectId() == null || detectInfo.getDetectId().equals("")){
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+            return msg;
+        }
+        Integer num = complaintDetectInfoService.updateComplaintDetectById(detectInfo);
+        if (num < 1) {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        } else {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+        }
+        return msg;
+    }
 }
 

+ 125 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSignclosedController.java

@@ -0,0 +1,125 @@
+package com.iamberry.rst.controllers.cm;
+
+import com.iamberry.rst.core.cm.AwaitingSignclosedProductInfo;
+import com.iamberry.rst.core.cm.ComplaintDetectInfo;
+import com.iamberry.rst.core.cm.ComplaintSignclosedInfo;
+import com.iamberry.rst.core.cm.SignclosedProductInfo;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.ComplaintDetectInfoService;
+import com.iamberry.rst.faces.cm.ComplaintSignclosedInfoService;
+import com.iamberry.rst.faces.cm.FittingsInfoService;
+import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.service.cm.mapper.AwaitingSignclosedProductMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedInfoMapper;
+import com.iamberry.rst.service.cm.mapper.ComplaintSignclosedProductInfoMapper;
+import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.ResponseJson;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * Created by wxm on 2017/8/29.
+ */
+@Controller
+@RequestMapping("/admin/signclosed")
+public class AdminSignclosedController {
+
+   // private
+    @Autowired
+    private ComplaintDetectInfoService complaintDetectInfoService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private FittingsInfoService fittingsInfoService;
+    @Autowired
+    private ComplaintSignclosedInfoService complaintSignclosedInfoService;
+    /**
+     * 跳转到添加检测记录页面
+     *
+     * @return
+     */
+    @RequiresPermissions("detect:add:detect")
+    @RequestMapping(value = "/to_add_detect")
+    public ModelAndView toAddDetect(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("cm/inspection/add_detect");
+        //获取所有产品
+        List<Product> productList = productService.listProduce();
+        mv.addObject("productList",productList);
+        /*//获取所有配件
+        List<FittingsInfo> listFittings = fittingsInfoService.listFittings();
+        mv.addObject("listFittings",listFittings);*/
+        return mv;
+    }
+
+
+
+    /**
+     * 客诉 - 查询签收/仓储列表
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("signclosed:select:signclosed")
+    @RequestMapping("/select_signclosed_list")
+    public ModelAndView selectDetectList(HttpServletRequest request,
+                                        @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
+                                        @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
+                                        @RequestParam(value = "pageSize", defaultValue = "5", required = false) int pageSize,
+                                         ComplaintSignclosedInfo signclosedInfo) {
+
+        ModelAndView mv = new ModelAndView("cm/signclosed/signclosed_list");
+        StringBuilder url = new StringBuilder("/admin/signclosed/select_signclosed_list?pageSize=" + pageSize);
+// 请求参数
+        /*if (signclosedInfo.getSignclosedType() != null) {
+            url.append("&signclosedType=").append(signclosedInfo.getSignclosedType());
+            mv.addObject("signclosedType",signclosedInfo.getSignclosedType());
+        }
+        if (StringUtils.isNotEmpty(signclosedInfo.getSignclosedSendName())) {
+            url.append("&signclosedInfo=").append(signclosedInfo.getSignclosedSendName());
+            mv.addObject("signclosedInfo",signclosedInfo.getSignclosedSendName());
+        }
+        if (StringUtils.isNotEmpty(signclosedInfo.getSignclosedSendTel())) {
+            url.append("&signclosedSendTel=").append(signclosedInfo.getSignclosedSendTel());
+            mv.addObject("signclosedSendTel",signclosedInfo.getSignclosedSendTel());
+        }
+        if (StringUtils.isNotEmpty(signclosedInfo.getSignclosedLogisticsNumber())) {
+            url.append("&signclosedLogisticsNumber=").append(signclosedInfo.getSignclosedLogisticsNumber());
+            mv.addObject("signclosedLogisticsNumber",signclosedInfo.getSignclosedLogisticsNumber());
+        }
+        if (signclosedInfo.getSignclosedObjectsState() != null) {
+            url.append("&signclosedObjectsState=").append(signclosedInfo.getSignclosedObjectsState());
+            mv.addObject("signclosedObjectsState",signclosedInfo.getSignclosedObjectsState());
+        }*/
+        // 封装请求数据
+        PageRequest<ComplaintSignclosedInfo> pageRequest = new PageRequest<>(signclosedInfo, pageNO, pageSize, pageTotal == null);
+        // 查询订单列表
+        PagedResult<ComplaintSignclosedInfo> result = complaintSignclosedInfoService.listSignclosed(pageRequest);
+        long total = 0;
+        if (pageTotal == null) {
+            total = result.getPages();
+        } else {
+            total = pageTotal;
+            result.setPages(total);
+        }
+
+       /* url.append("&pageTotal=").append(total).append("&pageNO=");
+        mv.addObject("page", result);
+        mv.addObject("url", url.toString());*/
+        StitchAttrUtil.setModelAndView(signclosedInfo, mv, "/admin/signclosed/select_signclosed_list", result);
+        return mv;
+    }
+
+
+}
+

+ 51 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/kuaidi/LogisticsController.java

@@ -0,0 +1,51 @@
+package com.iamberry.rst.controllers.kuaidi;
+
+import com.iamberry.rst.utils.KuaiDi100;
+import com.iamberry.rst.utils.ResultMsg;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResultInfo;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Created by Administrator on 2017/8/15.
+ */
+@Controller
+@RequestMapping("/logistics")
+public class LogisticsController {
+    @Autowired
+    private KuaiDi100 kuaidi100;
+
+
+    /**
+     * 查询快递信息
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    @RequestMapping("/getExpressInfo")
+    @ResponseBody
+    public ResultMsg getExpressInfo(@RequestParam("com") String com, @RequestParam("nu") String nu, HttpServletResponse response){
+        ResultMsg msg = new ResultMsg();
+        JSONObject rst = null;
+        if (com == null || com.equals("") || nu == null || nu.equals("")){
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setMessage(NameUtils.getConfig("ERROR"));
+            msg.setData(rst);
+            msg.setStatus(false);
+            return msg;
+        }
+        rst = kuaidi100.getExpressInfo(com,nu);
+        msg.setResultCode(ResultInfo.SUCCESSCODE);
+        msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+        msg.setData(rst);
+        msg.setStatus(true);
+        return msg;
+    }
+}

+ 5 - 5
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java

@@ -196,11 +196,11 @@ public class AdminPtsBomController {
     public ResponseJson listComponents(HttpServletRequest request) {
 
         String produceId = request.getParameter("produceId");
-        if (produceId == null || "".equals(produceId)) {
-            return new ResponseJson(500, "ERROR", 500);
-        }
+
         PtsComponents ptsComponents = new PtsComponents();
-        ptsComponents.setProduceId(Integer.valueOf(produceId));
+        if (produceId != null && !"".equals(produceId)) {
+            ptsComponents.setProduceId(Integer.valueOf(produceId));
+        }
         ptsComponents.setComponentsStatus(1);
         //查询所有零件
         List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents);
@@ -239,7 +239,7 @@ public class AdminPtsBomController {
         PtsComponents ptsComponents = new PtsComponents();
         ptsComponents.setProduceId(ptsBom.getProduceId());
         ptsComponents.setComponentsStatus(1);
-        List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
+        List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents);
 
         mv.addObject("produceList", produceList);
         mv.addObject("ptsBom", ptsBom);

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

@@ -0,0 +1,206 @@
+package com.iamberry.rst.utils;
+
+import net.sf.json.JSONObject;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * Created by Administrator on 2017/8/15.
+ */
+@Component
+public class KuaiDi100 {
+    private static String key = "29833628d495d7a5";//授权密匙key    百度的
+  /*private static String key = "06d6c2ea1bdb4ee9";//授权密匙key  自己的*/
+                    /*<option value="sto">申通快递</option>
+					<option value="yto">圆通快递</option>
+					<option value="sf">顺丰快递</option>
+					<option value="ems">邮政EMS</option>
+					<option value="zto">中通快递</option>
+					<option value="zjs">宅急送</option>
+					<option value="yunda">韵达快递</option>
+					<option value="cces">cces快递</option>
+					<option value="pick">上门提货</option>
+					<option value="htky">汇通快递</option>
+					<option value="ttkdex">天天快递</option>
+					<option value="stars">星晨急便</option>
+					<option value="jd">京东快递</option>
+					<option value="01">其他</option>
+					<option value="02">上门送货</option>*/
+
+  public String logisticsConversions(String code){
+      if(code == null || code.equals("")){
+          return null;
+      }
+      switch (code){
+          case "sto":
+              code = "shentong";
+              break;
+          case "yto":
+              code = "yuantong";
+              break;
+          case "sf":
+              code = "shunfeng";
+              break;
+          case "ems":
+              code = "ems";
+              break;
+          case "eyb":
+              code = "ems";
+              break;
+          case "zto":
+              code = "zhongtong";
+              break;
+          case "zjs":
+              code = "zhaijisong";
+              break;
+          case "yunda":
+              code = "yunda";
+              break;
+          case "cces":
+              code = "cces";
+              break;
+          case "pick":
+              code = "pick";
+              break;
+          case "htky":
+              code = "huitongkuaidi";
+              break;
+          case "ttkdex":
+              code = "tiantian";
+              break;
+          case "stars":
+              code = "xingchenjibian";
+              break;
+          case "jd":
+              code = "jd";
+              break;
+          case "01":
+              code = "01";
+              break;
+          case "02":
+              code = "01";
+              break;
+      }
+    return code;
+  }
+    /**
+     *  快递对应代码
+     *  EMS 		ems/eyb
+     * 	申通快递  	shentong
+     * 	顺丰速运 	shunfeng
+     * 	圆通速递 	yuantong
+     * 	韵达快运		yunda
+     *	中通快递		zhongtong
+     *	百世快递		huitongkuaidi
+     *	天天快递		tiantian
+     *	宅急送		zhaijisong
+     *	邮政国内包裹	youzhengguonei
+     *	邮政国际包裹	youzhengguoji
+     *	EMS国际快递	emsguoji
+     */
+    public static void main(String[] agrs){
+        KuaiDi100 kuaidi = new KuaiDi100();
+        System.out.println(kuaidi.getExpressInfo("ems","9754210807242"));
+    }
+    /**
+     * 查询快递信息
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    public JSONObject getExpressInfo(String com , String nu){
+        JSONObject ret = null;
+        try
+        {
+            com = logisticsConversions(com);
+            StringBuilder sb = new StringBuilder();
+            sb.append("http://api.kuaidi100.com/api?id=");
+            sb.append(KuaiDi100.key);
+            sb.append("&com=").append(com);
+            sb.append("&nu=").append(nu);
+            sb.append("&show=0&muti=1&order=desc");
+            URL url= new URL(sb.toString());
+            URLConnection con=url.openConnection();
+            con.setAllowUserInteraction(false);
+            InputStream urlStream = url.openStream();
+            String type = con.guessContentTypeFromStream(urlStream);
+            String charSet=null;
+            if (type == null)
+                type = con.getContentType();
+
+            if (type == null || type.trim().length() == 0)
+                return null;
+
+            if(type.indexOf("charset=") > 0)
+                charSet = type.substring(type.indexOf("charset=") + 8);
+
+            byte b[] = new byte[10000];
+            int numRead = urlStream.read(b);
+            String content = new String(b, 0, numRead, "UTF-8");
+            while (numRead != -1) {
+                numRead = urlStream.read(b);
+                if (numRead != -1) {
+                    //String newContent = new String(b, 0, numRead);
+                    String newContent = new String(b, 0, numRead, "UTF-8");
+                    content += newContent;
+                }
+            }
+            ret = JSONObject.fromObject(content);
+            System.out.println(ret);
+            urlStream.close();
+        } catch (MalformedURLException e)
+        {
+            e.printStackTrace();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return ret;
+    }
+    /**
+     * 该接口使用与收费的快递公司接口查询
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    public static String searchkuaiDiInfo(String com, String nu)
+    {
+        String content = "";
+        try
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.append("http://www.kuaidi100.com/applyurl?key=").append(KuaiDi100.key);
+            sb.append("&com=").append(com);
+            sb.append("&nu=").append(nu);
+            URL url = new URL(sb.toString());
+            URLConnection con = url.openConnection();
+            con.setAllowUserInteraction(false);
+            InputStream urlStream = url.openStream();
+            byte b[] = new byte[10000];
+            int numRead = urlStream.read(b);
+            content = new String(b, 0, numRead);
+            while (numRead != -1)
+            {
+                numRead = urlStream.read(b);
+                if (numRead != -1)
+                {
+                    // String newContent = new String(b, 0, numRead);
+                    String newContent = new String(b, 0, numRead, "UTF-8");
+                    content += newContent;
+                }
+            }
+            urlStream.close();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            System.out.println("快递查询错误");
+        }
+        return content;
+    }
+}

+ 68 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/ResultMsg.java

@@ -0,0 +1,68 @@
+package com.iamberry.rst.utils;
+
+/**
+ * @description 作为服务影响的返回结果,常用业务错误,返回错误码和错误信息;
+ * @author 欧阳明
+ * @data 2016-4-18 14:23
+ */
+public class ResultMsg implements java.io.Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8987614804726091566L;
+
+	private boolean status; // 状态
+	
+	private String ResultCode ; //状态码
+	
+	private String message; //返回信息
+	
+	private Object data; //返回对象
+
+	public ResultMsg(){}
+	
+	public ResultMsg(boolean status, String resultCode, String message,
+                     Object data) {
+		super();
+		this.status = status;
+		ResultCode = resultCode;
+		this.message = message;
+		this.data = data;
+	}
+
+	public boolean isStatus() {
+		return status;
+	}
+
+	public void setStatus(boolean status) {
+		this.status = status;
+	}
+
+	public String getResultCode() {
+		return ResultCode;
+	}
+
+	public void setResultCode(String resultCode) {
+		ResultCode = resultCode;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Object getData() {
+		return data;
+	}
+
+	public void setData(Object data) {
+		this.data = data;
+	}
+	
+	
+
+}

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

@@ -183,31 +183,31 @@
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-10 col-sm-10 skin-minimal">
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="1" name="customerIsSolve" checked>
                         <label for="a-7">已解决</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="2" name="customerIsSolve">
                         <label for="a-7">未解决</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="3" name="customerIsSolve">
                         <label for="a-7">换新</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="4" name="customerIsSolve">
                         <label for="a-7">维修</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="5" name="customerIsSolve">
                         <label for="a-7">补发</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="6" name="customerIsSolve">
                         <label for="a-7">退货</label>
                     </div>
                     <div class="radio-box">
-                        <input type="radio" id="a-7" name="bbb">
+                        <input type="radio" id="a-7" value="7" name="customerIsSolve">
                         <label for="a-7">无理由退货</label>
                     </div>
                 </div>
@@ -289,9 +289,7 @@
                         </select>
                     </span>
                 </div>
-                <div class="formControls col-1 col-sm-1">
-                    <button type="button" class="btn btn-primary">修改收货地址</button>
-                </div>
+
             </div>
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"></label>
@@ -302,16 +300,14 @@
             </div>
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>换新产品:</label>
-                <div class="formControls col-10 col-sm-10">
-                    <div class="skin-minimal">
+                <div class="formControls col-10 col-sm-10" id="produceSelect">
+                    <#--<div class="skin-minimal">
                         <div class="check-box">
                             <input type="checkbox" id="checkbox-1" checked>
-                            <label for="checkbox-1">净水机</label>
-                            <select name="" class="select" style="width: 100px;">
-                                <option value="0">WX-12</option>
-                                <option value="1">WX-13</option>
-                            </select>
 
+                            <label for="checkbox-1">净水机</label> -
+
+                            <label for="checkbox-1">净水机</label>
 
                             <select name="" class="select" style="width: 100px;">
                                 <option value="0">黑色</option>
@@ -320,7 +316,6 @@
                             <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
                         </div>
 
-
                         <div class="check-box">
                             <input type="checkbox" id="checkbox-2" checked>
                             <label for="checkbox-2">水箱</label>
@@ -336,7 +331,14 @@
                             <label for="checkbox-2">T2</label>
                             <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
                         </div>
-                    </div>
+                    </div>-->
+                </div>
+
+            </div>
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"></label>
+                <div class="formControls col-1 col-sm-1">
+                    <button type="button" class="btn btn-primary">添加产品</button>
                 </div>
             </div>
 
@@ -387,10 +389,12 @@
                 </div>
             </div>
             <div class="row cl">
-                <label class="form-label col-1 col-sm-1"></label>
+                <label class="form-label col-1 col-sm-1">更换产品:</label>
                 <div class="formControls col-7 col-sm-7">
-                    <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" style="margin-bottom: 10px;"><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" style="margin-bottom: 10px;"><span>红色净水机(wx-1)x 1台</span><span>水箱 x 1件</span><span>t1 x 1件</span><span>t2 x 1件</span></div>
                 </div>
+
             </div>
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>处理描述:</label>
@@ -506,15 +510,18 @@
 
     /*处理结果的执行状态*/
     var isSolve = {
-        solved : {},
-        noSolved : {},
-        renewed : {"录入客诉","督促用户寄回","录入快递单号","仓库收货","换新发货","发货通知用户","收货后回访"},
-        maintain : {"录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","产线维修","换新发货","发货通知用户","收货后回访"},
-        reissue : {"录入客诉","生成E订单","督促仓库发货","仓库发货","发货通知用户","收货后回访"},
-        backGoods :{"录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","退款","退货完成"},
-        noReasonBack :{"录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","退款","退货完成"}
+        solved : [],
+        noSolved : [],
+        renewed : ["录入客诉","督促用户寄回","录入快递单号","仓库收货","换新发货","发货通知用户","收货后回访"],
+        maintain : ["录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","产线维修","换新发货","发货通知用户","收货后回访"],
+        reissue : ["录入客诉","生成E订单","督促仓库发货","仓库发货","发货通知用户","收货后回访"],
+        backGoods : ["录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","退款","退货完成"],
+        noReasonBack : ["录入客诉","督促用户寄回","录入快递单号","仓库收货","品质检测","退款","退货完成"]
     }
 
+    /*全局标识当前状态  type : 1 :已解决  2:未解决  3:换新  4:维修  5:补发   6:退货  7:无理由退货*/
+    var allCustomerType = 1;
+
     /*初始化页面参数*/
     $(function () {
 
@@ -524,12 +531,18 @@
         /*初始化客服*/
         initSysAdmin();
 
-        /*初始化产品类型*/
+        /*初始化产品类型 --  客诉头部的产品类型单选 */
         initProduceType();
 
-        /*初始化选择处理结果*/
+        /*初始化选择处理结果 -- type : 1 :已解决  2:未解决  3:换新  4:维修  5:补发   6:退货  7:无理由退货 */
         initProcessResult(1);
 
+        /*监听处理结果选择事件*/
+        $("[name='customerIsSolve']").change(function(){
+            initProcessResult(parseInt($(this).val()));
+            allCustomerType = parseInt($(this).val());
+        })
+
         /*监听问题类型 选择事件*/
         $("[name='complaintId']").change(function(){
             initComplaintSmallClassInfo($(this).val());
@@ -559,12 +572,18 @@
         });
 
         /* 初始化单选框样式 */
+        initCheck();
+
+    })
+
+    /*初始化单选框样式*/
+    function initCheck(){
         $('.skin-minimal input').iCheck({
             checkboxClass: 'icheckbox-blue',
             radioClass: 'iradio-blue',
             increaseArea: '20%'
         });
-    })
+    }
 
     /*初始化客服*/
     function initSysAdmin() {
@@ -595,7 +614,7 @@
         $("#adminId").html(html);
     }
 
-    /*初始化产品类型*/
+    /*初始化产品类型 --  客诉头部的产品类型单选*/
     function initProduceType(){
         var html = "";
         $.ajax({
@@ -627,29 +646,53 @@
 
     /**
      * 选择处理结果-- 默认选择已解决
-     * type : 0 :已解决  1:未解决  2:换新  3:维修  4:补发   5:退货  6:无理由退货
+     * type : 1 :已解决  2:未解决  3:换新  4:维修  5:补发   6:退货  7:无理由退货
      */
     function initProcessResult(type){
         if(type == null || type == ""){
-            type = 0;
+            type = 1;
         }
-        var statusHtml = ' <li><span class="arrow"></span><div class="number">status_index</div><div>status_html</div></li>';
+        var statusHtml = '<li><span class="arrow"></span><div class="number">status_index</div><div>status_html</div></li>';
         var resultHtml = '';
+        var result = {};
         switch(type)
         {
-            case 0:
-                $("#processResultStatus").hide();
-                break;
             case 1:
                 $("#processResultStatus").hide();
                 break;
             case 2:
-                resultHtml
-                isSolve();
+                $("#processResultStatus").hide();
+                break;
+            case 3:
+                result = isSolve.renewed;
+                $("#processResultStatus").show();
+                break;
+            case 4:
+                result = isSolve.maintain;
+                $("#processResultStatus").show();
+                break;
+            case 5:
+                result = isSolve.reissue;
+                $("#processResultStatus").show();
+                break;
+            case 6:
+                result = isSolve.backGoods;
+                $("#processResultStatus").show();
+                break;
+            case 7:
+                result = isSolve.noReasonBack;
+                $("#processResultStatus").show();
                 break;
             default:
                 break;
         }
+
+        for(var i=0;i< result.length;i++){
+            var html = statusHtml.replace("status_index",i+1);
+            html = html.replace("status_html",result[i]);
+            resultHtml += html;
+        }
+
         $("#processResultStatus").html(resultHtml);
     }
 
@@ -771,7 +814,7 @@
     function setSelectOrder(orderId){
         var html = '';
         var address = ''; //地址
-        var produceList = {};
+        var orderItemList = {};
         $.ajax({
             type: "POST",
             data: {
@@ -786,7 +829,7 @@
 
                         var productsHtml = '';
                         var salesOrderItem = salesOrder.salesOrderItemList;
-                        produceList = salesOrder.salesOrderItemList;
+                        orderItemList = salesOrder.salesOrderItemList;
                         for(var j=0;j<salesOrderItem.length;j++){
                             var item = salesOrderItem[j].itemProductName + "*" + salesOrderItem[j].itemNum;
                             if(j==0){
@@ -822,9 +865,7 @@
         });
         $("#addressInfo").val(address);
         setAdress();  //显示地址
-
-        setProduce(produceList); //显示产品
-
+        setProduce(orderItemList); //显示产品
     }
 
     /**
@@ -966,9 +1007,155 @@
      * 展示产品
      * @param produceList
      */
-    function setProduce(produceList) {
-        
+    function setProduce(orderItemList) {
+        var html = "";
+        $.ajax({
+            type: "POST",
+            data: {
+            },
+            url: "${path}/admin/customer/select_produce",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    for(var i=0;i<data.returnMsg.productList.length;i++){
+                        var product = data.returnMsg.productList[i];    //所有产品
+                        var produceFittings = getProduceFittings(product.productId);  //获取该产品的所有配件
+                        var colorList = product.colorList;  //该产品的所有颜色
+
+                        var isColorSelect = false;
+                        var selectColor = new Array();    //颜色选择html和颜色数量对应 对象
+                        if(colorList != null){
+                            for(var m=0;m<orderItemList.length;m++){
+                                var colorNumber = 1;
+                                var colorHtml = '';
+                                for(var j=0;j<colorList.length;j++){
+                                    var colors = {};
+                                    if(colorList[j].colorId == orderItemList[m].itemColorId){
+                                        colorHtml += '<option value="'+ colorList[j].colorId +'" selected>'+ colorList[j].colorName +'</option>';
+                                        isColorSelect = true;
+                                        colorNumber = orderItemList[m].itemNum;
+                                    }else{
+                                        colorHtml += '<option value="'+ colorList[j].colorId +'">'+ colorList[j].colorName +'</option>';
+                                    }
+                                }
+                                colors.colorNumber = colorNumber;
+                                colors.colorHtml = colorHtml;
+                                selectColor.push(colors);
+                            }
+                        }
+
+                        var fittingsHtml = '';
+                        if(produceFittings != null){
+                            for(var k=0;k<produceFittings.length;k++){
+                                fittingsHtml += '<div class="check-box">' +
+                                        '<input type="checkbox" id="checkbox-2" name="ck-produce-fittings" value="'+ produceFittings[k].fittingsId +'">' +
+                                        '<label for="checkbox-2">'+ produceFittings[k].fittingsName +'</label>' +
+                                        '<input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="produceFittings">' +
+                                        '</div>';
+                            }
+                        }
+
+                        var isChecked = '';
+                        if(isColorSelect){
+                            isChecked = 'checked';
+                        }
+                        for(var f=0;f<selectColor.length;f++){
+                            html += '<div class="skin-minimal">' +
+                                    '        <div class="check-box">' +
+                                    '            <input type="checkbox" name="ck-produce" id="checkbox-'+ i +'" '+ isChecked +'>' +
+                                    '' +
+                                    '           <label for="checkbox-'+ i +'" name="produceName">'+ convertUndefinedToEmpty(product.typeName) +'</label> -' +
+                                    '           <input type="hidden" name="productType" value="">' +
+                                    '' +
+                                    '            <label for="checkbox-'+ i +'">'+ convertUndefinedToEmpty(product.productName) +'</label>' +
+                                    '           <input type="hidden" name="productId" value="">' +
+                                    '' +
+                                    '            <select class="select colorId" name="colorId" style="width: 100px;">' +
+                                    selectColor[f].colorHtml +
+                                    '            </select>' +
+                                    '            <input type="text" class="input-text" style="width: 40px;text-align: center;" value="'+ selectColor[f].colorNumber +'" placeholder="" id="" name="produceNumber">' +
+                                    '        </div>' +
+                                    fittingsHtml +
+                                    '    </div>';
+
+                            if(!isColorSelect){
+                                break;
+                            }
+                        }
+                    }
+                }else{
+                    html = '';
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        $("#produceSelect").html(html);
+
+        initCheck(); //因为需要展示产品,所以再次初始化多选框
+
+        setBackProduct();  //设置寄回产品
+
+        monitorProduct();   //监听产品变化
+    }
+
+    /*获取产品配件*/
+    function getProduceFittings(productId){
+        var produceFittings;
+        $.ajax({
+            type: "get",
+            data: {
+                productId : productId
+            },
+            url: "${path}/admin/customer/select_produce_fittings",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    produceFittings = data.returnMsg.produceFittingsList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return produceFittings;
+    }
+
+    /*监听产品变化*/
+    function monitorProduct(){
+        /*产品的多选框*/
+        $("#produceSelect").find("input[name='ck-produce']").change(function (){
+            setBackProduct();
+        })
+        /*选择产品颜色*/
+        $("#produceSelect").find(".colorId").change(function (){
+            setBackProduct();
+        })
+        /*产品数量*/
+        $("#produceSelect").find("input[name='produceNumber']").blur(function (){
+            setBackProduct();
+        })
+        /*配件数量*/
+        $("#produceSelect").find("input[name='produceFittings']").blur(function (){
+            setBackProduct();
+        })
+        /*配件多选框*/
+        $("#produceSelect").find("input[name='ck-produce-fittings']").click(function (){
+            setBackProduct();
+        })
+    }
+
+    /*设置寄回产品*/
+    function setBackProduct() {
+        $("#produceSelect").find(".skin-minimal").each(function (){
+            var isChecked = $(this).find("input[name='ck-produce']").attr('checked');
+            var produceName =  $(this).find("input[name='produceName']").eq(0).html();
+            alert(isChecked + "--" +produceName);
+//            if(){
+//                html = '<div class="update-parts" style="margin-bottom: 10px;"><span>红色净水机(wx-1)x 1台</span><span>水箱 x 1件</span><span>t1 x 1件</span><span>t2 x 1件</span></div>';
+//            }
+        })
     }
+    
 </script>
 <!--/请在上方写此页面业务相关的脚本-->
 </body>

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

@@ -32,15 +32,19 @@
     <form class="form form-horizontal" id="form-admin-add">
         <div class="input-box"   style="text-align:center;">
             <span class="input-dic spanhidth">备注</span>
-            <textarea rows="5" cols="20" name="detectDesc" id="detectDesc" class="my-textarea" placeholder="请详细备注签收的内容,便于以后复查。如果转入生产,则生产部门同事可查看!">${detectInfo.detectDesc!''}</textarea>
-
+            <#if detectInfo??>
+                <textarea rows="5" cols="20" name="detectDesc" id="detectDesc" class="my-textarea" placeholder="请详细备注签收的内容,便于以后复查。如果转入生产,则生产部门同事可查看!">${detectInfo.detectDesc!''}</textarea>
+            <#else>
+                <textarea rows="5" cols="20" name="detectDesc" id="detectDesc" class="my-textarea" placeholder="请详细备注签收的内容,便于以后复查。如果转入生产,则生产部门同事可查看!"></textarea>
+            </#if>
         </div>
         <div style="text-align:center;">
             <span>如果转入生产,则生产部门同事可查看!</span>
         </div>
         <div style="text-align:center;">
-
+        <#if detectId??>
             <input type="hidden" value="${detectId!''}" id="detectId" name="detectId">
+        </#if>
            <button type="button" class="my-btn-submit" onclick="add();">确认提交</button>
         </div>
     </form>

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

@@ -42,27 +42,27 @@
 
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectPhenomenon" id="detectPhenomenon" ${detectInfo.detectPhenomenon!''} class="my-textarea" placeholder="工厂检测现象"></textarea>
+            <textarea rows="3" cols="20" name="detectPhenomenon" id="detectPhenomenon"  class="my-textarea" placeholder="工厂检测现象">${detectInfo.detectPhenomenon!''}</textarea>
         </div>
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectFailureClassification" id="detectFailureClassification" ${detectInfo.detectFailureClassification!''} class="my-textarea" placeholder="故障分类"></textarea>
+            <textarea rows="3" cols="20" name="detectFailureClassification" id="detectFailureClassification"  class="my-textarea" placeholder="故障分类">${detectInfo.detectFailureClassification!''}</textarea>
         </div>
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectFailureCause" id="detectFailureCause" ${detectInfo.detectFailureCause!''} class="my-textarea" placeholder="故障原因"></textarea>
+            <textarea rows="3" cols="20" name="detectFailureCause" id="detectFailureCause"  class="my-textarea" placeholder="故障原因">${detectInfo.detectFailureCause!''}</textarea>
         </div>
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectResults" id="detectResults" ${detectInfo.detectResults!''} class="my-textarea" placeholder="判定结果"></textarea>
+            <textarea rows="3" cols="20" name="detectResults" id="detectResults"  class="my-textarea" placeholder="判定结果">${detectInfo.detectResults!''}</textarea>
         </div>
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectPoint" id="detectPoint" ${detectInfo.detectPoint!''} class="my-textarea" placeholder="故障指向"></textarea>
+            <textarea rows="3" cols="20" name="detectPoint" id="detectPoint"  class="my-textarea" placeholder="故障指向">${detectInfo.detectPoint!''}</textarea>
         </div>
         <div class="input-box">
             <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-            <textarea rows="3" cols="20" name="detectAnalysis" id="detectAnalysis" ${detectInfo.detectAnalysis!''} class="my-textarea" placeholder="原因分析"></textarea>
+            <textarea rows="3" cols="20" name="detectAnalysis" id="detectAnalysis"  class="my-textarea" placeholder="原因分析">${detectInfo.detectAnalysis!''}</textarea>
         </div>
 
         <div class="input-box">

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

@@ -124,10 +124,26 @@
                             <#if detect.detectRevolutionProduced == 1>
                                 <a style="text-decoration:none" href="javascript:;" title="转入生产"
                                    onclick="update_info('转入生产','${path}/admin/detect/to_detect_complete?detectId=${detect.detectId!''}&state=2','570','450');">
-                                    <i class="Hui-iconfont">&#xe645;</i>
+                                    <i class="Hui-iconfont">&#xe6e1;</i>
                                 </a>
                             </#if>
                         </#if>
+                        <#if detect.detectState == 3>
+                            <a style="text-decoration:none" href="javascript:;" title="修改检测信息"
+                               onclick="update_info('修改检测信息','${path}/admin/detect/to_update_complete?detectId=${detect.detectId!''}','570','450');">
+                                <i class="Hui-iconfont">&#xe60c;</i>
+                            </a>
+                        </#if>
+                        <#if detect.detectState == 4>
+                            <a style="text-decoration:none" href="javascript:;" title="修改检测信息"
+                               onclick="update_info('修改检测信息','${path}/admin/detect/to_update_complete?detectId=${detect.detectId!''}','570','450');">
+                                <i class="Hui-iconfont">&#xe60c;</i>
+                            </a>
+                        </#if>
+                        <a style="text-decoration:none" href="javascript:;" title="查看仓储进度"
+                           onclick="add_remark('查看仓储进度','${path}/admin/detect/to_view_progress?signclosedId=${detect.signclosedId!''}','570','450');">
+                            <i class="Hui-iconfont">&#xe6cd;</i>
+                        </a>
                     </td>
                 </tr>
                 </#list>

+ 201 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/update_complete.ftl

@@ -0,0 +1,201 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+<#include "/base/add_base.ftl">
+    <title>修改检测内容</title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 10px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;width: 60%; height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(http://s.iamberry.com/images/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <meta name="keywords" content="${path}">
+    <meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
+</head>
+<body>
+<article class="page-container">
+    <form class="form form-horizontal" id="form-admin-add">
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">检测结果</span>
+            <label for="radio-3">
+                <input type="radio" id="radio-3" name="detectState" value="3"
+                       <#if detectInfo.detectState == 3>checked</#if>
+                       />检测通过
+            </label>
+            <label for="radio-4" style="margin-left: 50px;">
+                <input type="radio" id="radio-4" name="detectState" value="4"
+                       <#if detectInfo.detectState == 4>checked</#if>
+                />检测未通过
+            </label>
+        </div>
+
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectPhenomenon" id="detectPhenomenon"  class="my-textarea" placeholder="工厂检测现象">${detectInfo.detectPhenomenon!''}</textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectFailureClassification" id="detectFailureClassification"  class="my-textarea" placeholder="故障分类">${detectInfo.detectFailureClassification!''}</textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectFailureCause" id="detectFailureCause"  class="my-textarea" placeholder="故障原因">${detectInfo.detectFailureCause!''}</textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectResults" id="detectResults"  class="my-textarea" placeholder="判定结果">${detectInfo.detectResults!''}</textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectPoint" id="detectPoint"  class="my-textarea" placeholder="故障指向">${detectInfo.detectPoint!''}</textarea>
+        </div>
+        <div class="input-box">
+            <span class="input-dic ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            <textarea rows="3" cols="20" name="detectAnalysis" id="detectAnalysis"  class="my-textarea" placeholder="原因分析">${detectInfo.detectAnalysis!''}</textarea>
+        </div>
+
+        <#--<div class="input-box">
+            <span class="input-dic" style="margin-top: 0">是否需要转入生产部门</span>
+            <label for="radio-5">
+                <input type="radio" id="radio-5" name="detectIsMaintenance" onclick="show()" value="1" checked/>需要转入生产部门
+            </label>
+            <label for="radio-6" style="margin-left: 50px;">
+                <input type="radio" id="radio-6" name="detectIsMaintenance" onclick="hide()" value="2"/>不需要转入生产部门
+            </label>
+        </div>
+        <div class="input-box" id="revolutionProducedId">
+            <span class="input-dic" style="margin-top: 0">立即转入生产部门</span>
+            <label for="radio-7">
+                <input type="radio" id="radio-7" name="detectRevolutionProduced" value="2" checked/>立即转入
+            </label>
+            <label for="radio-8" style="margin-left: 50px;">
+                <input type="radio" id="radio-8" name="detectRevolutionProduced" value="1"/>以后转入
+            </label>
+        </div>-->
+        <div class="input-box">
+            <span class="input-dic" style="margin-top: 0">QC检查状态</span>
+            <label for="radio-7">
+                <input type="radio" id="radio-9" name="maintenanceResults" value="1" checked/>通过
+            </label>
+            <label for="radio-8" style="margin-left: 50px;">
+                <input type="radio" id="radio-10" name="maintenanceResults" value="2"/>不通过
+            </label>
+        </div>
+        <div class="input-box">
+            <span class="input-dic spanhidth">备注</span>
+            <textarea rows="3" cols="20" name="detectDesc" id="detectDesc" class="my-textarea" placeholder="请详细备注内容,便于以后复查。如果转入生产,则生产部门同事可查看!">${detectInfo.detectDesc!''}</textarea>
+        </div>
+        <div>
+            <input type="hidden" value="${detectId!''}" id="detectId" name="detectId">
+           <button type="button" class="my-btn-submit" onclick="add();">确认提交</button>
+        </div>
+    </form>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+    function hide() {
+        $("#revolutionProducedId").hide();
+    }
+    function show() {
+        $("#revolutionProducedId").show();
+    }
+
+    function  add() {
+
+        var detectPhenomenon = $("#detectPhenomenon").val();
+        if( detectPhenomenon == null || detectPhenomenon == "" ){
+            layer.msg('请输入工厂检测现象',{icon: 5,time:1000});
+            return;
+        }
+        if( detectPhenomenon.length > 300 ){
+            layer.msg('工厂检测现象长度不得大于150个字符',{icon: 5,time:1000});
+            return;
+        }
+        var detectFailureClassification = $("#detectFailureClassification").val();
+        if( detectFailureClassification == null || detectFailureClassification == "" ){
+            layer.msg('请输入故障分类',{icon: 5,time:1000});
+            return;
+        }
+        if( detectFailureClassification.length > 50 ){
+            layer.msg('故障分类长度不得大于25个字符',{icon: 5,time:1000});
+            return;
+        }
+        var detectFailureCause = $("#detectFailureCause").val();
+        if( detectFailureCause == null || detectFailureCause == "" ){
+            layer.msg('请输入故障原因',{icon: 5,time:1000});
+            return;
+        }
+        if( detectFailureCause.length > 100 ){
+            layer.msg('故障原因长度不得大于50个字符',{icon: 5,time:1000});
+            return;
+        }
+
+        var detectResults = $("#detectResults").val();
+        if( detectResults == null || detectResults == "" ){
+            layer.msg('请输入判定结果',{icon: 5,time:1000});
+            return;
+        }
+        if( detectResults.length > 100 ){
+            layer.msg('判定结果长度不得大于50个字符',{icon: 5,time:1000});
+            return;
+        }
+
+        var detectPoint = $("#detectPoint").val();
+        if( detectPoint == null || detectPoint == "" ){
+            layer.msg('请输入故障指向',{icon: 5,time:1000});
+            return;
+        }
+        if( detectPoint.length > 100 ){
+            layer.msg('故障指向长度不得大于50个字符',{icon: 5,time:1000});
+            return;
+        }
+
+        var detectAnalysis = $("#detectAnalysis").val();
+        if( detectAnalysis == null || detectAnalysis == "" ){
+            layer.msg('请输入原因分析',{icon: 5,time:1000});
+            return;
+        }
+        if( detectAnalysis.length > 100 ){
+            layer.msg('原因分析长度不得大于50个字符',{icon: 5,time:1000});
+            return;
+        }
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/detect/update_complete",
+            data:$('#form-admin-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg('检测完成',{icon: 1,time:1000},function () {
+                        window.parent.location.reload();
+                        var index = parent.layer.getFrameIndex(window.name);
+                        parent.layer.close(index)
+                    });
+                } else {
+                    layer.msg('检测完成失败',{icon: 5,time:1000});
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('检测错误',{icon: 5,time:1000});
+            }
+        });
+    }
+</script>
+</body>
+</html>

+ 113 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/view_progress.ftl

@@ -0,0 +1,113 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+<#include "/base/add_base.ftl">
+    <title>修改备注 - H-ui.filter v2.4</title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 8px 5px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-input-date{padding: 8px 10px;border:1px solid rgba(0,0,0,.1);width: 80%;background: url(http://s.iamberry.com/images/rili-1.png) 98.5% center no-repeat; background-size:auto 50%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 80%;border:1px solid rgba(0,0,0,.1);}
+        .my-btn-reset{padding: 10px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 10px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;width: 60%; height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(http://s.iamberry.com/images/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+    </style>
+    <meta name="keywords" content="${path}">
+    <meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
+</head>
+<body>
+<article class="page-container">
+    <form class="form form-horizontal" id="form-admin-add">
+        <div class="input-box">
+            <span>签收日期:</span>
+            <#if signclosedInfo??>
+                ${signclosedInfo.signclosedDate?string("yyyy-MM-dd")!'暂无签收日期'}日
+            <#else >
+                暂无签收日期
+            </#if>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1"></label>
+            <div class="formControls col-7 col-sm-7">
+                签收产品:
+                <div class="update-parts">
+            <#if signclosedProductInfo??>
+                <#if (signclosedProductInfo?size > 0)>
+                    <#list signclosedProductInfo as info>
+                        <#if info.signclosedProductType == 1 >
+                            <span>${info.productName!''}-${info.productNumber!''}(${info.colorName!''})x ${info.productNum!''}台</span><br>
+                        <#else >
+                            <span>${info.productName!''} x ${info.productNum!''}件</span><br>
+                        </#if>
+                    </#list>
+                <#else >
+                    暂无数据!
+                </#if>
+            <#else >
+                暂无数据!
+            </#if>
+                </div>
+            </div>
+        </div>
+        <div style="text-align:center;">
+        <#if signclosedId??>
+           <input type="hidden" value="${signclosedId!''}" id="signclosedId" name="signclosedId">
+            <#if signclosedInfo.signclosedState == 1>
+                <button type="button" class="my-btn-submit" onclick="add();">催促仓库转入QC</button>
+            </#if>
+            <#if signclosedInfo.signclosedState == 2>
+                <button type="button" class="my-btn-submit" onclick="openLogistics('物流信息','${path}/admin/detect/to_view_logistics?billCode=${signclosedInfo.signclosedLogisticsNumber}&billName=${signclosedInfo.signclosedLogistics  }',375,400);">查看物流</button>
+            </#if>
+        <#else >
+            <button type="button" class="my-btn-submit" onclick="add();">催促仓库转入QC</button>
+        </#if>
+        </div>
+    </form>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+
+    function  add() {
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/detect/add_reminding",
+            data:$('#form-admin-add').serialize(),// 你的formid
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    layer.msg('催促成功',{icon: 1,time:1000},function () {
+                        window.parent.location.reload();
+                        var index = parent.layer.getFrameIndex(window.name);
+                        parent.layer.close(index)
+                    });
+                } else {
+                    layer.msg('催促失败',{icon: 5,time:1000});
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('催促失败',{icon: 5,time:1000});
+            }
+        });
+    }
+
+    function openLogistics(title, url, w, h) {
+        layer_show(title,url,w,h);
+    }
+</script>
+</body>
+</html>

+ 288 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/logistics/view_logistics.ftl

@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>查看物流</title>
+<#include "/base/add_base.ftl">
+    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <link rel="stylesheet" type="text/css" href="//css.iamberry.com/wateroPF/css/mui.min.css">
+    <style>
+        body{ text-align:center}
+        article, section, time, aside {
+            display: block;
+        }
+        .point-time {
+            content: "";
+            position: absolute;
+            width: 13px;
+            height: 13px;
+            top: 12px;
+            left: 30%;
+            background: #1c87bf;
+            margin-left: -4px;
+            border-radius: 50%;
+            box-shadow: 0 0 0 2px #fff;
+        }
+
+        .text-red {
+            color: #ff5b5b;
+        }
+
+        .text-blue {
+            color: #1c87bf;
+        }
+
+        .text-green {
+            color: #95c91e;
+        }
+
+        .text-yellow {
+            color: #ffb902;
+        }
+
+        .text-purple {
+            color: #d32d93;
+        }
+
+        .point-red {
+            background-color: #ff5b5b;
+        }
+
+        .point-blue {
+            background-color: #38d1f7;
+        }
+
+        .point-green {
+            background-color: #95c91e;
+        }
+
+        .point-yellow {
+            background-color: #ffb902;
+        }
+
+        .point-purple {
+            background-color: #d32d93;
+        }
+
+        .content {
+            width: 100%;
+            margin: 0 auto;
+        }
+        .content article {
+            position: relative;
+        }
+        .content article > h3 {
+            width: 100%;
+            height: 20px;
+            line-height: 20px;
+            text-align: left;
+            text-indent: 3%;
+            font-size: 1.4em;
+            color: #fff;
+            padding: 10px 0 20px;
+            background-color: #dd6d01;
+        }
+        .content article section {
+            padding: 0 10px 10px;
+            position: relative;
+        }
+        .content article section:before {
+            content: "";
+            width: 2px;
+            top: 17px;
+            bottom: -17px;
+            left: 30.54%;
+            background: #73dff9;
+            position: absolute;
+            -webkit-transform: scaleX(.5);
+        }
+        .content article section:last-child:before {
+            display: none;
+        }
+        .content article section time {
+            width: 25%;
+            display: block;
+            position: absolute;
+            padding: 8px 0;
+        }
+        .content article section time > span {
+            display: block;
+            text-align: center;
+        }
+        .content article section aside {
+            color: #3a3a38;
+            margin-left: 42%;
+            padding-bottom: 15px;
+            text-align: left;
+        }
+        .content article section .brief {
+            color: #9f9f9f;
+        }
+
+        .my-box-w{position: absolute;left: 50%;top: 50%;background: rgba(255,255,255,.1);width: 100px;height: 100px;border-radius: 50%;margin-left: -50px;margin-top: -60px;padding: 8px;}
+        .my-box-n{background: rgba(255,255,255,.2);position: relative;height: 100%;width: 100%;border-radius: 50%;}
+        .my-box-machine{position: absolute;left: 50%;top: 50%;width: auto;color: #fff;-webkit-transform:translateX(-50%) translateY(-20%);}
+        .machine-num{position: absolute;left: 50%;top: 50%;margin-top:40px;-webkit-transform: translateX(-50%);color: #fff;}
+    </style>
+    <script>
+        // 屏蔽分享
+        window.hiddenAllWechatMenu = true;
+    </script>
+</head>
+<body style="background: #fff;">
+<!-- <div class="loading-bg">
+        <div class="mui-loading">
+            <div class="mui-spinner">
+            </div>
+            &nbsp;&nbsp;加载中...
+        </div>
+</div> -->
+<div class="mui-content" style="background: #fff;">
+    <div style="position: relative;height: 100px;padding:20px 15px;background: #6bc5e3;">
+        <img style="float: left;" width="60px" src="//s.iamberry.com/wateroPF/new/images/logistics.png">
+        <ul style="display: inline-block;float: left;text-align: left;color: #fff;line-height: 30px;padding: 0 0 0 10px;">
+            <li id="billName"></li>
+            <li>单号:<span id="billCode"></span></li>
+        </ul>
+    </div>
+
+    <div id="pullrefresh" class="content">
+        <article class="my-tab-view-pull">
+        </article>
+    </div>
+    <div id="orderlist" class="content" style="display:none;padding: 10px 0;">
+        暂无物流信息
+    </div>
+</div>
+<script src="/common/lib/mui/js/mui.min.js"></script>
+<#--<script src="//s.iamberry.com/wateroPF/js/jquery-2.1.1.min.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/shop/main.js"></script>-->
+<!-- <script src="//s.iamberry.com/wateroPF/js/shop/wechat-utils-1.0.js"></script> -->
+<script type="text/javascript">
+    function pullupRefresh() {
+        var billCode = ${billCode!''};
+        var billName = "${billName!''}";
+        mui.ajax('${path}/logistics/getExpressInfo?dates=' + new Date().getTime(), {
+            data: {
+                "com": billName,
+                "nu": billCode
+            },
+            dataType: 'json',
+            type: 'post',
+            timeout: 15000,
+            success: function(dt) {
+                console.log(dt);
+                if(dt.status) {
+                    var name='';
+                    switch (billName){
+                        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;
+                    }
+                    $("#billName").text(name);
+                    $("#billCode").text(billCode);
+                    if(dt.data.status=="1"){
+
+
+                    var renewal_data = [];
+                    renewal_data = dt.data.data;
+                    var table = document.body.querySelector('.my-tab-view-pull');
+                    mui(renewal_data).each(function(index) {
+                        var li = document.createElement('section');
+                        var color='point-blue',text='';
+                        if(index==0){
+                            color='point-red';
+                            //text="text-red";
+                        }
+                        li.innerHTML = ' <span class="point-time '+color+'"></span><time class="'+text+'">'+this.time+'</time><aside><p class="things">'+this.location+'</p><p class="brief" style="padding-top: 4%;">'+this.context+'</p></aside>';
+                        table.appendChild(li);
+
+                    })
+                    }else{
+                        $("#orderlist").show();
+					}
+                }else{
+                    $("#pullrefresh").hide();
+                    $("#orderlist").show();
+                }
+            },
+            error: function(xhr, type, errorThrown) {
+                console.log(xhr)
+            }
+        });
+    }
+    mui.ready(function(){
+        //页面首次加载时拉取一次数据
+        pullupRefresh();
+    });
+    function   format(now)   {
+        now = new Date(now);
+        var   year=now.getFullYear();
+        var   month=now.getMonth()+1;
+        var   date=now.getDate();
+        var   hour=now.getHours();
+        var   minute=now.getMinutes();
+        var   second=now.getSeconds();
+        if(month <10 && month > 0){
+            month = "0"+month;
+        }
+        if(date <10 && date > 0){
+            date = "0"+date;
+        }
+        return   year+"-"+month+"-"+date;
+    }
+</script>
+</body>
+</html>

+ 228 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/signclosed/signclosed_list.ftl

@@ -0,0 +1,228 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title></title>
+<#include "/base/list_base.ftl">
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 25px;margin-right: 5px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> RST管理
+    <span class="c-gray en">&gt;</span> 仓储列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form name="form1" action="${path}/admin/signclosed/select_signclosed_list" method="post">
+            <button type="button" style="cursor:pointer;float: left;" class="my-btn-search" onclick="add_detect('添加品质检测','${path}/admin/detect/to_add_detect','570','450');">新建签收</button>
+            <input class="my-input" style="width: 70px;" type="text" name="signclosedSendName" value="${signclosedSendName!}" placeholder="寄件人姓名"/>
+            <input class="my-input" style="width: 70px;" type="text" name="signclosedSendTel" value="${signclosedSendTel!}" placeholder="寄件人电话号码"/>
+            <input class="my-input" style="width: 70px;" type="text" name="signclosedLogisticsNumber" value="${signclosedLogisticsNumber!}" placeholder="快递单号"/>
+            <select class="my-select" name="signclosedType" style="height: 30px;width: 150px">
+                <option value ="">签收类型</option>
+                <option value ="1" <#if signclosedType??><#if signclosedType == 1>selected="selected"</#if></#if>>客诉寄回</option>
+                <option value ="2" <#if signclosedType??><#if signclosedType == 2>selected="selected"</#if></#if>>代理商退货</option>
+                <option value ="3" <#if signclosedType??><#if signclosedType == 3>selected="selected"</#if></#if>>其它</option>
+            </select>
+            <select class="my-select" name="signclosedObjectsState" style="height: 30px;width: 150px">
+                <option value ="">物件状态</option>
+                <option value ="1" <#if signclosedObjectsState??><#if signclosedObjectsState == 1>selected="selected"</#if></#if>>正常签收</option>
+                <option value ="2" <#if signclosedObjectsState??><#if signclosedObjectsState == 2>selected="selected"</#if></#if>>物件不对</option>
+            </select>
+            <button style="cursor:pointer;" type="submit" class="my-btn-search">搜索</button>
+        </form>
+    </div>
+    <div class="mt-20">
+        <table class="table table-border table-bordered table-bg table-hover table-sort">
+            <thead>
+            <tr class="text-c">
+                <th width="100">签收类型</th>
+                <th width="160">物流</th>
+                <th width="90">寄件人姓名</th>
+                <th width="100">寄件人电话</th>
+                <th width="400">退换产品</th>
+                <th width="400">签收产品</th>
+                <th width="130">退货地区</th>
+                <th width="100">是否少配件</th>
+                <th width="150">售后原因</th>
+                <th width="150">客服备注</th>
+                <th width="150">返厂日期</th>
+                <th width="100">处理状态</th>
+                <th width="120">是否转入QC</th>
+                <th width="130">物件状态</th>
+                <th width="100">备注</th>
+                <th width="50">操作</th>
+            </tr>
+            </thead>
+            <tbody id="listid">
+            <#if (page.dataList?size > 0)>
+                <#list page.dataList as signclosed>
+                <tr>
+                    <td class="text-c" width="100">
+                        <#if signclosed.signclosedType == 1>
+                            客诉寄回
+                        </#if>
+                        <#if signclosed.signclosedType == 2>
+                            代理商退货
+                        </#if>
+                        <#if signclosed.signclosedType == 3>
+                            其它
+                        </#if>
+                    </td>
+                    <td class="text-c" width="160">
+                        <#if signclosed.signclosedLogistics??>
+                            <#if signclosed.signclosedLogistics == "sto">
+                                申通快递
+                            <#elseif signclosed.signclosedLogistics == "yto">
+                                圆通快递
+                            <#elseif signclosed.signclosedLogistics == "zto">
+                                中通速递
+                            <#elseif signclosed.signclosedLogistics == "sf">
+                                顺丰快递
+                            <#elseif signclosed.signclosedLogistics == "ems">
+                                邮政EMS
+                            <#elseif signclosed.signclosedLogistics == "eyb">
+                                E邮宝
+                            <#elseif signclosed.signclosedLogistics == "zjs">
+                                宅急送
+                            <#elseif signclosed.signclosedLogistics == "yunda">
+                                韵达快递
+                            <#elseif signclosed.signclosedLogistics == "cces">
+                                cces快递
+                            <#elseif signclosed.signclosedLogistics == "pick">
+                                上门提货
+                            <#elseif signclosed.signclosedLogistics == "htky">
+                                汇通快递
+                            <#elseif signclosed.signclosedLogistics == "ttkdex">
+                                天天快递
+                            <#elseif signclosed.signclosedLogistics == "stars">
+                                星晨急便
+                            <#elseif signclosed.signclosedLogistics == "jd">
+                                京东快递
+                            <#elseif signclosed.signclosedLogistics == "01">
+                                其他
+                            <#elseif signclosed.signclosedLogistics == "02">
+                                上门送货
+                            <#elseif signclosed.signclosedLogistics == "longbanwuliu">
+                                龙邦快递
+                            </#if>
+                            -
+                        </#if>
+                    ${signclosed.signclosedLogisticsNumber!}</td>
+                    <td class="text-c" width="100">${signclosed.signclosedSendName!}</td>
+                    <td class="text-c" width="100">${signclosed.signclosedSendTel!}</td>
+                    <td class="text-c" width="100">
+                        <div class="update-parts">
+                        <#if signclosed.awaitingSignclosedProductInfoList??>
+                            <#if (signclosed.awaitingSignclosedProductInfoList?size > 0)>
+                                <#list signclosed.awaitingSignclosedProductInfoList as info>
+                                    <#if info.signclosedProductType == 1 >
+                                        <span>${info.productName!''}-${info.productNumber!''}(${info.colorName!''})x ${info.productNum!''}台</span><br>
+                                    <#else >
+                                        <span>${info.productName!''} x ${info.productNum!''}件</span><br>
+                                    </#if>
+                                </#list>
+                            <#else >
+                                暂无数据!
+                            </#if>
+                        <#else >
+                            暂无数据!
+                        </#if>
+                        </div>
+                    </td>
+                    <td class="text-c" width="100">
+                        <div class="update-parts">
+                        <#if signclosed.signclosedProductInfoList??>
+                            <#if (signclosed.signclosedProductInfoList?size > 0)>
+                                <#list signclosed.signclosedProductInfoList as info>
+                                    <#if info.signclosedProductType == 1 >
+                                        <span>${info.productName!''}-${info.productNumber!''}(${info.colorName!''})x ${info.productNum!''}台</span><br>
+                                    <#else >
+                                        <span>${info.productName!''} x ${info.productNum!''}件</span><br>
+                                    </#if>
+                                </#list>
+                            <#else >
+                                暂无数据!
+                            </#if>
+                        <#else >
+                            暂无数据!
+                        </#if>
+                        </div>
+                    </td>
+                    <td class="text-c" width="100">${signclosed.provincesName!}-${signclosed.cityName!}</td>
+                    <td class="text-c" width="100">
+                        <#if signclosed.signclosedIsFittings == 1>
+                            缺少
+                        <#else>
+                            不缺少
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">售后原因暂无</td>
+                    <td class="text-c" width="100">${signclosed.signclosedCustomerDesc!}</td>
+                    <td class="text-c" width="100">${(signclosed.signclosedDate?string("yyyy-MM-dd"))!''}</td>
+                    <td class="text-c" width="100">
+                        <#if signclosed.signclosedState == 1>
+                            已签收
+                        <#else>
+                            未签收
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">
+                        <#if signclosed.signclosedIsInto == 1>
+                            已转入品检
+                        <#else>
+                            未转入品检
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">
+                        <#if signclosed.signclosedObjectsState == 1>
+                            正常签收
+                        <#else>
+                            物件不对
+                        </#if>
+                    </td>
+                    <td class="text-c" width="100">${signclosed.signclosedDesc!}</td>
+                    <!-- 遍历操作 -->
+                    <td class="td-manage text-c">
+
+                    </td>
+                </tr>
+                </#list>
+            <#else >
+            <tr><td class="td-manage text-c" colspan = "16">暂时没有仓储信息</td></tr>
+            </#if>
+            </tbody>
+        </table>
+    </div>
+</div>
+<div style="padding-top: 10px;"></div>
+<#include "/base/page_util.ftl">
+
+<script type="text/javascript">
+    /*添加*/
+    function add_detect(title,url,w,h){
+        layer_show(title,url,w,h);
+    }
+    /*修改备注*/
+    function add_remark(title,url,w,h){
+        layer_show(title,url,w,h);
+    }
+    /*转入生产*/
+    function update_info(title,url,w,h){
+        layer_show(title,url,w,h);
+    }
+</script>
+</body>
+</html>

+ 1 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order.ftl

@@ -84,6 +84,7 @@
                             <option value="19">快抱团</option>
                             <option value="20">北京北斗</option>
                             <option value="22">上海-崔玉涛育学园</option>
+                            <option value="23">简二家</option>
                         </select>
                     </label>
                 </td>

+ 3 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl

@@ -244,6 +244,9 @@
 
     /*获取所有的零件*/
     function  listComponent(produceId) {
+
+        produceId = null; //查询出所有的零件;
+
         var list = new Array();
         $.ajax({
             type: "POST",

+ 2 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl

@@ -253,6 +253,8 @@
 
     /*获取所有的零件*/
     function  listComponent(produceId) {
+        produceId = null; //查询出所有的零件;
+
         var list = new Array();
         $.ajax({
             type: "POST",

+ 5 - 5
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/parts_list.ftl

@@ -44,14 +44,14 @@
             </#if>
             </select>
 
-            <select class="my-select" name="produceId" style="height: 36px;width: 150px">
+           <#-- <select class="my-select" name="produceId" style="height: 36px;width: 150px">
                 <option value ="">所有产品</option>
                 <#if produceList?? &&  (produceList?size > 0) >
                     <#list produceList as produce>
                         <option value ="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
                     </#list>
                 </#if>
-            </select>
+            </select>-->
             <input type="text" class="my-input"  style="width:150px" value="${componentsNo!}" placeholder="零件编号" id="componentsNo" name="componentsNo">
             <input type="text" class="my-input"  style="width:150px" value="${componentsName!}" placeholder="零件名称" id="componentsName" name="componentsName">
             <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
@@ -62,7 +62,7 @@
         <table class="table table-border table-bordered table-bg table-hover table-sort">
         <thead>
         <tr class="text-c">
-            <th width="70">所属产品</th>
+            <#--<th width="70">所属产品</th>-->
             <th width="70">零件编号</th>
             <th width="70">供应商</th>
             <th width="100">零件名称</th>
@@ -82,7 +82,7 @@
             <#if page.dataList?? &&  (page.dataList?size > 0) >
                     <#list page.dataList as parts>
                         <tr class="text-c">
-                            <td>${parts.produceName!''}</td>
+                           <#-- <td>${parts.produceName!''}</td>-->
                             <td>${parts.componentsNo!''}</td>
                             <td>${parts.supplierName!''}</td>
                             <td>${parts.componentsName!''}</td>
@@ -110,7 +110,7 @@
                         </tr>
                     </#list>
             <#else>
-                <tr><td colspan="13" class="td-manage text-c" >暂时没有零件,请添加!</td></tr>
+                <tr><td colspan="12" class="td-manage text-c" >暂时没有零件,请添加!</td></tr>
             </#if>
         </tbody>
     </table>

+ 5 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_add.ftl

@@ -35,9 +35,10 @@
 <article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
 	<form action="" method="post" class="form form-horizontal" id="form-parts-add">
 
-        <div class="row cl">
+      <#--  <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>所属机器:</label>
             <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
+
 				<select class="select" size="1" name="produceId" id="produceId">
                 <#if (produceList ?size > 0)>
                     <#list produceList as list>
@@ -48,7 +49,9 @@
                 </#if>
 				</select>
 				</span> </div>
-        </div>
+        </div>-->
+
+        <input type="hidden" value="0" name="produceId" id="produceId">
 
 		<div class="row cl">
 			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件编号:</label>

+ 5 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_update.ftl

@@ -24,7 +24,7 @@
 <article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
 	<form action="" method="post" class="form form-horizontal" id="form-parts-update">
 
-        <div class="row cl">
+        <#--<div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>所属机器:</label>
             <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
 				<select class="select" size="1" name="produceId" id="produceId">
@@ -36,9 +36,11 @@
                     <option value ="">暂无产品,请到生产产品列表添加产品</option>
                 </#if>
 				</select>
-                <input type="hidden" value="${ptsComponents.produceId!''}" name="oldProduceId" id="oldProduceId">
+
 				</span> </div>
-        </div>
+        </div>-->
+        <input type="hidden" value="${ptsComponents.produceId!''}" name="produceId" id="produceId">
+        <input type="hidden" value="${ptsComponents.produceId!''}" name="oldProduceId" id="oldProduceId">
 
 		<div class="row cl">
 			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件编号:</label>

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

@@ -140,3 +140,63 @@ function listDistrict(cityId,districtName){
     });
     return district;
 }
+/**物流名称替换**/
+function replace(code) {
+    var name = null;
+    switch (billName){
+        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;
+}