瀏覽代碼

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

liuzhiwei 7 年之前
父節點
當前提交
dd31fb2f5d
共有 70 個文件被更改,包括 1764 次插入421 次删除
  1. 6 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/City.java
  2. 6 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/District.java
  3. 6 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/address/Province.java
  4. 1 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/ComplaintSignclosedInfo.java
  5. 30 7
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerCommon.java
  6. 46 12
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java
  7. 23 3
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBom.java
  8. 19 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBomComponents.java
  9. 11 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsComponents.java
  10. 11 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsSupplier.java
  11. 1 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  12. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachinePartsService.java
  13. 3 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineSupplierService.java
  14. 2 2
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/ProduceService.java
  15. 2 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBatchService.java
  16. 3 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBomService.java
  17. 67 26
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  18. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ComplaintDetectInfoMapper.java
  19. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml
  20. 26 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintDetectInfoMapper.xml
  21. 11 3
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintQuestionInfoMapper.xml
  22. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/complaintSignclosedInfoMapper.xml
  23. 3 5
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  24. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/noreasonBackMapper.xml
  25. 4 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/questionDescribeMapper.xml
  26. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml
  27. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml
  28. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml
  29. 1 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/visitMapper.xml
  30. 55 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachinePartsServiceImpl.java
  31. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineSupplierServiceImpl.java
  32. 4 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/ProduceServiceImpl.java
  33. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBatchServiceImpl.java
  34. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java
  35. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachinePartsMapper.java
  36. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineSupplierMapper.java
  37. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ProduceMapper.java
  38. 16 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machinePartsMapper.xml
  39. 18 4
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineSupplierMapper.xml
  40. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineVersionMapper.xml
  41. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml
  42. 7 6
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBatchMapper.xml
  43. 17 6
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml
  44. 3 3
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java
  45. 40 17
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  46. 28 4
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachinePartsController.java
  47. 56 4
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBatchController.java
  48. 315 7
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java
  49. 26 4
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsSupplierController.java
  50. 135 13
      watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java
  51. 2 1
      watero-rst-web/src/main/resources/platform.properties
  52. 203 130
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/add_customer.ftl
  53. 1 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/excel_to_order.ftl
  54. 6 6
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/add_batch.ftl
  55. 10 1
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/batch_list.ftl
  56. 4 4
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/update_batch.ftl
  57. 71 19
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl
  58. 9 4
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_details.ftl
  59. 107 6
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl
  60. 64 15
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl
  61. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/device_list.ftl
  62. 4 3
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/employee/employee_list.ftl
  63. 9 18
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/parts_list.ftl
  64. 62 14
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_add.ftl
  65. 69 17
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_update.ftl
  66. 33 10
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/add_supplier.ftl
  67. 5 4
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/supplier_list.ftl
  68. 36 11
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/update_supplier.ftl
  69. 二進制
      watero-rst-web/src/main/webapp/common/images/uploadExcel/Bom单上传模板.xls
  70. 二進制
      watero-rst-web/src/main/webapp/common/images/uploadExcel/零件上传模板.xls

+ 6 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/address/City.java

@@ -12,6 +12,12 @@ public class City implements Serializable {
 
     private Integer divisionCode;
 
+    public City(){}
+
+    public City(Integer cityId){
+        this.cityId = cityId;
+    }
+
     public Integer getCityId() {
         return cityId;
     }

+ 6 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/address/District.java

@@ -12,6 +12,12 @@ public class District implements Serializable {
 
     private Integer divisionCode;
 
+    public District(){}
+
+    public District(Integer districtId){
+        this.districtId = districtId;
+    }
+
     public Integer getDistrictId() {
         return districtId;
     }

+ 6 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/address/Province.java

@@ -12,6 +12,12 @@ public class Province implements Serializable {
 
     private Integer divisionCode;
 
+    public Province (){}
+
+    public Province(Integer provinceId){
+        this.provinceId = provinceId;
+    }
+
     public Integer getProvinceId() {
         return provinceId;
     }

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

@@ -28,7 +28,7 @@ public class ComplaintSignclosedInfo implements Serializable {
     private Integer signclosedIsQuality;//是否品检   1 需要品检 2不需要品检
     private Integer signclosedIsInto;//是否已转入品检    1 已转入品检2未转入品检
     private Integer signclosedState;//处理状态      1已签收2未签收
-    private Integer signclosedObjectsState;//物件状态 1正常签收2物件不对
+    private Integer signclosedObjectsState;//物件状态 1正常签收2物件不对  3:暂未签收
     private Integer signclosedCustomerId;//客诉id
     private Integer signclosedUrgedNum;//qc催促次数
     private String oldEfastId;//原有Efast订单id

+ 30 - 7
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerCommon.java

@@ -37,19 +37,19 @@ public class CustomerCommon implements Serializable {
     private String relationBackMachineNo;
     //寄送状态  1:未寄送  2:已寄送  3:已收货 
     private Integer relationSendStatus;
-    //寄送人姓名 
+    //寄送人(收件人)姓名
     private String relationSendName;
-    //寄送人电话 
+    //寄送人(收件人)电话
     private String relationSendTel;
-    //寄送地址-省 
+    //寄送(收件人)地址-省
     private Integer provinceNumber;
-    //寄送地址-市 
+    //寄送(收件人)地址-市
     private Integer cityNumber;
-    //寄送地址-区 
+    //寄送(收件人)地址-区
     private Integer areaNumber;
-    //寄送地址-省市区 
+    //寄送(收件人)地址-省市区
     private String relationSendMergeAddress;
-    //寄送地址-详细地址 
+    //寄送(收件人)地址-详细地址
     private String relationSendAddress;
     //寄送物流公司 
     private String relationSendLogisticsCompany;
@@ -361,6 +361,9 @@ public class CustomerCommon implements Serializable {
             case 3: //换新
                 Renewed renewed = new Renewed();
                 renewed.setRenewedId(c.getRelationId());
+                renewed.setCustomerId(c.getCustomerId());
+                renewed.setOrderId(c.orderId);
+                renewed.setSignclosedId(c.signclosedId);
                 renewed.setRenewedBackEfastOrderId(c.getRelationBackEfastOrderId());
                 renewed.setRenewedBackStatus(c.getRelationBackStatus());
                 renewed.setRenewedBackName(c.getRelationBackName());
@@ -372,6 +375,9 @@ public class CustomerCommon implements Serializable {
                 renewed.setRenewedSendStatus(c.getRelationSendStatus());
                 renewed.setRenewedSendName(c.getRelationSendName());
                 renewed.setRenewedSendTel(c.getRelationSendTel());
+                renewed.setProvinceNumber(c.getProvinceNumber());
+                renewed.setCityNumber(c.getCityNumber());
+                renewed.setAreaNumber(c.getAreaNumber());
                 renewed.setRenewedSendMergeAddress(c.getRelationSendMergeAddress());
                 renewed.setRenewedSendAddress(c.getRelationSendAddress());
                 renewed.setRenewedSendLogisticsCompany(c.getRelationSendLogisticsCompany());
@@ -386,6 +392,9 @@ public class CustomerCommon implements Serializable {
             case 4: //维修
                 Repair repair = new Repair();
                 repair.setRepairId(c.getRelationId());
+                repair.setCustomerId(c.getCustomerId());
+                repair.setOrderId(c.orderId);
+                repair.setSignclosedId(c.signclosedId);
                 repair.setRepairBackEfastOrderId( c.getRelationBackEfastOrderId());
                 repair.setRepairBackStatus(c.getRelationBackStatus());
                 repair.setRepairBackName(c.getRelationBackName());
@@ -397,6 +406,9 @@ public class CustomerCommon implements Serializable {
                 repair.setRepairSendStatus(c.getRelationSendStatus());
                 repair.setRepairSendName(c.getRelationSendName());
                 repair.setRepairSendTel(c.getRelationSendTel());
+                repair.setProvinceNumber(c.getProvinceNumber());
+                repair.setCityNumber(c.getCityNumber());
+                repair.setAreaNumber(c.getAreaNumber());
                 repair.setRepairSendMergeAddress(c.getRelationSendMergeAddress());
                 repair.setRepairSendAddress(c.getRelationSendAddress());
                 repair.setRepairSendLogisticsCompany(c.getRelationSendLogisticsCompany());
@@ -411,10 +423,15 @@ public class CustomerCommon implements Serializable {
             case 5://补发
                 Reissue reissue = new Reissue();
                 reissue.setReissueId(c.getRelationId());
+                reissue.setCustomerId(c.getCustomerId());
+                reissue.setOrderId(c.orderId);
                 reissue.setReissueBackEfastOrderId(c.getRelationBackEfastOrderId());
                 reissue.setReissueSendStatus(c.getRelationSendStatus());
                 reissue.setReissueSendName(c.getRelationSendName());
                 reissue.setReissueSendTel(c.getRelationSendTel());
+                reissue.setProvinceNumber(c.getProvinceNumber());
+                reissue.setCityNumber(c.getCityNumber());
+                reissue.setAreaNumber(c.getAreaNumber());
                 reissue.setReissueSendMergeAddress(c.getRelationSendMergeAddress());
                 reissue.setReissueSendAddress(c.getRelationSendAddress());
                 reissue.setReissueSendLogisticsCompany(c.getRelationSendLogisticsCompany());
@@ -427,6 +444,9 @@ public class CustomerCommon implements Serializable {
             case 6://退货
                 BackGoods backGoods = new BackGoods();
                 backGoods.setBackGoodsId(c.getRelationId());
+                backGoods.setCustomerId(c.getCustomerId());
+                backGoods.setOrderId(c.orderId);
+                backGoods.setSignclosedId(c.signclosedId);
                 backGoods.setBackGoodsBackStatus(c.getRelationBackStatus());
                 backGoods.setBackGoodsBackName(c.getRelationBackName());
                 backGoods.setBackGoodsBackTel(c.getRelationBackTel());
@@ -444,6 +464,9 @@ public class CustomerCommon implements Serializable {
             case 7://无理由退货
                 NoreasonBack noreasonBack = new NoreasonBack();
                 noreasonBack.setNoreasonBackId( c.getRelationId());
+                noreasonBack.setCustomerId(c.getCustomerId());
+                noreasonBack.setOrderId(c.orderId);
+                noreasonBack.setSignclosedId(c.signclosedId);
                 noreasonBack.setNoreasonBackBackStatus(c.getRelationBackStatus());
                 noreasonBack.setNoreasonBackBackName(c.getRelationBackName());
                 noreasonBack.setNoreasonBackBackTel(c.getRelationBackTel());

+ 46 - 12
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java

@@ -52,9 +52,6 @@ public class CustomerInfo  implements Serializable {
     private String productName;         //客诉产品
     private String complaintClassName;  //客诉类型名称
     private String questionProfile;     //问题回复
-    private Integer complaintId;        //客诉类型id
-    private String smallClassName;      //客诉小类名称
-    private String describeTitle;       //客诉问题标题
     private String companyName;         //销售公司名称
     private String storeName;           //店铺名称
     private Integer detectState;        //检测状态
@@ -66,19 +63,36 @@ public class CustomerInfo  implements Serializable {
     private Date salesTime;             //购买日期
     private Integer backStatus;         //寄回状态
     private Integer sendStatus;         //寄送状态
+
+    /*  客诉问题关联qa查询表  */
+    private Integer complaintId;        //客诉类型id
+    private String smallClassName;      //客诉小类名称
+    private String describeTitle;       //客诉问题标题
+
+    /* 回访表 */
     private Integer visitStatus;        //回访状态
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date visitCompleteDate;     //回访完成时间
     private String visitName;           //回访人姓名
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private String visitTel;            //回访联系电话
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
-    private Date visitDate;             //回访时间
-    private Integer visitTimeSelect;    //回访时间选择
+    private Date visitDate;              //回访时间
+    private Integer visitTimeSelect;    //回访时间选择  1: 9:00-12:00  2: 12:00-14:00   3: 14:00-18:00
     private String visitCompleteName;   //回访联系人
-    private String visitCompleteTel;    //回访联系电话
+    private String visitCompleteTel;    //回访完成时的电话
+    private Integer visitAdminId; //回访提醒人
+
+    /*  问题表 */
+    private String describeContent;     //客诉问题描述
     private String describeHandleDesc;  //处理描述
 
+    private Visit visit = new Visit();  //回访类
+
+    private CustomerCommon customerCommon = new CustomerCommon(); //处理结果综合  公共类
+
+
     public Date getVisitDate() {
         return visitDate;
     }
@@ -135,10 +149,6 @@ public class CustomerInfo  implements Serializable {
         this.questionProfile = questionProfile;
     }
 
-    private Visit visit = new Visit();  //回访
-
-    private CustomerCommon customerCommon = new CustomerCommon();
-
     public Integer getVisitStatus() {
         return visitStatus;
     }
@@ -426,4 +436,28 @@ public class CustomerInfo  implements Serializable {
     public void setCustomerCommon(CustomerCommon customerCommon) {
         this.customerCommon = customerCommon;
     }
+
+    public Integer getVisitAdminId() {
+        return visitAdminId;
+    }
+
+    public void setVisitAdminId(Integer visitAdminId) {
+        this.visitAdminId = visitAdminId;
+    }
+
+    public String getVisitTel() {
+        return visitTel;
+    }
+
+    public void setVisitTel(String visitTel) {
+        this.visitTel = visitTel;
+    }
+
+    public String getDescribeContent() {
+        return describeContent;
+    }
+
+    public void setDescribeContent(String describeContent) {
+        this.describeContent = describeContent;
+    }
 }

+ 23 - 3
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBom.java

@@ -19,6 +19,8 @@ public class PtsBom implements Serializable{
 
     private String bomVersion; //版本
 
+    private Integer machineVersionId; //软件id
+
     private String bomRemarks;//备注
 
     private Date bomCreateTime;//创建时间
@@ -31,7 +33,9 @@ public class PtsBom implements Serializable{
 
     private String produceName; //产品名称
 
-    private String componentsQuantity; //零件数量
+    private Integer componentsQuantity; //零件数量
+
+    private String machineVersionNo;  //软件版本号
 
     private List<PtsBomComponents> ptsBomComponentsList;//bom单的关联表
 
@@ -122,11 +126,27 @@ public class PtsBom implements Serializable{
         this.bomVersion = bomVersion;
     }
 
-    public String getComponentsQuantity() {
+    public Integer getComponentsQuantity() {
         return componentsQuantity;
     }
 
-    public void setComponentsQuantity(String componentsQuantity) {
+    public void setComponentsQuantity(Integer componentsQuantity) {
         this.componentsQuantity = componentsQuantity;
     }
+
+    public Integer getMachineVersionId() {
+        return machineVersionId;
+    }
+
+    public void setMachineVersionId(Integer machineVersionId) {
+        this.machineVersionId = machineVersionId;
+    }
+
+    public String getMachineVersionNo() {
+        return machineVersionNo;
+    }
+
+    public void setMachineVersionNo(String machineVersionNo) {
+        this.machineVersionNo = machineVersionNo;
+    }
 }

+ 19 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBomComponents.java

@@ -16,7 +16,10 @@ public class PtsBomComponents implements Serializable{
 
     private Integer bomComponentsQuantity;//零件数量
 
+
     private PtsComponents ptsComponents; //零件
+    private String componentsNo;    //零件编号
+    private String componentsName;  //零件名称
 
     public Integer getBomComponentsId() {
         return bomComponentsId;
@@ -57,4 +60,20 @@ public class PtsBomComponents implements Serializable{
     public void setPtsComponents(PtsComponents ptsComponents) {
         this.ptsComponents = ptsComponents;
     }
+
+    public String getComponentsNo() {
+        return componentsNo;
+    }
+
+    public void setComponentsNo(String componentsNo) {
+        this.componentsNo = componentsNo;
+    }
+
+    public String getComponentsName() {
+        return componentsName;
+    }
+
+    public void setComponentsName(String componentsName) {
+        this.componentsName = componentsName;
+    }
 }

+ 11 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsComponents.java

@@ -19,7 +19,7 @@ public class PtsComponents implements Serializable {
 
     private String componentsName;//零件名称
 
-    private Integer componentsType;//零件类型:1:塑胶件;2:五金件;3:其他;
+    private Integer componentsType;//零件类型:1:塑胶件;2:五金件;4:电子类;5:线材;6:3:其他;
 
     private double componentsCost;//零件成本(分)
 
@@ -45,6 +45,8 @@ public class PtsComponents implements Serializable {
 
     private String produceName; //产品名称
 
+    private String serialNumber; //流水号
+
     public Integer getComponentsId() {
         return componentsId;
     }
@@ -188,4 +190,12 @@ public class PtsComponents implements Serializable {
     public void setProduceName(String produceName) {
         this.produceName = produceName;
     }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
 }

+ 11 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsSupplier.java

@@ -15,7 +15,7 @@ public class PtsSupplier implements Serializable {
 
     private String supplierAbbreviation;//简称
 
-    private String supplierNumber;
+    private String supplierNumber; //供应商编号
 
     private String supplierAddress;//地址
 
@@ -33,6 +33,8 @@ public class PtsSupplier implements Serializable {
 
     private Integer componentsNumber; //零件数量
 
+    private String serialNumber; //流水号
+
     public Integer getSupplierId() {
         return supplierId;
     }
@@ -128,4 +130,12 @@ public class PtsSupplier implements Serializable {
     public void setSupplierNumber(String supplierNumber) {
         this.supplierNumber = supplierNumber;
     }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
 }

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

@@ -16,7 +16,7 @@ public interface CustomerService {
      * @param customerInfo
      * @return
      */
-    Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder,Map<String,Object> produceMap);
+    Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder) throws Exception;
 
     /**
      * 根据id获取客诉信息

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachinePartsService.java

@@ -19,6 +19,13 @@ public interface MachinePartsService {
     Integer addMachineParts(PtsComponents ptsComponents);
 
     /**
+     * 查询零件的数量
+     * @param ptsComponents
+     * @return
+     */
+    Integer  getmachinePartsNumber(PtsComponents ptsComponents);
+
+    /**
      * 查询单个机器零件信息
      * **/
     PtsComponents getmachineParts(PtsComponents ptsComponents);
@@ -47,4 +54,7 @@ public interface MachinePartsService {
      * EXCEL添加机器零件
      * **/
     Integer excelAddMachineParts(Sheet sheet);
+
+
+    String getComPonentsNumber(String componentsNo,Integer type);
 }

+ 3 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineSupplierService.java

@@ -30,6 +30,9 @@ public interface MachineSupplierService {
     //添加批次
     Integer savePtsSupplier(PtsSupplier ptsSupplier);
 
+    /*查询数量*/
+    Integer getPtsSupplierNumber(PtsSupplier ptsSupplier);
+
     //查询单个批次
     PtsSupplier getPtsSupplier(PtsSupplier ptsSupplier);
 

+ 2 - 2
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/ProduceService.java

@@ -15,8 +15,8 @@ public interface ProduceService {
     //获取生产产品列表
     List<Produce> getProduceList();
 
-    //获取生产产品列表到内存
-    List<Produce> getAllProduceListToRam();
+    //获取生产产品列表
+    //List<Produce> getAllProduceListToRam();
 
     //获取生产产品列表
     List<Produce> getProduceList(Produce produce);

+ 2 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBatchService.java

@@ -14,6 +14,8 @@ public interface PtsBatchService {
     //查询b批次列表
     PagedResult<PtsBatch> listPtsBatchPage(int pageNO, int pageSize, PtsBatch ptsBatch, boolean isTotalNum);
 
+    List<PtsBatch> listPtsBatch(PtsBatch ptsBatch);
+
     //添加批次
     Integer savePtsBatch(PtsBatch ptsBatch);
 

+ 3 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBomService.java

@@ -14,6 +14,9 @@ public interface PtsBomService {
     //查询bom单列表
     PagedResult<PtsBom> listPtsBom(int pageNO, int pageSize, PtsBom ptsBom, boolean isTotalNum);
 
+    //查询bom单
+    List<PtsBom> listPtsBom(PtsBom ptsBom);
+
     //查询bom单集合
     List<PtsBom> listBom(PtsBom ptsBom);
 

+ 67 - 26
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -1,13 +1,19 @@
 package com.iamberry.rst.service.cm;
 
 import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.District;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.EfastOrder;
 import com.iamberry.rst.core.order.OrderItem;
+import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.CustomerService;
+import com.iamberry.rst.service.address.mapper.AddressMapper;
 import com.iamberry.rst.service.cm.mapper.*;
 import com.iamberry.rst.service.order.EfastOrderServiceImpl;
+import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -51,6 +57,12 @@ public class CustomerServiceImpl implements CustomerService {
     private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper;  //仓储
     @Autowired
     private ComplaintDetectInfoMapper complaintDetectInfoMapper;    //品检
+    @Autowired
+    private QuestionDescribeMapper questionDescribeMapper;   //客诉问题
+    @Autowired
+    private AddressMapper addressMapper;      //地址
+    @Autowired
+    private ProductMapper productMapper;  //产品
 
     @Override
     public CustomerInfo getCustomerInfo(Integer customerId) {
@@ -59,20 +71,43 @@ public class CustomerServiceImpl implements CustomerService {
 
     @Override
     @Transactional
-    public Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder,Map<String,Object> produceMap) {
-
-        salesOrder = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
+    public Integer saveCustomerInfo(CustomerInfo customerInfo,SalesOrder salesOrder) throws Exception{
 
         //添加客诉基本信息
         Integer flag = 0;
         flag = customerInfoMapper.insert(customerInfo);
+        if(flag < 1){
+            throw new Exception("添加客诉失败");
+        }
+
+        QuestionDescribe questionDescribe = new QuestionDescribe();
+        questionDescribe.setCustomerId(customerInfo.getCustomerId());
+        questionDescribe.setDescribeTitle(customerInfo.getDescribeTitle());  //客诉问题标题
+        questionDescribe.setDescribeContent(customerInfo.getDescribeContent());  //客诉问题描述
+        questionDescribe.setDescribeHandleDesc(customerInfo.getDescribeHandleDesc());   //处理描述
+        flag = questionDescribeMapper.insert(questionDescribe);
+        if(flag < 1){
+            throw new Exception("添加客诉失败");
+        }
 
         if ("2".equals(customerInfo.getCustomerIsVisit())) {
-            Visit visit = customerInfo.getVisit();
+            Visit visit = new Visit();
+            visit.setCustomerId(customerInfo.getCustomerId());
+            visit.setAdminId(customerInfo.getVisitAdminId());
+            visit.setVisitName(customerInfo.getVisitName());
+            visit.setVisitTel(customerInfo.getVisitTel());
+            visit.setVisitDate(customerInfo.getVisitDate());
+            visit.setVisitTimeSelect(customerInfo.getVisitTimeSelect());
+            visit.setVisitStatus(1);    //回访状态
             flag = visitMapper.addVisitInfo(visit);
+            if(flag < 1){
+                throw new Exception("添加客诉失败");
+            }
         }
 
         if (2 == customerInfo.getCustomerCounselType()) {
+            salesOrder = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
+
             CustomerCommon customerCommon = customerInfo.getCustomerCommon();
             customerCommon.setCustomerId(customerInfo.getCustomerId()); //设置客诉id
             customerCommon.setRelationBackStatus(1); //寄回状态 1:未寄回
@@ -80,8 +115,8 @@ public class CustomerServiceImpl implements CustomerService {
             customerCommon.setRelationState(1); //状态  默认使用中
             customerCommon.setOrderId(salesOrder.getSalesId()); //订单id
 
-            ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();
-            ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo();
+            ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();  //品质检测
+            ComplaintSignclosedInfo complaintSignclosedInfo = new ComplaintSignclosedInfo(); //客诉-签收表
             Map<String,Object> map;
             switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
                 case 3: //换新
@@ -90,7 +125,7 @@ public class CustomerServiceImpl implements CustomerService {
                         customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
                         complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
                     }else{
-
+                        throw new Exception("换新创建Efast订单失败");
                     }
                     complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
                     this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
@@ -103,7 +138,7 @@ public class CustomerServiceImpl implements CustomerService {
                         customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
                         complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
                     }else{
-
+                        throw new Exception("维修创建Efast订单失败");
                     }
                     complaintSignclosedInfo.setOldEfastId(salesOrder.getSalesOrderId());    //原有订单的Efast的订单编号
                     this.saveComplaintSignclosedInfo(complaintSignclosedInfo,customerCommon);//创建仓储任务
@@ -116,7 +151,7 @@ public class CustomerServiceImpl implements CustomerService {
                         customerCommon.setRelationBackEfastOrderId(String.valueOf(map.get("EfastOrderId")));  //存放Efast订单编号
                         complaintSignclosedInfo.setNewEfastId(String.valueOf(map.get("EfastOrderId")));     //仓储签收表添加  发货的Efast订单id
                     }else{
-
+                        throw new Exception("补发创建Efast订单失败");
                     }
                     break;
                 case 6: //退货
@@ -134,10 +169,6 @@ public class CustomerServiceImpl implements CustomerService {
             }
             customerCommon.setSignclosedId(complaintSignclosedInfo.getSignclosedId()); //设置仓储id
 
-            //新建仓储任务,  补发不用生成
-            //
-
-
             Object object = CustomerCommon.getRelation(customerInfo.getCustomerIsSolve(), customerCommon);
             Integer relationId;
             switch (customerInfo.getCustomerIsSolve()) {  //处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
@@ -168,10 +199,10 @@ public class CustomerServiceImpl implements CustomerService {
                     break;
             }
             if (flag < 1) {
-
+                throw new Exception("添加客诉失败");
             }
         }
-        return null;
+        return flag;
     }
 
     /**
@@ -181,16 +212,27 @@ public class CustomerServiceImpl implements CustomerService {
      * @return
      */
     @Transactional
-    public void saveComplaintDetectInfo(ComplaintDetectInfo complaintDetectInfo,CustomerCommon customerCommon){
-        Integer flag;
+    public void saveComplaintDetectInfo(ComplaintDetectInfo complaintDetectInfo,CustomerCommon customerCommon) throws  Exception{
+        Integer flag = 0;
+        List<ComplaintDetectInfo> complaintDetectInfoList = new ArrayList<ComplaintDetectInfo>();
         complaintDetectInfo.setCustomerId(customerCommon.getCustomerId());    //添加客诉
-//        complaintDetectInfo.setProductId();     //品检产品id
-//        complaintDetectInfo.setDetectProductNumber();   //产品型号
         complaintDetectInfo.setDetectState(1);      //状态  1待仓库转入
         complaintDetectInfo.setDetectRevolutionProduced(1);  //是否转入生产部门  1待转入
-        flag = complaintDetectInfoMapper.insert(complaintDetectInfo);
+        for(int i=0 ;i< customerCommon.getClosedProdcues().size();i++){
+            ClosedProdcue closedProdcue = customerCommon.getClosedProdcues().get(i);
+            for(int j=0; j<closedProdcue.getClosedProdcueNumber();j++){
+                complaintDetectInfo.setProductId(closedProdcue.getProductId());
+                Product product = productMapper.getProductById(closedProdcue.getProductId());
+                complaintDetectInfo.setDetectProductType(product.getProductType());
+                complaintDetectInfo.setDetectProductNumber(product.getProductNumber());
+            }
+            complaintDetectInfoList.add(complaintDetectInfo);
+        }
+        if(complaintDetectInfoList.size() > 0){
+            flag = complaintDetectInfoMapper.insertList(complaintDetectInfoList);
+        }
         if(flag < 1){
-
+            throw new Exception("添加品检失败");
         }
     }
 
@@ -200,9 +242,9 @@ public class CustomerServiceImpl implements CustomerService {
      * @return
      */
     @Transactional
-    public void saveComplaintSignclosedInfo(ComplaintSignclosedInfo complaintSignclosedInfo,CustomerCommon customerCommon){
+    public void saveComplaintSignclosedInfo(ComplaintSignclosedInfo complaintSignclosedInfo,CustomerCommon customerCommon)throws  Exception{
         Integer flag;
-        complaintSignclosedInfo.setSignclosedId(1); //签收类型 : 客诉寄回
+        complaintSignclosedInfo.setSignclosedType(1); //客诉寄回
         complaintSignclosedInfo.setSignclosedIsQuality(1); //是否平品检 1:需要品检
         complaintSignclosedInfo.setSignclosedIsInto(2); //是否已转入品检 2:未转入品检
         complaintSignclosedInfo.setSignclosedState(2); //处理状态  2:未签收
@@ -210,14 +252,13 @@ public class CustomerServiceImpl implements CustomerService {
         complaintSignclosedInfo.setSignclosedCustomerId(customerCommon.getCustomerId()); //客诉id
         flag = complaintSignclosedInfoMapper.insert(complaintSignclosedInfo);
         if(flag < 1){
-
+            throw new Exception("添加仓储任务失败");
         }
-
         //添加代签收表
     }
 
     /**
-     * 像Efast推送订单  仅换新,维修
+     * 像Efast推送订单  仅换新,维修 ,补发
      * @return
      */
     public Map<String,Object> sendEfastOrder(){

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

@@ -13,6 +13,14 @@ public interface ComplaintDetectInfoMapper {
      * @return
      */
     int insert(ComplaintDetectInfo record);
+
+    /**
+     * 批量添加品检
+     * @param complaintDetectInfoList
+     * @return
+     */
+    int insertList(List<ComplaintDetectInfo> complaintDetectInfoList);
+
     /**
      * 查询单个品质检测产品
      * @return

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

@@ -58,7 +58,7 @@
     where back_goods_id = #{backGoodsId,jdbcType=INTEGER}
   </delete>
   <insert id="insert" parameterType="BackGoods" >
-    insert into tb_rst_back_goods (back_goods_id, customer_id, order_id, 
+    insert into tb_rst_back_goods (customer_id, order_id,
       signclosed_id, back_goods_back_status, back_goods_back_name, 
       back_goods_back_tel, back_goods_back_logistics_company, 
       back_goods_back_logistics_no, back_goods_back_postage, 
@@ -66,7 +66,7 @@
       back_goods_state, back_goods_alipay, back_goods_is_transfer, 
       back_goods_create_time, back_goods_update_time
       )
-    values (#{backGoodsId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, 
+    values ( #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER},
       #{signclosedId,jdbcType=INTEGER}, #{backGoodsBackStatus,jdbcType=BIT}, #{backGoodsBackName,jdbcType=VARCHAR}, 
       #{backGoodsBackTel,jdbcType=CHAR}, #{backGoodsBackLogisticsCompany,jdbcType=VARCHAR}, 
       #{backGoodsBackLogisticsNo,jdbcType=VARCHAR}, #{backGoodsBackPostage,jdbcType=INTEGER}, 

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

@@ -118,6 +118,32 @@
       )
   </insert>
 
+  <insert id="insertList" parameterType="java.util.List" >
+    insert into tb_rst_complaint_detect
+    (
+        customer_id,signclosed_id,product_id,
+        detect_product_number, detect_state, detect_phenomenon,
+        detect_failure_classification, detect_failure_cause,
+        detect_results, detect_point, detect_analysis,
+        detect_revolution_produced,
+        detect_desc, signclosed_create_time, signclosed_update_time,
+        machine_no,detect_is_maintenance,detect_date,maintenance_results
+      )
+    values
+      <foreach collection="list" item="node" index="index" separator="," open="" close="">
+        (
+          #{node.customerId},#{node.signclosedId},
+          #{node.productId},
+          #{node.detectProductNumber}, #{node.detectState}, #{node.detectPhenomenon},
+          #{node.detectFailureClassification}, #{node.detectFailureCause},
+          #{node.detectResults}, #{node.detectPoint}, #{node.detectAnalysis},
+          #{node.detectRevolutionProduced},
+          #{node.detectDesc}, #{node.signclosedCreateTime}, #{node.signclosedUpdateTime}
+          ,#{node.machineNo},#{node.detectIsMaintenance},#{node.detectDate},#{node.maintenanceResults}
+        )
+      </foreach>
+  </insert>
+
   <update id="updateComplaintDetectById" parameterType="ComplaintDetectInfo" >
     update tb_rst_complaint_detect
     <set >

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

@@ -31,10 +31,18 @@
     where question_id = #{questionId,jdbcType=INTEGER}
   </select>
 
-  <select id="listComplaintQuestionInfo" resultMap="BaseResultMap" parameterType="ComplaintQuestionInfo" >
+  <select id="listComplaintQuestionInfo" resultType="ComplaintQuestionInfo" parameterType="ComplaintQuestionInfo" >
     select
-    question_id, small_class_id, question_name, question_state, question_is_qc_detect,question_profile,
-    question_create_time, question_update_time,question_resolved_num,question_not_solved_num
+    question_id,
+    small_class_id,
+    question_name,
+    question_state,
+    question_is_qc_detect,
+    question_profile,
+    question_create_time,
+    question_update_time,
+    question_resolved_num,
+    question_not_solved_num
     from tb_rst_complaint_question
     <where>
       <if test="smallClassId !=null">

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

@@ -170,7 +170,7 @@
   </select>
 
   <insert id="insert" parameterType="ComplaintSignclosedInfo" useGeneratedKeys="true" keyProperty="signclosedId" >
-    insert into tb_rst_complaint_signclosed (signclosed_id, signclosed_type, signclosed_type_name, 
+    insert into tb_rst_complaint_signclosed (signclosed_type, signclosed_type_name,
       machine_no, signclosed_logistics, signclosed_logistics_number, 
       signclosed_send_name, signclosed_send_tel, 
       signclosed_addr_provinces, signclosed_addr_city, 
@@ -180,7 +180,7 @@
       old_efast_id, new_efast_id, signclosed_customer_desc, 
       signclosed_desc, signclosed_create_time, 
       signclosed_update_time)
-    values (#{signclosedId,jdbcType=INTEGER}, #{signclosedType,jdbcType=BIT}, #{signclosedTypeName,jdbcType=VARCHAR}, 
+    values (#{signclosedType,jdbcType=BIT}, #{signclosedTypeName,jdbcType=VARCHAR},
       #{machineNo,jdbcType=VARCHAR}, #{signclosedLogistics,jdbcType=VARCHAR}, #{signclosedLogisticsNumber,jdbcType=VARCHAR}, 
       #{signclosedSendName,jdbcType=VARCHAR}, #{signclosedSendTel,jdbcType=VARCHAR}, 
       #{signclosedAddrProvinces,jdbcType=INTEGER}, #{signclosedAddrCity,jdbcType=INTEGER}, 

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

@@ -110,20 +110,18 @@
     </where>
   </select>
 
-  <insert id="insert" parameterType="CustomerInfo" >
+  <insert id="insert" parameterType="CustomerInfo"  useGeneratedKeys="true"  keyProperty="customerId">
     insert into tb_rst_customer_info (customer_id, admin_id, question_id, 
       company_id, store_id, customer_source_type, 
       customer_source, customer_counsel_type, customer_name, 
       customer_tel, customer_is_solve, customer_is_visit, 
-      customer_in_TDS, customer_out_TDS, customer_area, 
-      customer_create_time, customer_update_time
+      customer_in_TDS, customer_out_TDS, customer_area
       )
     values (#{customerId,jdbcType=INTEGER}, #{adminId,jdbcType=INTEGER}, #{questionId,jdbcType=INTEGER}, 
       #{companyId,jdbcType=INTEGER}, #{storeId,jdbcType=INTEGER}, #{customerSourceType,jdbcType=TINYINT}, 
       #{customerSource,jdbcType=VARCHAR}, #{customerCounselType,jdbcType=BIT}, #{customerName,jdbcType=VARCHAR}, 
       #{customerTel,jdbcType=VARCHAR}, #{customerIsSolve,jdbcType=TINYINT}, #{customerIsVisit,jdbcType=VARCHAR}, 
-      #{customerInTds,jdbcType=INTEGER}, #{customerOutTds,jdbcType=INTEGER}, #{customerArea,jdbcType=VARCHAR}, 
-      #{customerCreateTime,jdbcType=TIMESTAMP}, #{customerUpdateTime,jdbcType=TIMESTAMP}
+      #{customerInTDS,jdbcType=INTEGER}, #{customerOutTDS,jdbcType=INTEGER}, #{customerArea,jdbcType=VARCHAR}
       )
   </insert>
 

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

@@ -59,7 +59,7 @@
     where noreason_back_id = #{noreasonBackId,jdbcType=INTEGER}
   </delete>
   <insert id="insert" parameterType="NoreasonBack" >
-    insert into tb_rst_noreason_back (noreason_back_id, customer_id, order_id, 
+    insert into tb_rst_noreason_back (customer_id, order_id,
       signclosed_id, noreason_back_back_status, noreason_back_back_name, 
       noreason_back_back_tel, noreason_back_back_logistics_company, 
       noreason_back_back_logistics_no, noreason_back_back_postage, 
@@ -67,7 +67,7 @@
       noreason_back_state, noreason_back_alipay, noreason_back_is_transfer, 
       noreason_back_create_time, noreason_back_update_time
       )
-    values (#{noreasonBackId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, 
+    values ( #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER},
       #{signclosedId,jdbcType=INTEGER}, #{noreasonBackBackStatus,jdbcType=BIT}, #{noreasonBackBackName,jdbcType=VARCHAR}, 
       #{noreasonBackBackTel,jdbcType=CHAR}, #{noreasonBackBackLogisticsCompany,jdbcType=VARCHAR}, 
       #{noreasonBackBackLogisticsNo,jdbcType=VARCHAR}, #{noreasonBackBackPostage,jdbcType=INTEGER}, 

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

@@ -32,12 +32,12 @@
     delete from tb_rst_question_describe
     where describe_id = #{describeId,jdbcType=INTEGER}
   </delete>
+
   <insert id="insert" parameterType="QuestionDescribe" >
-    insert into tb_rst_question_describe (describe_id, describe_content, customer_id
-      )
-    values (#{describeId,jdbcType=INTEGER}, #{describeContent,jdbcType=VARCHAR}, #{customerId,jdbcType=INTEGER}
-      )
+    insert into tb_rst_question_describe (describe_id, describe_content, customer_id,describe_title,describe_handle_desc)
+    values (#{describeId,jdbcType=INTEGER}, #{describeContent,jdbcType=VARCHAR}, #{customerId,jdbcType=INTEGER}, #{describeTitle}, #{describeHandleDesc})
   </insert>
+
   <insert id="insertSelective" parameterType="QuestionDescribe" >
     insert into tb_rst_question_describe
     <trim prefix="(" suffix=")" suffixOverrides="," >

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

@@ -57,7 +57,7 @@
     where reissue_id = #{reissueId,jdbcType=INTEGER}
   </delete>
   <insert id="insert" parameterType="Reissue" >
-    insert into tb_rst_reissue (reissue_id, customer_id, order_id, 
+    insert into tb_rst_reissue (customer_id, order_id,
       reissue_back_efast_order_id, reissue_send_status, 
       reissue_send_name, reissue_send_tel, province_number, 
       city_number, area_number, reissue_send_merge_address, 
@@ -65,7 +65,7 @@
       reissue_send_logistics_no, reissue_desc, reissue_state, 
       reissue_create_time, reissue_update_time
       )
-    values (#{reissueId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, 
+    values ( #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER},
       #{reissueBackEfastOrderId,jdbcType=VARCHAR}, #{reissueSendStatus,jdbcType=BIT}, 
       #{reissueSendName,jdbcType=VARCHAR}, #{reissueSendTel,jdbcType=CHAR}, #{provinceNumber,jdbcType=VARCHAR}, 
       #{cityNumber,jdbcType=VARCHAR}, #{areaNumber,jdbcType=VARCHAR}, #{reissueSendMergeAddress,jdbcType=VARCHAR}, 

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

@@ -111,7 +111,7 @@
     where renewed_id = #{renewedId,jdbcType=INTEGER}
   </delete>
   <insert id="insert" parameterType="Renewed" >
-    insert into tb_rst_renewed (renewed_id, customer_id, order_id, 
+    insert into tb_rst_renewed (customer_id, order_id,
       signclosed_id, renewed_back_efast_order_id, 
       renewed_back_status, renewed_back_name, renewed_back_tel, 
       renewed_back_logistics_company, renewed_back_logistics_no, 
@@ -123,7 +123,7 @@
       renewed_desc, renewed_state, renewed_alipay, 
       renewed_is_transfer, renewed_create_time, renewed_update_time
       )
-    values (#{renewedId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, 
+    values ( #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER},
       #{signclosedId,jdbcType=INTEGER}, #{renewedBackEfastOrderId,jdbcType=VARCHAR}, 
       #{renewedBackStatus,jdbcType=BIT}, #{renewedBackName,jdbcType=VARCHAR}, #{renewedBackTel,jdbcType=CHAR}, 
       #{renewedBackLogisticsCompany,jdbcType=VARCHAR}, #{renewedBackLogisticsNo,jdbcType=VARCHAR}, 

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

@@ -101,7 +101,7 @@
     where repair_id = #{repairId,jdbcType=INTEGER}
   </delete>
   <insert id="insert" parameterType="Repair" >
-    insert into tb_rst_repair (repair_id, customer_id, order_id, 
+    insert into tb_rst_repair (customer_id, order_id,
       signclosed_id, repair_back_efast_order_id, repair_back_status, 
       repair_back_name, repair_back_tel, repair_back_logistics_company, 
       repair_back_logistics_no, repair_back_postage, 
@@ -112,7 +112,7 @@
       repair_desc, repair_state, repair_alipay, 
       repair_is_transfer, repair_create_time, repair_update_time
       )
-    values (#{repairId,jdbcType=INTEGER}, #{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, 
+    values (#{customerId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER},
       #{signclosedId,jdbcType=INTEGER}, #{repairBackEfastOrderId,jdbcType=VARCHAR}, #{repairBackStatus,jdbcType=BIT}, 
       #{repairBackName,jdbcType=VARCHAR}, #{repairBackTel,jdbcType=CHAR}, #{repairBackLogisticsCompany,jdbcType=VARCHAR}, 
       #{repairBackLogisticsNo,jdbcType=VARCHAR}, #{repairBackPostage,jdbcType=INTEGER}, 

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

@@ -46,7 +46,7 @@
   </delete>
 
   <!-- 添加客诉回访信息 -->
-  <insert id="addVisitInfo" parameterType="Visit" >
+  <insert id="addVisitInfo" parameterType="Visit" useGeneratedKeys="true"  keyProperty="visitId" >
     insert into tb_rst_visit (visit_id, customer_id, admin_id, 
       visit_name, visit_tel, visit_date, 
       visit_time_select, visit_status, visit_complete_date, 

+ 55 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachinePartsServiceImpl.java

@@ -41,6 +41,11 @@ public class MachinePartsServiceImpl implements MachinePartsService {
     }
 
     @Override
+    public Integer getmachinePartsNumber(PtsComponents ptsComponents) {
+        return machinePartsMapper.getmachinePartsNumber(ptsComponents);
+    }
+
+    @Override
     public PtsComponents getmachineParts(PtsComponents ptsComponents) {
         return machinePartsMapper.getmachineParts(ptsComponents);
     }
@@ -82,7 +87,10 @@ public class MachinePartsServiceImpl implements MachinePartsService {
                 }
                 /**封装零件实体**/
                 PtsComponents ptsComponents = new PtsComponents();
-                ptsComponents.setComponentsNo(heads.get(0));
+
+                String comPonentsNo = heads.get(0);
+                String comType = "";
+
                 /**获取供应商id**/
                 PtsSupplier ptsSupplier = new PtsSupplier();
                 ptsSupplier.setSupplierNumber(heads.get(1));
@@ -97,20 +105,33 @@ public class MachinePartsServiceImpl implements MachinePartsService {
                 switch (heads.get(7)){
                     case "塑胶件":
                         type = 1;
+                        comType = "110";
                         break;
                     case "五金件":
                         type = 2;
+                        comType = "220";
                         break;
                     case "电子类":
-                        type = 3;
+                        type = 4;
+                        comType = "330";
                         break;
                     case "线材":
-                        type = 4;
+                        type = 5;
+                        comType = "440";
                         break;
                     case "辅材":
-                        type = 5;
+                        type = 6;
+                        comType = "550";
+                        break;
+                    case "其他":
+                        type = 3;
+                        comType = "660";
                         break;
                 }
+
+                /*设置编码*/
+                ptsComponents.setComponentsNo(this.getComPonentsNumber(comType +"-" + comPonentsNo,type));
+
                 ptsComponents.setComponentsType(type);
                 ptsComponents.setComponentsMbsc(heads.get(8));
                 ptsComponents.setComponentsSpecification(heads.get(9));
@@ -124,4 +145,34 @@ public class MachinePartsServiceImpl implements MachinePartsService {
 
         return 1;
     }
+
+
+    /**
+     * 生成机器零件编号
+     * @param componentsNo
+     * @param type
+     * @return
+     */
+    public String getComPonentsNumber(String componentsNo,Integer type){
+        PtsComponents compon = new PtsComponents();
+        compon.setComponentsType(type);
+        Integer number = machinePartsMapper.getmachinePartsNumber(compon) + 1;
+        String no =  String.format("%04d", number);
+        String comPonentsNo = componentsNo + "-" + no;
+
+        boolean flag = true;
+        while (flag){
+            compon = new PtsComponents();
+            compon.setComponentsNo(comPonentsNo);
+            Integer comNumber = machinePartsMapper.getmachinePartsNumber(compon);
+            if(comNumber == 0){
+                flag = false;
+            }else{
+                number ++ ;
+                no =  String.format("%04d", number);
+                comPonentsNo = componentsNo + "-" + no;
+            }
+        }
+        return comPonentsNo;
+    }
 }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineSupplierServiceImpl.java

@@ -44,6 +44,11 @@ public class MachineSupplierServiceImpl implements MachineSupplierService {
     }
 
     @Override
+    public Integer getPtsSupplierNumber(PtsSupplier ptsSupplier) {
+        return machineSupplierMapper.getPtsSupplierNumber(ptsSupplier);
+    }
+
+    @Override
     public PtsSupplier getPtsSupplier(PtsSupplier ptsSupplier) {
         return machineSupplierMapper.getPtsSupplier(ptsSupplier);
     }

+ 4 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/ProduceServiceImpl.java

@@ -30,10 +30,10 @@ public class ProduceServiceImpl implements ProduceService {
         return produceMapper.getProduceList(produce);
     }
 
-    @Override
-    public List<Produce> getAllProduceListToRam() {
-        return produceMapper.getAllProduceListToRam();
-    }
+//    @Override
+//    public List<Produce> getAllProduceListToRam() {
+//        return produceMapper.getAllProduceListToRam();
+//    }
 
     //获取生产产品列表
     public List<Produce> getProduceList(Produce produce) {

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBatchServiceImpl.java

@@ -28,6 +28,11 @@ public class PtsBatchServiceImpl implements PtsBatchService {
     }
 
     @Override
+    public List<PtsBatch> listPtsBatch(PtsBatch ptsBatch) {
+        return ptsBatchMapper.listPtsBatch(ptsBatch);
+    }
+
+    @Override
     public Integer savePtsBatch(PtsBatch ptsBatch) {
         if(ptsBatch.getBatchStatus() == 1){
             PtsBatch pts = new PtsBatch();

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java

@@ -2,11 +2,13 @@ package com.iamberry.rst.service.pts;
 
 import com.github.pagehelper.PageHelper;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.PtsBom;
 import com.iamberry.rst.core.pts.PtsBomComponents;
 import com.iamberry.rst.core.pts.PtsComponents;
 import com.iamberry.rst.faces.pts.PtsBomService;
 import com.iamberry.rst.service.pts.mapper.MachinePartsMapper;
+import com.iamberry.rst.service.pts.mapper.ProduceMapper;
 import com.iamberry.rst.service.pts.mapper.PtsBomMapper;
 import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +34,11 @@ public class PtsBomServiceImpl implements PtsBomService {
         return PageUtil.getPage(list);
     }
 
+    @Override
+    public List<PtsBom> listPtsBom(PtsBom ptsBom) {
+        return ptsBomMapper.listPtsBom(ptsBom);
+    }
+
     //查询bom单集合
     @Override
     public List<PtsBom> listBom(PtsBom ptsBom) {

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachinePartsMapper.java

@@ -17,6 +17,14 @@ public interface MachinePartsMapper {
     Integer addMachineParts(PtsComponents ptsComponents);
 
     /**
+     * 查询零件的数量
+     * @param ptsComponents
+     * @return
+     */
+    Integer  getmachinePartsNumber(PtsComponents ptsComponents);
+
+
+    /**
      * 查询单个机器零件信息
      * **/
     PtsComponents getmachineParts(PtsComponents ptsComponents);

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineSupplierMapper.java

@@ -20,6 +20,9 @@ public interface MachineSupplierMapper {
     //添加批次
     Integer savePtsSupplier(PtsSupplier ptsSupplier);
 
+    /*查询数量*/
+    Integer getPtsSupplierNumber(PtsSupplier ptsSupplier);
+
     //查询单个批次
     PtsSupplier getPtsSupplier(PtsSupplier ptsSupplier);
 

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ProduceMapper.java

@@ -15,8 +15,8 @@ public interface ProduceMapper {
     //获取生产产品列表
     List<Produce> getProduceList(Produce produce);
 
-    //获取生产产品列表到内存
-    List<Produce> getAllProduceListToRam();
+    //获取生产产品列表
+    //List<Produce> getAllProduceListToRam();
 
     //获取生产产品,产品工序,工序节点
     List<Produce> getAllProduceList(Integer employeeId);

+ 16 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machinePartsMapper.xml

@@ -51,6 +51,22 @@
             </if>
         </where>
     </select>
+
+    <select id="getmachinePartsNumber" parameterType="PtsComponents" resultType="Integer">
+        SELECT
+        COUNT(*)
+        FROM
+        tb_rst_pts_components
+        <where>
+            <if test="componentsType != null and componentsType != ''">
+                components_type = #{componentsType}
+            </if>
+            <if test="componentsNo != null and componentsNo != ''">
+                AND  components_no = #{componentsNo}
+            </if>
+        </where>
+    </select>
+
     <select id="listPtsComponents" parameterType="PtsComponents" resultType="PtsComponents" >
         SELECT
             t.components_id AS componentsId,

+ 18 - 4
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineSupplierMapper.xml

@@ -23,13 +23,13 @@
             tb_rst_pts_components trpc ON trps.supplier_id = trpc.supplier_id
         <where>
             <if test="supplierName !=null and supplierName !=''">
-                supplier_name like CONCAT('%',#{supplierName},'%')
+                AND  supplier_name like CONCAT('%',#{supplierName},'%')
             </if>
             <if test="supplierContactPerson !=null and supplierContactPerson !=''">
-                supplier_contact_person like CONCAT('%',#{supplierContactPerson},'%')
+                AND supplier_contact_person like CONCAT('%',#{supplierContactPerson},'%')
             </if>
             <if test="supplierTel !=null and supplierTel !=''">
-                supplier_tel like CONCAT('%',#{supplierTel},'%')
+                AND supplier_tel like CONCAT('%',#{supplierTel},'%')
             </if>
         </where>
         GROUP BY trps.supplier_id
@@ -59,6 +59,9 @@
             <if test="supplierEmail !=null and supplierEmail !=''">
                 supplier_email = #{supplierEmail},
             </if>
+            <if test="supplierNumber !=null and supplierNumber !=''">
+                supplier_number = #{supplierNumber},
+            </if>
                 supplier_phone = #{supplierPhone},
                 supplier_address = #{supplierAddress}
             <!--</if>-->
@@ -83,7 +86,7 @@
             tb_rst_pts_supplier
         <where>
             <if test="supplierId !=null and supplierId !=''">
-                AND supplier_id = #{supplierId},
+                AND supplier_id = #{supplierId}
             </if>
             <if test="supplierNumber !=null and supplierNumber !=''">
                 AND supplier_number = #{supplierNumber}
@@ -91,4 +94,15 @@
         </where>
     </select>
 
+
+    <select id="getPtsSupplierNumber"  resultType="Integer" parameterType="PtsSupplier">
+        SELECT COUNT(*) FROM tb_rst_pts_supplier
+        <where>
+            <if test="supplierId !=null and supplierId !=''">
+                supplier_id = #{supplierId}
+            </if>
+        </where>
+    </select>
+
+
 </mapper>

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

@@ -33,6 +33,9 @@
             <if test="machineVersionType != null and machineVersionType != ''">
                 AND machine_version_type = #{machineVersionType}
             </if>
+            <if test="machineVersionNo != null and machineVersionNo != ''">
+                AND machine_version_no like CONCAT('%',#{machineVersionNo},'%')
+            </if>
         </where>
     </select>
 

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

@@ -18,6 +18,9 @@
             <if test="produceStatus !=null">
                 produce_status = #{produceStatus}
             </if>
+            <if test="produceName !=null and produceName !=''">
+                AND produce_name like CONCAT('%',#{produceName},'%')
+            </if>
         </where>
     </select>
 

+ 7 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBatchMapper.xml

@@ -10,21 +10,21 @@
             t.batch_color_quantity AS batchColorQuantity,
             t.bom_id AS bomId,
             t.produce_id AS produceId,
-            t.batch_software_version_id AS batchSoftwareVersionId,
             t.batch_status AS  batchStatus,
             t.batch_desc AS batchDesc,
             t.batch_create_time AS batchCreateTime,
             t.batch_update_time AS batchUpdateTime,
             trpp.produce_name AS produceName,
             trpb.bom_name AS bomName,
-            tepmv.machine_version_no AS  softwareVersionNo,
-            count(tbpm.machine_id) AS generatedQuantity
+            count(tbpm.machine_id) AS generatedQuantity,
+            trpmv.machine_version_no AS softwareVersionNo,
+            trpb.machine_version_id AS batchSoftwareVersionId
         FROM
             	tb_rst_pts_batch t
         LEFT JOIN tb_rst_pts_produce trpp ON t.produce_id = trpp.produce_id
         LEFT JOIN tb_rst_pts_bom trpb ON t.bom_id = trpb.bom_id
-        LEFT JOIN tb_rst_pts_machine_version tepmv ON t.batch_software_version_id = tepmv.machine_version_id
         LEFT JOIN tb_rst_pts_machine tbpm  ON t.batch_id = tbpm.machine_batch_id
+        LEFT JOIN tb_rst_pts_machine_version trpmv ON trpb.machine_version_id = trpmv.machine_version_id
         <where>
             <if test="produceId !=null">
                 AND t.produce_id = #{produceId}
@@ -45,13 +45,14 @@
             t.batch_color_quantity AS batchColorQuantity,
             t.bom_id AS bomId,
             t.produce_id AS produceId,
-            t.batch_software_version_id AS batchSoftwareVersionId,
             t.batch_status AS  batchStatus,
             t.batch_desc AS batchDesc,
             t.batch_create_time AS batchCreateTime,
-            t.batch_update_time AS batchUpdateTime
+            t.batch_update_time AS batchUpdateTime,
+            trpb.machine_version_id AS batchSoftwareVersionId
         FROM
             tb_rst_pts_batch t
+        LEFT JOIN tb_rst_pts_bom trpb ON t.bom_id = trpb.bom_id
         <where>
             <if test="produceId !=null">
                 AND t.produce_id = #{produceId}

+ 17 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml

@@ -8,18 +8,21 @@
         trpb.bom_name AS bomName,
         trpb.produce_id AS produceId,
         trpb.bom_version AS bomVersion,
+        trpb.machine_version_id AS machineVersionId,
         trpb.bom_remarks AS bomRemarks,
         trpb.bom_create_time AS bomCreateTime,
         trpb.bom_update_time AS bomUpdateTime,
         IFNULL(SUM(trpbc.bom_components_quantity),0) AS componentsQuantity,
         ifnull(SUM(trpc.components_cost * trpbc.bom_components_quantity),0)  AS allComponentsCost,
         ifnull(SUM(trpc.components_weight * trpbc.bom_components_quantity),0)  AS allComponentsWeight,
-        trpp.produce_name AS produceName
+        trpp.produce_name AS produceName,
+        trpmv.machine_version_no AS machineVersionNo
         FROM
         tb_rst_pts_bom trpb
         LEFT JOIN tb_rst_pts_bom_components trpbc ON trpb.bom_id = trpbc.bom_id
         LEFT JOIN tb_rst_pts_components trpc ON trpbc.components_id = trpc.components_id
         LEFT JOIN tb_rst_pts_produce trpp ON trpb.produce_id = trpp.produce_id
+        LEFT JOIN tb_rst_pts_machine_version trpmv ON trpb.machine_version_id = trpmv.machine_version_id
         <where>
             <if test="bomId !=null">
                 AND trpb.bom_id like CONCAT('%',#{bomId},'%')
@@ -47,21 +50,23 @@
         trpb.bom_name AS bomName,
         trpb.produce_id AS produceId,
         trpb.bom_version AS bomVersion,
+        trpb.machine_version_id AS machineVersionId,
         trpb.bom_remarks AS bomRemarks,
         trpb.bom_create_time AS bomCreateTime,
         trpb.bom_update_time AS bomUpdateTime,
         IFNULL(SUM(trpbc.bom_components_quantity),0) AS componentsQuantity,
         ifnull(SUM(trpc.components_cost * trpbc.bom_components_quantity),0)  AS allComponentsCost,
         ifnull(SUM(trpc.components_weight * trpbc.bom_components_quantity),0)  AS allComponentsWeight,
-        trpp.produce_name AS produceName
+        trpp.produce_name AS produceName,
+        trpmv.machine_version_no AS machineVersionNo
         FROM
         tb_rst_pts_bom trpb
         LEFT JOIN tb_rst_pts_bom_components trpbc ON trpb.bom_id = trpbc.bom_id
         LEFT JOIN tb_rst_pts_components trpc ON trpbc.components_id = trpc.components_id
         LEFT JOIN tb_rst_pts_produce trpp ON trpb.produce_id = trpp.produce_id
+        LEFT JOIN tb_rst_pts_machine_version trpmv ON trpb.machine_version_id = trpmv.machine_version_id
         WHERE
               trpb.bom_id = #{bomId}
-
         GROUP BY trpb.bom_id
     </select>
 
@@ -70,17 +75,20 @@
             t.bom_components_id AS bomComponentsId,
             t.bom_id AS bomId,
             t.components_id AS componentsId,
-            t.bom_components_quantity AS bomComponentsQuantity
+            t.bom_components_quantity AS bomComponentsQuantity,
+            trpc.components_no AS componentsNo,
+		    trpc.components_name AS componentsName
         FROM
             tb_rst_pts_bom_components t
+        LEFT JOIN tb_rst_pts_components trpc ON t.components_id = trpc.components_id
         WHERE
             t.bom_id = #{bomId}
     </select>
 
 
     <insert id="savePtsBom" parameterType="PtsBom" useGeneratedKeys="true" keyProperty="bomId">
-         insert into tb_rst_pts_bom (bom_name ,produce_id ,bom_remarks,bom_version  )
-         values (#{bomName},#{produceId},#{bomRemarks},#{bomVersion})
+         insert into tb_rst_pts_bom (bom_name ,produce_id ,bom_remarks,bom_version, machine_version_id )
+         values (#{bomName},#{produceId},#{bomRemarks},#{bomVersion},#{machineVersionId})
     </insert>
 
     <insert id="savePtsBomComponentsList" parameterType="java.util.List" useGeneratedKeys="true">
@@ -105,6 +113,9 @@
             <if test="bomVersion !=null  and bomVersion !=''">
                 bom_version = #{bomVersion},
             </if>
+            <if test="machineVersionId !=null  and machineVersionId !=''">
+                machine_version_id = #{machineVersionId},
+            </if>
                 bom_remarks = #{bomRemarks}
         </set>
         where

+ 3 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java

@@ -28,7 +28,7 @@ public class AddressController {
      */
     @ResponseBody
     @RequestMapping(value = "/list_province")
-    public ResponseJson listProvince(Province province) throws UnsupportedEncodingException {
+    public ResponseJson listProvince(Province province) throws Exception {
         ResponseJson rj =new ResponseJson(200, "查询成功", 200);
         List<Province> provinceList = addressService.listProvince(province);
         rj.addResponseKeyValue("provinceList", provinceList);
@@ -46,7 +46,7 @@ public class AddressController {
      */
     @ResponseBody
     @RequestMapping(value = "/list_city")
-    public ResponseJson listCity(City city){
+    public ResponseJson listCity(City city)throws Exception{
         ResponseJson rj =new ResponseJson(200, "查询成功", 200);
         List<City> cityList = addressService.listCity(city);
         rj.addResponseKeyValue("cityList", cityList);
@@ -64,7 +64,7 @@ public class AddressController {
      */
     @ResponseBody
     @RequestMapping(value = "/list_district")
-    public ResponseJson listDistrict(District district){
+    public ResponseJson listDistrict(District district)throws Exception{
         ResponseJson rj =new ResponseJson(200, "查询成功", 200);
         List<District> districtList = addressService.listDistrict(district);
         rj.addResponseKeyValue("cityList", districtList);

+ 40 - 17
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -5,6 +5,8 @@ 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.pts.ProcessNode;
+import com.iamberry.rst.core.pts.ProduceProcess;
 import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.order.EfastOrderService;
@@ -13,6 +15,7 @@ import com.iamberry.rst.faces.sys.SysService;
 import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
+import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -24,10 +27,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by wxm
@@ -239,12 +239,13 @@ public class AdminCustomerController {
     public ModelAndView toCustomerInfo(HttpServletRequest request) throws Exception {
         ModelAndView mv = new ModelAndView("cm/customer/custome_detail");
         String customerId = request.getParameter("customerId");
-        mv.addObject("customerId",customerId);
+        mv.addObject("customerId", customerId);
         return mv;
     }
 
     /**
      * 查询客诉基本信息
+     *
      * @param request
      * @return
      * @throws Exception
@@ -259,11 +260,11 @@ public class AdminCustomerController {
         }
         CustomerInfo customerInfo = new CustomerInfo();
         customerInfo.setCustomerId(Integer.parseInt(customerId));
-        Map<String,Object> map = customerService.getCustomerInfo(customerInfo);
+        Map<String, Object> map = customerService.getCustomerInfo(customerInfo);
         ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
-        rj.addResponseKeyValue("customerCommon",map.get("customerCommon"));
-        rj.addResponseKeyValue("customer",map.get("customer"));
-        rj.addResponseKeyValue("salesOrder",map.get("salesOrder"));
+        rj.addResponseKeyValue("customerCommon", map.get("customerCommon"));
+        rj.addResponseKeyValue("customer", map.get("customer"));
+        rj.addResponseKeyValue("salesOrder", map.get("salesOrder"));
         return rj;
     }
 
@@ -434,19 +435,41 @@ public class AdminCustomerController {
     @ResponseBody
     @RequiresPermissions("customer:add:customer")
     @RequestMapping("/save_customer")
-    public ResponseJson addCustomer(HttpServletRequest request, CustomerInfo customerInfo,SalesOrder salesOrder,String productAllJson) {
+    public ResponseJson addCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
+                                    String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
         Integer flag = 0;
+        JSONArray jsonArray;
+        List<SendProdcue> sendProdcueList = new ArrayList<>();
+        List<SendFitting> sendFittingList = new ArrayList<>();
+        List<ClosedProdcue> closedProdcueList = new ArrayList<>();
+        List<ClosedFitting> closedFittingList = new ArrayList<>();
 
+        jsonArray = JSONArray.fromObject(sendProdcuesJson);
+        sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
 
-        Map<String,Object> produceMap = new HashMap<String, Object>();
+        jsonArray = JSONArray.fromObject(sendFittingsJson);
+        sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
 
-        flag = customerService.saveCustomerInfo(customerInfo,salesOrder,produceMap);
+        jsonArray = JSONArray.fromObject(closedProdcuesJson);
+        closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
 
-//        if (produceFittingsList != null && produceFittingsList.size()> 0) {
-//
-//        } else {
-//        }
-        return new ResponseJson(500, "查询失败!", 500);
+        jsonArray = JSONArray.fromObject(closedFittingsJson);
+        closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
+
+        customerCommon.setSendProdcues(sendProdcueList);
+        customerCommon.setSendFittings(sendFittingList);
+        customerCommon.setClosedProdcues(closedProdcueList);
+        customerCommon.setClosedFittings(closedFittingList);
+
+        customerInfo.setCustomerCommon(customerCommon);
+
+        flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
+
+        if (flag < 1) {
+            return new ResponseJson(500, "添加客诉失败!", 500);
+        } else {
+            return new ResponseJson(200, "添加客诉成功!", 200);
+        }
     }
 
     /**

+ 28 - 4
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachinePartsController.java

@@ -91,6 +91,10 @@ public class AdminMachinePartsController {
         }
         ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分
         ptsComponents.setComponentsCreateTime(new Date());
+
+        /* 生成机器零件编号 */
+        ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType()));
+
         Integer msg =  machinePartsService.addMachineParts(ptsComponents);
         if(msg > 0){
             responseJson.setReturnCode(200);
@@ -100,6 +104,7 @@ public class AdminMachinePartsController {
         return responseJson;
     }
 
+
     /**
      * 导入EXCEL生产零件(图片为默认图片)
      * **/
@@ -162,6 +167,8 @@ public class AdminMachinePartsController {
         Map<String, Object> model = new HashMap<String, Object>();
         model.put("fileName", "零件列表");	// 下载文件名称
 
+        String path = "https://rst.iamberry.com";
+
         // 标题
         List<String> titles = new ArrayList<String>();
         titles.add("零件编号");
@@ -185,7 +192,7 @@ public class AdminMachinePartsController {
             row.add(info.getComponentsNo() == null ? null:info.getComponentsNo());
             row.add(info.getSupplierName() == null ? null:info.getSupplierName());
             row.add(info.getComponentsName() == null ? null:info.getComponentsName());
-            row.add(info.getComponentsImg() == null ? null:request.getServerName()+info.getComponentsImg());
+            row.add(info.getComponentsImg() == null ? null:path + info.getComponentsImg());
             row.add(info.getComponentsStatus() == 0 ? "停止使用":"正常使用");
             row.add(info.getComponentsCost()/100);
             row.add(info.getComponentsWeight());
@@ -198,15 +205,18 @@ public class AdminMachinePartsController {
                 case 2:
                     type = "五金件";
                     break;
-                case 3:
+                case 4:
                     type = "电子类";
                     break;
-                case 4:
+                case 5:
                     type = "线材";
                     break;
-                case 5:
+                case 6:
                     type = "辅材";
                     break;
+                case 3:
+                    type = "其他";
+                    break;
             }
             row.add(info.getComponentsType() == null ? null:type);
             row.add(info.getComponentsMbsc() == null ? null:info.getComponentsMbsc());
@@ -261,6 +271,14 @@ public class AdminMachinePartsController {
         PtsComponents ptsComponents = new PtsComponents();
         ptsComponents.setComponentsId(Integer.valueOf(componentsId));
         ptsComponents = machinePartsService.getmachineParts(ptsComponents);
+
+        String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
+        if(comPonentsNos != null && comPonentsNos.length > 2){
+            ptsComponents.setComponentsNo(comPonentsNos[1]);
+            String number = String.valueOf(comPonentsNos[2]);
+            ptsComponents.setSerialNumber(number);
+        }
+
         mv.addObject("ptsComponents", ptsComponents);
         List<Produce> list = produceService.getProduceList();
         mv.addObject("produceList", list);
@@ -304,6 +322,12 @@ public class AdminMachinePartsController {
         ptsComponents.setComponentsId(componentsId);
         ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分
         ptsComponents.setComponentsUpdateTime(new Date());
+
+        String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
+        if(comPonentsNos != null && comPonentsNos.length < 3){
+            ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType()));
+        }
+
         Integer msg =  machinePartsService.updateParts(ptsComponents);
         if(msg > 0){
             responseJson.setReturnCode(200);

+ 56 - 4
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBatchController.java

@@ -7,6 +7,7 @@ import com.iamberry.rst.faces.pts.ProduceService;
 import com.iamberry.rst.faces.pts.PtsBatchService;
 import com.iamberry.rst.faces.pts.PtsBomService;
 import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.ObjectExcelView;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import org.apache.shiro.authz.annotation.Logical;
@@ -19,8 +20,11 @@ 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.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 批次管理controller
@@ -191,7 +195,7 @@ public class AdminPtsBatchController {
      * @param ptsBatch
      * @return
      */
-    public boolean isValiData(PtsBatch ptsBatch) {
+    private boolean isValiData(PtsBatch ptsBatch) {
         boolean flag = true;
         if(ptsBatch.getBatchNo() == null  || ptsBatch.getBatchNo().length() >= 20){
             return false;
@@ -205,9 +209,9 @@ public class AdminPtsBatchController {
         if (ptsBatch.getProduceId() == null){
             return false;
         }
-        if (ptsBatch.getBatchSoftwareVersionId() == null){
-            return false;
-        }
+//        if (ptsBatch.getBatchSoftwareVersionId() == null){
+//            return false;
+//        }
         if (ptsBatch.getBatchStatus() == null){
             return false;
         }
@@ -275,4 +279,52 @@ public class AdminPtsBatchController {
         }
     }
 
+    /**
+     *  批次 -- excel导出
+     *
+     * @return
+     */
+    @RequestMapping(value = "/generation_excel")
+    public ModelAndView generationExcel(HttpServletRequest request) throws Exception{
+
+        // 准备model
+        Map<String, Object> model = new HashMap<String, Object>();
+        model.put("fileName", "批次列表");	// 下载文件名称
+
+        // 标题
+        List<String> titles = new ArrayList<String>();
+        titles.add("所属产品");
+        titles.add("批次编号");
+        titles.add("总数量");
+        titles.add("已生产数量");
+        titles.add("状态");
+        titles.add("软件版本");
+        titles.add("Bom单名称");
+        titles.add("创建时间");
+        model.put("titles", titles);
+        PtsBatch ptsBatch = new PtsBatch();
+        List<List<Object>> countexts = new ArrayList<List<Object>>();
+        List<PtsBatch> list = ptsBatchService.listPtsBatch(ptsBatch);
+        for (PtsBatch info : list) {
+            List<Object> row = new ArrayList<Object>();
+            row.add(info.getProduceName() == null ? null:info.getProduceName());
+            row.add(info.getBatchNo() == null ? null:info.getBatchNo());
+            row.add(info.getBatchQuantity() == null ? null:info.getBatchQuantity());
+            row.add(info.getGeneratedQuantity() == null ? null:info.getGeneratedQuantity());
+            row.add(info.getBatchStatus() == 0 ? "停止使用":"正常使用");
+            row.add(info.getSoftwareVersionNo() == null ? null:info.getSoftwareVersionNo());
+            row.add(info.getBomName() == null ? null:info.getBomName());
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String time = formatter.format(info.getBatchCreateTime());
+            row.add(time);
+            countexts.add(row);
+        }
+        model.put("varList", countexts);
+
+        ObjectExcelView erv = new ObjectExcelView();
+        ModelAndView mv = new ModelAndView(erv,model);
+        return mv;
+    }
+
+
 }

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

@@ -1,16 +1,21 @@
 package com.iamberry.rst.controllers.pts;
 
 import com.iamberry.rst.core.page.PagedResult;
-import com.iamberry.rst.core.pts.Produce;
-import com.iamberry.rst.core.pts.PtsBom;
-import com.iamberry.rst.core.pts.PtsBomComponents;
-import com.iamberry.rst.core.pts.PtsComponents;
+import com.iamberry.rst.core.pts.*;
 import com.iamberry.rst.faces.pts.MachinePartsService;
+import com.iamberry.rst.faces.pts.MachineVersionService;
 import com.iamberry.rst.faces.pts.ProduceService;
 import com.iamberry.rst.faces.pts.PtsBomService;
+import com.iamberry.rst.utils.ExcelUtil;
 import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.ObjectExcelView;
 import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.ResultInfo;
 import net.sf.json.JSONArray;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,10 +23,14 @@ 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.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.*;
 
 /**
  * bom单管理 controller
@@ -40,6 +49,9 @@ public class AdminPtsBomController {
     @Autowired
     private MachinePartsService machinePartsService;
 
+    @Autowired
+    private MachineVersionService machineVersionService;
+
     /**
      * 获取bom单列表
      *
@@ -67,6 +79,28 @@ public class AdminPtsBomController {
     }
 
     /**
+     * 获取bom单全部
+     *
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("bom:select:list")
+    @RequestMapping("/get_bom_list")
+    public ResponseJson getPtsBom(HttpServletRequest request, PtsBom ptsBom) {
+
+        List<PtsBom> bomList = ptsBomService.listPtsBom(ptsBom);
+
+        if (bomList != null) {
+            ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+            rj.addResponseKeyValue("bomList", bomList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+    }
+
+    /**
      * 跳转到添加bom单页面
      *
      * @return
@@ -79,7 +113,15 @@ public class AdminPtsBomController {
         //获取产品集合,用于页面选择产品
         List<Produce> produceList = produceService.getProduceList();
 
+        //获取软件集合,用于页面选择软件版本
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        if (produceList != null && produceList.size() > 0) {
+            ptsMachineVersion.setProduceId(produceList.get(0).getProduceId());
+        }
+        List<PtsMachineVersion> machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion);
+
         mv.addObject("produceList", produceList);
+        mv.addObject("machineVersionList", machineVersionList);
         return mv;
     }
 
@@ -112,6 +154,7 @@ public class AdminPtsBomController {
 
     /**
      * 验证方法
+     *
      * @param ptsBom
      * @return
      */
@@ -120,16 +163,44 @@ public class AdminPtsBomController {
         if (ptsBom.getBomName() == null || "".equals(ptsBom.getBomName())) {
             return false;
         }
-        if(ptsBom.getProduceId() == null){
+        if (ptsBom.getProduceId() == null) {
             return false;
         }
-        if(ptsBom.getBomVersion() == null || "".equals(ptsBom.getBomVersion())){
+        if (ptsBom.getBomVersion() == null || "".equals(ptsBom.getBomVersion())) {
             return false;
         }
         return flag;
     }
 
     /**
+     * 获取软件版本
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR)
+    @RequestMapping(value = "/get_listMachineVersion")
+    public ResponseJson listMachineVersion(HttpServletRequest request) {
+
+        String produceId = request.getParameter("produceId");
+        if (produceId == null || "".equals(produceId)) {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        ptsMachineVersion.setProduceId(Integer.valueOf(produceId));
+        List<PtsMachineVersion> machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion);
+
+        if (machineVersionList != null) {
+            ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+            rj.addResponseKeyValue("machineVersionList", machineVersionList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "ERROR", 500);
+        }
+    }
+
+    /**
      * 获取bom单,根据produce
      *
      * @return
@@ -241,9 +312,17 @@ public class AdminPtsBomController {
         ptsComponents.setComponentsStatus(1);
         List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents);
 
+        //获取软件集合,用于页面选择软件版本
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        if (produceList != null && produceList.size() > 0) {
+            ptsMachineVersion.setProduceId(ptsBom.getProduceId());
+        }
+        List<PtsMachineVersion> machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion);
+
         mv.addObject("produceList", produceList);
         mv.addObject("ptsBom", ptsBom);
         mv.addObject("ptsComponentsList", ptsComponentsList);
+        mv.addObject("machineVersionList", machineVersionList);
         return mv;
     }
 
@@ -306,4 +385,233 @@ public class AdminPtsBomController {
     }
 
 
+    /**
+     * 添加bom单  -- excel导入
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("bom:list:uploadFile")
+    @RequestMapping(value = "/upload_bom")
+    public ResponseJson uploadBom(@RequestParam("file") String file, HttpServletRequest request) throws Exception {
+        //mv.addObject("heads", ExcelUtil.readExcelHead(request.getServletContext().getRealPath(file)));
+        //mv.addObject("productUrl", file);
+        String path = request.getServletContext().getRealPath(file);
+
+        Map<String, Object> map = ExcelUtil.readExcelBom(path);
+        String bomName = String.valueOf(map.get("bomName"));
+        String produceName = String.valueOf(map.get("produceName"));
+        String bomVersion = String.valueOf(map.get("bomVersion"));  //硬件版本号
+        String machineVersionNo = String.valueOf(map.get("machineVersionNo"));   //软件版本号
+        String bomRemarks = String.valueOf(map.get("bomRemarks"));   //备注
+        List<PtsBomComponents> componentsList = (List<PtsBomComponents>) map.get("componentsList");
+
+        Produce produce = new Produce();
+        produce.setProduceName(produceName);
+        List<Produce> produceList = produceService.getProduceList(produce);
+        if (produceList == null || produceList.size() < 1) {
+            return new ResponseJson(500, "未查询到该产品或查询到多个产品,请重新填写", 500);
+        }
+
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        ptsMachineVersion.setMachineVersionNo(machineVersionNo);
+        ptsMachineVersion.setProduceId(produceList.get(0).getProduceId());
+        List<PtsMachineVersion> machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion);
+        if (machineVersionList == null || machineVersionList.size() < 1) {
+            return new ResponseJson(500, "未查询到该产品的软件版本或查询到多个软件版本,请重新填写", 500);
+        }
+
+        for (int i = 0; i < componentsList.size(); i++) {
+            PtsComponents ptsComponents = new PtsComponents();
+            ptsComponents.setComponentsNo(componentsList.get(i).getComponentsNo());
+            ptsComponents = machinePartsService.getmachineParts(ptsComponents);
+            if (ptsComponents == null) {
+                return new ResponseJson(500, "未查询到" + componentsList.get(i).getComponentsNo() + "编号的零件", 500);
+            }
+            componentsList.get(i).setComponentsId(ptsComponents.getComponentsId());
+        }
+
+        PtsBom bom = new PtsBom();
+        bom.setBomName(bomName);
+        bom.setProduceId(produceList.get(0).getProduceId());
+        bom.setBomVersion(bomVersion);
+        bom.setMachineVersionId(machineVersionList.get(0).getMachineVersionId());
+        bom.setBomRemarks(bomRemarks);
+        bom.setPtsBomComponentsList(componentsList);
+        Integer flag = ptsBomService.savePtsBom(bom);
+
+        if (flag < 1) {
+            return new ResponseJson(500, "添加失败", 500);
+        } else {
+            return new ResponseJson(200, "添加成功", 200);
+        }
+    }
+
+
+    /**
+     * 导入bom单
+     * **/
+   /* @ResponseBody
+    @RequiresPermissions("bom:list:uploadFile")
+    @RequestMapping(value = "/upload_bom")
+    public ResponseJson uploadBom(@RequestParam("sourceFile") MultipartFile sourceFile, HttpServletRequest request, HttpServletResponse response)throws IOException {
+        //判断文件是否为空
+        if (sourceFile==null) {
+            return new ResponseJson(500, "文件为空", 500);
+        }
+        //获取文件名
+        String name=sourceFile.getOriginalFilename();
+        long size =sourceFile.getSize();
+        if (name==null ||("").equals(name) && size==0) {
+            return new ResponseJson(500, "文件为空", 500);
+        }
+
+        //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型
+        CommonsMultipartFile cf= (CommonsMultipartFile)sourceFile; //获取本地存储路径
+        File file = new File(ResultInfo.PARTS_EXCEL);
+        //创建一个目录 (它的路径名由当前 File 对象指定,包括任一必须的父路径。)
+        if (!file.exists()) file.mkdirs();
+        //新建一个文件
+        File file1 = new File(ResultInfo.PARTS_EXCEL + new Date().getTime() + ".xls");
+        //将上传的文件写入新建的文件中
+        try {
+            cf.getFileItem().write(file1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        String path = file1.getCanonicalPath();
+
+        Map<String, Object> map = ExcelUtil.readExcelBom(path);
+        String bomName = String.valueOf(map.get("bomName"));
+        String produceName = String.valueOf(map.get("produceName"));
+        String bomVersion = String.valueOf(map.get("bomVersion"));  //硬件版本号
+        String machineVersionNo = String.valueOf(map.get("machineVersionNo"));   //软件版本号
+        String bomRemarks = String.valueOf(map.get("bomRemarks"));   //备注
+        List<PtsBomComponents> componentsList = (List<PtsBomComponents>) map.get("componentsList");
+
+        Produce produce = new Produce();
+        produce.setProduceName(produceName);
+        List<Produce> produceList = produceService.getProduceList(produce);
+        if (produceList == null || produceList.size() < 1) {
+            return new ResponseJson(500, "未查询到该产品(" + produceName +")或查询到多个产品,请重新填写", 500);
+        }
+
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        ptsMachineVersion.setMachineVersionNo(machineVersionNo);
+        ptsMachineVersion.setProduceId(produceList.get(0).getProduceId());
+        List<PtsMachineVersion> machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion);
+        if (machineVersionList == null || machineVersionList.size() < 1) {
+            return new ResponseJson(500, "未查询到相应产品的软件版本号("+ machineVersionNo +")或查询到多个软件版本,请重新填写", 500);
+        }
+
+        for (int i = 0; i < componentsList.size(); i++) {
+            PtsComponents ptsComponents = new PtsComponents();
+            ptsComponents.setComponentsNo(componentsList.get(i).getComponentsNo());
+            ptsComponents = machinePartsService.getmachineParts(ptsComponents);
+            if (ptsComponents == null) {
+                return new ResponseJson(500, "未查询到" + componentsList.get(i).getComponentsNo() + "编号的零件", 500);
+            }
+            componentsList.get(i).setComponentsId(ptsComponents.getComponentsId());
+        }
+
+        PtsBom bom = new PtsBom();
+        bom.setBomName(bomName);
+        bom.setProduceId(produceList.get(0).getProduceId());
+        bom.setBomVersion(bomVersion);
+        bom.setMachineVersionId(machineVersionList.get(0).getMachineVersionId());
+        bom.setBomRemarks(bomRemarks);
+        bom.setPtsBomComponentsList(componentsList);
+        Integer flag = ptsBomService.savePtsBom(bom);
+
+        if (flag < 1) {
+            return new ResponseJson(500, "添加失败", 500);
+        } else {
+            return new ResponseJson(200, "添加成功", 200);
+        }
+
+    }*/
+
+    /**
+     * bom单  -- excel导出
+     *
+     * @return
+     */
+    @RequiresPermissions("bom:list:uploadFile")
+    @RequestMapping(value = "/generation_excel")
+    public ModelAndView generationExcel(HttpServletRequest request) throws Exception {
+
+        String bomId = request.getParameter("bomId");
+        PtsBom ptsBom = new PtsBom();
+        if (bomId == null || "".equals(bomId)) {
+            throw new Exception("未获取到Bom单");
+        }
+        ptsBom.setBomId(Integer.valueOf(bomId));
+        ptsBom = ptsBomService.getPtsBom(ptsBom);
+
+        List<PtsBomComponents> ptsBomComponentsList = ptsBom.getPtsBomComponentsList();
+
+        // 准备model
+        Map<String, Object> model = new HashMap<String, Object>();
+        model.put("fileName", "Bom单");    // 下载文件名称
+
+        // 标题
+        List<String> t1 = new ArrayList<String>();
+        t1.add("bom单基本信息");
+        t1.add("");
+        t1.add("");
+        model.put("titles", t1);
+
+        List<List<Object>> countexts = new ArrayList<List<Object>>();
+        for (int i = 0; i <ptsBomComponentsList.size() + 8; i++) {
+            List<Object> row = new ArrayList<Object>();
+            switch (i) {
+                case 0:
+                    row.add("bom单名称");
+                    row.add(ptsBom.getBomName());
+                    break;
+                case 1:
+                    row.add("所属产品");
+                    row.add(ptsBom.getProduceName());
+                    break;
+                case 2:
+                    row.add("硬件版本号");
+                    row.add(ptsBom.getBomVersion());
+                    break;
+                case 3:
+                    row.add("软件版本号");
+                    row.add(ptsBom.getMachineVersionNo());
+                    break;
+                case 4:
+                    row.add("备注");
+                    row.add(ptsBom.getBomRemarks());
+                    break;
+                case 5:
+                    row.add("");
+                    row.add("");
+                    break;
+                case 6:
+                    row.add("Bom零件清单");
+                    row.add("");
+                    break;
+                case 7:
+                    row.add("零件编号");
+                    row.add("零件数量");
+                    break;
+                default:
+                    PtsBomComponents ptsBomComponents = ptsBomComponentsList.get(i-8);
+                    row.add(ptsBomComponents.getComponentsNo());
+                    row.add(ptsBomComponents.getBomComponentsQuantity()/100);
+                    break;
+            }
+            countexts.add(row);
+        }
+        model.put("varList", countexts);
+
+        ObjectExcelView erv = new ObjectExcelView();
+        ModelAndView mv = new ModelAndView(erv, model);
+        return mv;
+    }
+
+
 }

+ 26 - 4
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsSupplierController.java

@@ -140,6 +140,12 @@ public class AdminPtsSupplierController {
         if (!this.isValiData(ptsSupplier)  ) {
             return new ResponseJson(500, "请检查表单,再次提交", 500);
         }
+
+        PtsSupplier supplier = new PtsSupplier();
+        Integer number = machineSupplierService.getPtsSupplierNumber(supplier);
+        String no = String.format("%05d",number + 1);
+        ptsSupplier.setSupplierNumber(ptsSupplier.getSupplierNumber() + no);
+
         Integer flag = machineSupplierService.savePtsSupplier(ptsSupplier);
         if (flag < 1) {
             return new ResponseJson(500, "添加失败", 500);
@@ -163,36 +169,52 @@ public class AdminPtsSupplierController {
     }
 
     /**
-     * 跳转到修改批次页面
+     * 跳转到修改gongyignshnag
      *
      * @return
      */
     @RequiresPermissions("supplier:update:supplier")
     @RequestMapping(value = "/to_update_supplier")
-    public ModelAndView toUpdateBatch(Integer supplierId, HttpServletRequest request) {
+    public ModelAndView toUpdateSupplier(Integer supplierId, HttpServletRequest request) {
         ModelAndView mv = new ModelAndView("pts/supplier/update_supplier");
 
         PtsSupplier ptsSupplier = new PtsSupplier();
         ptsSupplier.setSupplierId(supplierId);
         ptsSupplier = machineSupplierService.getPtsSupplier(ptsSupplier);
 
+        if(ptsSupplier.getSupplierNumber() != null && !"".equals(ptsSupplier.getSupplierNumber())){
+            String no = ptsSupplier.getSupplierNumber();
+            String number = no.substring(3,4);
+            String serialNumber = no.substring(4,9);
+            ptsSupplier.setSupplierNumber(number);
+            ptsSupplier.setSerialNumber(serialNumber);
+        }
         mv.addObject("ptsSupplier", ptsSupplier);
         return mv;
     }
 
     /**
-     * 修改批次
+     * 修改gongyingshang
      *
      * @return
      */
     @ResponseBody
     @RequiresPermissions("supplier:add:supplier")
     @RequestMapping(value = "/update_supplier")
-    public ResponseJson updateBatch(PtsSupplier ptsSupplier, HttpServletRequest request) {
+    public ResponseJson updateSupplier(PtsSupplier ptsSupplier, HttpServletRequest request) {
 
         if (!this.isValiData(ptsSupplier)  ) {
             return new ResponseJson(500, "请检查表单,再次提交", 500);
         }
+
+        String supplierNumber = ptsSupplier.getSupplierNumber();
+        if(supplierNumber.length() == 4){
+            PtsSupplier supplier = new PtsSupplier();
+            Integer number = machineSupplierService.getPtsSupplierNumber(supplier);
+            String no = String.format("%05d",number + 1);
+            ptsSupplier.setSupplierNumber(ptsSupplier.getSupplierNumber() + no);
+        }
+
         Integer flag = machineSupplierService.updatePtsSupplier(ptsSupplier);
         if (flag < 1) {
             return new ResponseJson(500, "修改失败", 500);

+ 135 - 13
watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java

@@ -1,6 +1,8 @@
 package com.iamberry.rst.utils;
+
 import com.iamberry.rst.core.order.EfastOrder;
 import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.pts.PtsBomComponents;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.poi.hssf.usermodel.*;
@@ -15,6 +17,7 @@ import java.util.*;
 
 /**
  * Excel工具类
+ *
  * @author 献
  * @company 深圳爱贝源科技有限公司
  * @website www.iamberry.com
@@ -27,6 +30,7 @@ public class ExcelUtil {
 
     /**
      * 读取Excel文件头
+     *
      * @param filePath
      * @return
      */
@@ -39,7 +43,7 @@ public class ExcelUtil {
         }
         // 获取Workbook
         InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
-        Workbook wb  = null;
+        Workbook wb = null;
         if (filePath.endsWith("xls")) {
             wb = new HSSFWorkbook(inputStream);
         } else {
@@ -61,9 +65,11 @@ public class ExcelUtil {
 
         return heads;
     }
+
     /**
      * 读取Excel内容
      * 去除重复
+     *
      * @param filePath
      * @return
      */
@@ -75,7 +81,7 @@ public class ExcelUtil {
         }
         // 获取Workbook
         InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
-        Workbook wb  = null;
+        Workbook wb = null;
         if (filePath.endsWith("xls")) {
             wb = new HSSFWorkbook(inputStream);
         } else {
@@ -94,7 +100,8 @@ public class ExcelUtil {
         while (cells.hasNext()) {
             Cell cell = cells.next();
             if (cellName.trim().equals(cell.getStringCellValue().trim())) {
-                cellNum = cell.getColumnIndex();break;
+                cellNum = cell.getColumnIndex();
+                break;
             }
         }
         if (cellNum == -1) return null;
@@ -121,9 +128,123 @@ public class ExcelUtil {
         Collection<String> valueCollection = map.values();
         return new ArrayList<String>(valueCollection);
     }
+
+    /**
+     * 读取Excel内容
+     * 读取bom单excel的内容
+     *
+     * @param filePath
+     * @return
+     */
+    public static Map<String, Object> readExcelBom(String filePath) throws IOException {
+        // 判断文件是否存在
+        File file = new File(filePath);
+        if (!file.exists()) {
+            return null;
+        }
+        // 获取Workbook
+        InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
+        Workbook wb = null;
+        if (filePath.endsWith("xls")) {
+            wb = new HSSFWorkbook(inputStream);
+        } else {
+            wb = new XSSFWorkbook(inputStream);
+        }
+        inputStream.close();
+
+        // 获取Sheet
+        Sheet sheet = wb.getSheetAt(0);
+
+        //获取bom单名称
+        Row rows = sheet.getRow(1);// 获取行
+        Cell cell = null;
+        cell = rows.getCell(1);//列
+        String bomName = "";
+        if(cell != null){
+            bomName = cell.getStringCellValue();
+        }
+
+        //获取产品名称
+        rows = sheet.getRow(2);// 获取行
+        cell = rows.getCell(1);//列
+        String produceName = "";
+        if(cell != null){
+            produceName = cell.getStringCellValue();
+        }
+
+        //硬件版本号
+        rows = sheet.getRow(3);// 获取行
+        cell = rows.getCell(1);//列
+        String bomVersion = "";
+        if(cell != null){
+            bomVersion = cell.getStringCellValue();
+        }
+
+        //软件版本号
+        rows = sheet.getRow(4);// 获取行
+        cell = rows.getCell(1);//列
+        String machineVersionNo = "";
+        if(cell != null){
+            machineVersionNo = cell.getStringCellValue();
+        }
+
+        //备注
+        rows = sheet.getRow(5);// 获取行
+        cell = rows.getCell(1);//列
+        String bomRemarks = "";
+        if(cell != null){
+            bomRemarks = cell.getStringCellValue();
+        }
+
+        List<PtsBomComponents> componentsList = new ArrayList<PtsBomComponents>();
+        Iterator<Row> rowss = sheet.rowIterator();
+        int i = 0;
+        while (rowss.hasNext()) {
+            Row ro = rowss.next();
+            if(i>7){
+                Iterator<Cell> cells = ro.cellIterator();
+                if(ro == null){
+                    break;
+                }
+
+                int j=0;
+                PtsBomComponents bomComponents = new PtsBomComponents();
+                String componentsNo = "";
+                String bomComponentsQuantity = "";
+                while (cells.hasNext()) {
+                    Cell ce = cells.next();
+                    if (ce == null){
+                        break;
+                    }
+                    if(j == 0){
+                        componentsNo = ce.getStringCellValue();
+                    }else if(j == 1){
+                        bomComponentsQuantity = ce.getStringCellValue();
+                    }
+                    j++;
+                }
+                bomComponents.setComponentsNo(componentsNo);
+                bomComponents.setBomComponentsQuantity(Integer.valueOf(bomComponentsQuantity) * 100);
+                componentsList.add(bomComponents);
+            }
+            i++;
+        }
+
+        Map<String,Object> map = new HashMap<String, Object>();
+        map.put("bomName",bomName);
+        map.put("produceName",produceName);
+        map.put("bomVersion",bomVersion);
+        map.put("machineVersionNo",machineVersionNo);
+        map.put("bomRemarks",bomRemarks);
+        map.put("componentsList",componentsList);
+        return map;
+    }
+
+
     /**
      * 读取Excel内容
      * 不去除重复
+     *
      * @param filePath
      * @return
      */
@@ -135,7 +256,7 @@ public class ExcelUtil {
         }
         // 获取Workbook
         InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
-        Workbook wb  = null;
+        Workbook wb = null;
         if (filePath.endsWith("xls")) {
             wb = new HSSFWorkbook(inputStream);
         } else {
@@ -154,7 +275,8 @@ public class ExcelUtil {
         while (cells.hasNext()) {
             Cell cell = cells.next();
             if (cellName.trim().equals(cell.getStringCellValue().trim())) {
-                cellNum = cell.getColumnIndex();break;
+                cellNum = cell.getColumnIndex();
+                break;
             }
         }
         if (cellNum == -1) return null;
@@ -185,8 +307,8 @@ public class ExcelUtil {
                                             String[] infos, String tel, String name, String num,
                                             Map<String, ProductColor> price, String postType, String shopId)
             throws IOException {
-        Map<String,String> map = new HashMap<>();
-        for(String t : maps) {
+        Map<String, String> map = new HashMap<>();
+        for (String t : maps) {
             String[] temp = StringUtils.split(t, "_");
             map.put(temp[1], (temp[0]));
         }
@@ -198,7 +320,7 @@ public class ExcelUtil {
         }
         // 获取Workbook
         InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
-        Workbook wb  = null;
+        Workbook wb = null;
         if (filePath.endsWith("xls")) {
             wb = new HSSFWorkbook(inputStream);
         } else {
@@ -215,7 +337,7 @@ public class ExcelUtil {
         int telColumnIndex = -1;
         int productColumnIndex = -1;
         int numColumnIndex = -1;
-        int [] infoColumnIndex = new int[infos.length];
+        int[] infoColumnIndex = new int[infos.length];
         int infoCount = 0;
 
         // 读取数据
@@ -268,7 +390,7 @@ public class ExcelUtil {
                 order.setOrderAddressTel(userTel);                                                         // 读取tel
                 order.setOrderProductBarCode(map.get(getValue(temp.getCell(productColumnIndex))));         // 读取对应的产品id
                 order.setOrderNum(Integer.parseInt(getValue(temp.getCell(numColumnIndex))));               // 读取购买数量
-                if (infoColumnIndex.length == 1){
+                if (infoColumnIndex.length == 1) {
                     // 如果infoColumnIndex = 1, 则表示需要截取(可能是-、“ ”)
                     Cell cell = temp.getCell(infoColumnIndex[0]);
                     String addrInfo = getValue(cell);
@@ -290,12 +412,12 @@ public class ExcelUtil {
                     order.setOrderCity(addrs[1].trim());
                     order.setOrderArea(addrs[2].trim());
                     order.setOrderAddress(addrInfo.trim());
-                } else if (infoColumnIndex.length == 4){
+                } else if (infoColumnIndex.length == 4) {
                     order.setOrderProvince(getValue(temp.getCell(infoColumnIndex[0])).trim());
                     order.setOrderCity(getValue(temp.getCell(infoColumnIndex[1])).trim());
                     order.setOrderArea(getValue(temp.getCell(infoColumnIndex[2])).trim());
                     order.setOrderAddress(getValue(temp.getCell(infoColumnIndex[3])).trim());
-                } else if (infoColumnIndex.length == 3){
+                } else if (infoColumnIndex.length == 3) {
                     order.setOrderProvince(getValue(temp.getCell(infoColumnIndex[0])).trim());
                     order.setOrderCity(getValue(temp.getCell(infoColumnIndex[1])).trim());
                     order.setOrderArea(getValue(temp.getCell(infoColumnIndex[1])).trim());
@@ -333,7 +455,7 @@ public class ExcelUtil {
                 logger.error(e.getMessage(), e);
             }
             // 迭代
-            oid ++;
+            oid++;
         }
 
         // 写入

+ 2 - 1
watero-rst-web/src/main/resources/platform.properties

@@ -63,4 +63,5 @@ appId=wxc71b789fad06a2d7
 # appSecret-test
 appSecret=8a90e3ab0e2db7772f5f64e7ed2f4b98
 # appSecret-wateroPF
-#appSecret=e3b11ca050578ac8b794b510b16b2020
+#appSecret=e3b11ca050578ac8b794b510b16b2020
+SUCCESSINFO=SUCCESS

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

@@ -48,6 +48,8 @@
         .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
         .input-produce{height: 25px;line-height: 25px}
         .color-div{height: 30px;}
+
+        .table-td-color{}
     </style>
     <title>添加客诉 - 客诉管理 - RST</title>
 </head>
@@ -143,7 +145,7 @@
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <div class="clearfix">
-                        <input type="text" placeholder="搜索关键词" class="input-text  ac_input" name="questionId" value="" id="search_text" autocomplete="off" style="width:60%"><button type="button" class="btn btn-primary" id="search_button">搜索</button>
+                        <input type="text" placeholder="搜索关键词" class="input-text  ac_input" name="questionIdMsg" value="" id="search_text" autocomplete="off" style="width:60%"><button type="button" class="btn btn-primary" id="search_button">搜索</button>
                     </div>
                 </div>
 
@@ -159,11 +161,21 @@
                 </div>
 
             </div>
+
+            <div class="row cl">
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>问题标题:</label>
+                <div class="formControls col-5 col-sm-5">
+                    <input type="text" class="input-text" style="width: 625px;" name="describeTitle" id="describeTitle">
+                </div>
+            </div>
+
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>问题内容:</label>
                 <div class="formControls col-5 col-sm-5">
                     <input type="hidden" name="questionId" id="questionId">
-                    <script id="describeContentText" type="text/plain" style="width:650px;height:250px;"></script>
+                    <script id="describeContentText" type="text/plain" style="width:650px;height:250px;">
+                    </script>
+                    </script>
                     <input type="hidden" name="describeContent" id="describeContent">
                 </div>
             </div>
@@ -184,6 +196,13 @@
                 <div class="formControls col-10 col-sm-10">
                 </div>
             </div>
+
+            <input type="hidden" id="sendProdcues" name="sendProdcuesJson" value="">
+            <input type="hidden" id="sendFittings" name="sendFittingsJson" value="">
+            <input type="hidden" id="closedProdcues" name="closedProdcuesJson" value="">
+            <input type="hidden" id="closedFittings" name="closedFittingsJson" value="">
+
+
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1">处理类型:</label>
                 <div class="formControls col-10 col-sm-10 skin-minimal">
@@ -262,15 +281,18 @@
                         <#--<tr id="showOrderAddress">-->
                         <#--</tr>-->
                     </table>
+                    <input type="hidden" id="companyId" name="companyId" value="" >
+                    <input type="hidden" id="storeId" name="storeId" value="" >
+                    <input type="hidden" id="orderId" name="salesId" value="" >
                 </div>
             </div>
             <div class="row cl" id="recipientInfo" style="display: none;">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>收件信息:</label>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="sendName" name="sendName">
+                    <input type="text" class="input-text" value="" placeholder="填写收件人姓名" id="sendName" name="relationSendName" datatype="s1-20" errormsg="联系人格式不正确!" >
                 </div>
                 <div class="formControls col-2 col-sm-2">
-                    <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="sendTel" name="sendTel">
+                    <input type="text" class="input-text" value="" placeholder="填写收件人手机号" id="sendTel" name="relationSendTel" datatype="m" errormsg="联系人电话格式不正确!">
                 </div>
             </div>
             <div class="row cl" id="recipientAddress" style="display: none;">
@@ -278,28 +300,30 @@
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                         <select id="province" class="select">
+                         <select id="province" class="select" name="provinceNumber">
                          </select>
                      </span>
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                        <select id="city" class="select">
+                        <select id="city" class="select" name="cityNumber">
                         </select>
                     </span>
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                        <select id="district" class="select">
+                        <select id="district" class="select" name="areaNumber">
                         </select>
                     </span>
                 </div>
 
+                <input type="hidden" name="relationSendMergeAddress" id="relationSendMergeAddress">
+
             </div>
             <div class="row cl" id="recipientAddressText" style="display: none;">
                 <label class="form-label col-1 col-sm-1"></label>
                 <div class="formControls col-5 col-sm-5">
-                    <textarea name="" id="sendAddress" cols="" rows="2" class="textarea" placeholder="请填写详细地址"></textarea>
+                    <textarea name="relationSendAddress" id="sendAddress" cols="" rows="2" class="textarea" placeholder="请填写详细地址,最多支持50字符" onKeyUp="$.Huitextarealength(this,50)"></textarea>
                     <span id="addrssMsg"></span>
                 </div>
             </div>
@@ -307,7 +331,7 @@
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span><span id="relationProduct">换新产品</span>:</label>
                 <div class="formControls col-9 col-sm-9 text-c" id="produceSelect">
 
-                    <#--<table class="table table-border table-bg table-bordered">
+                    <table class="table table-border table-bg table-bordered">
                         <thead>
                             <tr class="text-c">
                                 <th style="text-align: center;" width="60">产品名称</th>
@@ -316,7 +340,7 @@
                             </tr>
                         </thead>
                         <tbody id="addProduct">
-                            <tr >
+                            <#--<tr >
                                 <td>冲奶机</td>
                                 <td>
                                     <div>
@@ -338,10 +362,10 @@
                                         <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
                                     </div>
                                 </td>
-                            </tr>
+                            </tr>-->
                         </tbody>
                     </table>
--->
+
                 </div>
             </div>
 
@@ -394,9 +418,9 @@
             </div>
             <div class="row cl" id="updateProduct" style="display: none;">
                 <label class="form-label col-1 col-sm-1">更换产品:</label>
-                <div class="formControls col-7 col-sm-7" id="back-product">
+                <div class="formControls col-9 col-sm-9" >
 
-                   <#-- <table class="table table-border table-bg table-bordered">
+                    <table class="table table-border table-bg table-bordered">
                         <thead>
                         <tr class="text-c">
                             <th style="text-align: center;" width="60">产品名称</th>
@@ -404,39 +428,18 @@
                             <th style="text-align: center;" width="60">产品配件</th>
                         </tr>
                         </thead>
-                        <tbody id="addProduct">
-                        <tr >
-                            <td>冲奶机</td>
-                            <td>
-                                <div>
-                                    白色
-                                    <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                </div>
-                                <div>
-                                    白色
-                                    <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                </div>
-                            </td>
-                            <td>
-                                <div>
-                                    水箱
-                                    <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                </div>
-                                <div>
-                                    水箱
-                                    <input type="text" class="input-text" style="width: 40px;text-align: center;" value="1" placeholder="" id="" name="">
-                                </div>
-                            </td>
-                        </tr>
+                        <tbody id="back-product">
+
                         </tbody>
-                    </table>-->
+                    </table>
                 </div>
 
             </div>
             <div class="row cl">
                 <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>处理描述:</label>
                 <div class="formControls col-5 col-sm-5">
-                    <script id="describeHandleDescText" type="text/plain" style="width:1024px;height:300px;"></script>
+                    <script id="describeHandleDescText" type="text/plain" style="width:650px;height:250px;"></script>
+                    </script>
                     <input type="hidden" id="describeHandleDesc" name="describeHandleDesc">
                 </div>
             </div>
@@ -454,34 +457,34 @@
                 </div>
             </div>
             <div id="needToVisit">
-                <div class="row cl" id="needToVisit">
+                <div class="row cl">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回访人:</label>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" class="input-text" value="" placeholder="填写回访人姓名" id="" name="visit.visitName">
+                        <input type="text" class="input-text" value="" placeholder="填写回访人姓名" id="" name="visitName"  datatype="s1-20" errormsg="回访人姓名格式不正确!" >
                     </div>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" class="input-text" value="" placeholder="填写回访人手机号" id="" name="visit.visitTel">
+                        <input type="text" class="input-text" value="" placeholder="填写回访人手机号" id="" name="visitTel" datatype="m" errormsg="回访人手机号码格式不正确!">
                     </div>
                 </div>
                 <div class="row cl">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回访日期:</label>
                     <div class="formControls col-2 col-sm-2">
-                        <input type="text" placeholder="请选择回访日期" id="datemin"  name="visit.visitDate" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly">
+                        <input type="text" placeholder="请选择回访日期" id="datemin"  name="visitDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly">
                     </div>
                 </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 skin-minimal">
                         <div class="radio-box">
-                            <input type="radio" id="visit-time-1" name="visit.visitTimeSelect">
+                            <input type="radio" id="visit-time-1" name="visitTimeSelect" value="1" checked>
                             <label for="visit-time-1">09:00-12:00</label>
                         </div>
                         <div class="radio-box">
-                            <input type="radio" id="visit-time-2" name="visit.visitTimeSelect">
+                            <input type="radio" id="visit-time-2" name="visitTimeSelect" value="2">
                             <label for="visit-time-2">12:00-14:00</label>
                         </div>
                         <div class="radio-box">
-                            <input type="radio" id="visit-time-3" name="visit.visitTimeSelect">
+                            <input type="radio" id="visit-time-3" name="visitTimeSelect" value="3">
                             <label for="visit-time-3">14:00-18:00</label>
                         </div>
                     </div>
@@ -489,7 +492,7 @@
                 <div class="row cl">
                     <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>提醒人:</label>
                     <div class="formControls col-4 col-sm-4"> <span class="select-box">
-                    <select name="" class="select" id="visitAdminId" name="visit.adminId">
+                    <select class="select" id="visitAdminId" name="visitAdminId">
 
                     </select>
                     </span>
@@ -532,6 +535,7 @@
 
 <script type="text/javascript">
     $(function(){
+
         $("#province").ProvinceCity();
         $('.skin-minimal input').iCheck({
             checkboxClass: 'icheckbox-blue',
@@ -553,8 +557,13 @@
 
         $("#questionId").val($(this).find(".quesId").val());
 
+        var title = $(this).prev().html();
+        $("#describeTitle").val(title);
+
+        //$("#questionId").val(.find(".quesId").val());
+
         //$("#answer-textarea").text();
-        //$(".dalog-ask").hide(); 隐藏qa
+        $(".dalog-ask").hide(); //隐藏qa
     });
 
     /*实时监听文本框-- 员工编号*/
@@ -654,14 +663,13 @@
         /*监听回访类型选择事件  是否需要回访  1:不需要回访  2:需要回复  */
         $("input[name='customerIsVisit']").change(function (){
             if($(this).val() == 2){
-                $("#needToVisit").show();
+                $("#needToVisit").css("display","block");
             }else{
-                $("#needToVisit").hide();
+                $("#needToVisit").css("display","none");
             }
         })
 
 
-
         /*监听回访选择客服的选择事件*/
         $(document).on('change', '#visitAdminId', function() {
             var visitAdminName = $("#visitAdminId").find("option:selected").text();
@@ -732,8 +740,11 @@
     }
 
     /*获取客服*/
+    var sysAminList;
     function getSysAdmin(){
-        var sysAminList;
+        if(sysAminList != null && sysAminList.length > 0){
+            return sysAminList
+        }
         $.ajax({
             type: "POST",
             data: {
@@ -1003,7 +1014,7 @@
     function initComplaintQuestionInfo(){
         var complaintId = $("[name='complaintId']").val();
         var smallClassId = $("[name='smallClassId']").val();;
-        var questionName = $("[name='questionId']").val();;;
+        var questionName = $("[name='questionIdMsg']").val();;;
         var html = "";
         $.ajax({
             type: "POST",
@@ -1057,6 +1068,8 @@
         var html = '';
         var address = ''; //地址
         var orderItemList = {};
+        var companyId = ''; //销售公司
+        var storeId = '';  //店铺
         $.ajax({
             type: "POST",
             data: {
@@ -1069,6 +1082,9 @@
                     for(var i=0;i<data.returnMsg.salesOrderList.length;i++){
                         var salesOrder = data.returnMsg.salesOrderList[i];
 
+                        companyId = salesOrder.salesCompanyId;
+                        storeId = salesOrder.salesStoreId;
+
                         var productsHtml = '';
                         var salesOrderItem = salesOrder.salesOrderItemList;
                         orderItemList = salesOrder.salesOrderItemList;
@@ -1108,6 +1124,10 @@
         $("#addressInfo").val(address);
         setAdress();  //显示地址
         setProduce(orderItemList); //显示产品
+
+        $("#companyId").val(companyId);
+        $("#storeId").val(storeId);
+        $("#orderId").val(orderId);
     }
 
     /**
@@ -1129,7 +1149,11 @@
         var proId = setPro(getAddress(addresList[0],0),1);
         var cityId = setCity(getAddress(addresList[1],1),proId,1);
         setDistrict(getAddress(addresList[2],2),cityId,1);
-        $("#sendAddress").val(addresList[3]);
+        var sendAddress = addresList[3];
+        if(addresList.length > 4){
+            sendAddress += addresList[4];
+        }
+        $("#sendAddress").val(sendAddress);
     }
 
     /***
@@ -1287,39 +1311,54 @@
 
             var colorHtml = '';
             if(colorList != null && colorList.length >0 ){
-                for(var k=0;k<orderItemList.length;k++){
-                    var item = orderItemList[k];
-                    for(var j=0;j<colorList.length;j++){
-                        var color = colorList[j];
-                        var number = "";
+                colorHtml += '<table style="height: 100%;">';
+                for(var j=0;j<colorList.length;j++){
+                    var number = "";
+                    var color = colorList[j];
+                    for(var k=0;k<orderItemList.length;k++){
+                        var item = orderItemList[k];
                         if(item.itemColorId == color.colorId){
                             number = item.itemNum;
                         }
-                        if(color.colorProductId == product.productId) {
-                            colorHtml += '<div class="color-div">' +
-                                    '<input type="hidden" value="' + color.colorId + '">' +
-                                    '<span>' + color.colorName + '<span>&nbsp;&nbsp;' +
-                                    '<input type="text" class="input-text input-produce input-pro-number" style="width: 40px;text-align: center;" value="'+ number +'" placeholder="" id="" name="">' +
-                                    '</div>';
-                        }
                     }
+                    var fristInputStyle = "border-top: 1px solid #ddd;";
+                    if(color.colorProductId == product.productId) {
+                        colorHtml += '<tr >' +
+                                '         <td width="85" style="border-left: none;text-align: center;'+ fristInputStyle +'">' + color.colorName + '</td>' +
+                                '         <td width="15" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + color.colorProductId + '">' +
+                                '             <input type="hidden" class="input-color-id" value="' + color.colorId + '">' +
+                                '             <input type="text" class="input-text input-color-number" style="width: 100%;" value="'+ number +'" placeholder="产品数量" id="" name="">' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
+                    }
+
                 }
+                colorHtml += '</table>';
             }else{
                 colorHtml += '<span>暂无该产品的颜色!<span>';
             }
 
             var produceFittingsHtml = '';
             if(produceFittings != null && produceFittings.length > 0){
+                produceFittingsHtml += '<table style="height: 100%;">';
                 for(var m=0;m<produceFittings.length;m++){
                     var produceFit = produceFittings[m];
-                    if(produceFit.productId == product.productId){
-                        produceFittingsHtml += '<div class="color-div">' +
-                                '<input type="hidden" value="' + produceFit.fittingsId +'">'+
-                                '<span>' + produceFit.fittingsName +'<span>&nbsp;&nbsp;'+
-                                '<input type="text" class="input-text input-produce input-pro-number" style="width: 40px;text-align: center;" value="" placeholder="" id="" name="">' +
-                                '</div>';
+                    if(produceFit.productId == product.productId) {
+                        var fristInputStyle = "border-top: 1px solid #ddd;";
+                        produceFittingsHtml += '<tr >' +
+                                '         <td width="85" style="border-left: none;text-align: center; '+ fristInputStyle +'">' + produceFit.fittingsName +'</td>' +
+                                '         <td width="15" style="'+ fristInputStyle +'">' +
+                                '             <input type="hidden" class="input-produce-id" value="' + produceFit.productId + '">' +
+                                '             <input type="hidden" class="input-fittings-id" value="' + produceFit.fittingsId +'">' +
+                                '             <input type="text" class="input-text input-fittings-number" style="width: 100%;" value="'+ number +'" placeholder="产品数量" id="" name="">' +
+                                '         </td>' +
+                                '     </tr>';
+                        fristInputStyle = "";
                     }
                 }
+                produceFittingsHtml += '</table>';
             }else{
                 produceFittingsHtml += '<span>暂无产品配件!<span>';
             }
@@ -1328,11 +1367,11 @@
                     '<span>'+  product.productName +'</span>';
 
             html += ' <tr >' +
-                    '    <td>'+ produceHtml +'</td>' +
-                    '    <td>' +
+                    '    <td width="80">'+ produceHtml +'</td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
                     colorHtml +
-                    '    </td>' +
-                    '    <td>' +
+                    '   </td>' +
+                    '    <td style="padding: 0px;text-align: center;">' +
                     produceFittingsHtml +
                     '    </td>' +
                     '</tr>';
@@ -1342,7 +1381,7 @@
 
         initCheck(); //因为需要展示产品,所以再次初始化多选框
 
-        setBackProduct();  //设置寄回产品
+        setBackProduct(html);  //设置寄回产品
 
         monitorProduct();   //监听产品变化
     }
@@ -1391,65 +1430,23 @@
     /*监听产品变化*/
     function monitorProduct(){
         /*产品数量*/
-        $(".input-pro-number").blur(function (){
+        $("#addProduct").find(".input-color-number").blur(function (){
+            setBackProduct();
+        })
+        /*产品配件*/
+        $("#addProduct").find(".input-fittings-number").blur(function (){
             setBackProduct();
         })
-    }
-
-    /*添加产品*/
-    function addProduct(){
-        var html = '';
-        var productList = getProduct();
-
-        var produceHtml = '<select name="" class="select" style="width: 100px;">';
-        for(var i=0;i<productList.length;i++){
-
-        }
-        html+= '<div class="formControls col-1 col-sm-1">\n' +
-                '                    <a><img src="${path}/common/images/cm/add-produce.png" width="21" height="21"></button></a>\n' +
-                '                </div>'
-
-        html += '<div class="skin-minimal">' +
-                '          <div class="check-box">' +
-                '              <input type="checkbox" id="checkbox-1" checked>' +
-                '' +
-                '              <label for="checkbox-1">净水机</label> -' +
-                '' +
-                '              <label for="checkbox-1">净水机</label>' +
-                '' +
-                '              <select name="" class="select" style="width: 100px;">' +
-                '                  <option value="0">黑色</option>' +
-                '                  <option value="1">白色</option>' +
-                '              </select>' +
-                '              <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>' +
-                '              <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-3" checked>' +
-                '              <label for="checkbox-2">T1</label>' +
-                '              <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-4" checked>' +
-                '              <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>'
-
     }
 
     /*设置寄回产品*/
-    function setBackProduct() {
-        var  html = '';
+    function setBackProduct(html) {
+        if(html != null && html != "" && typeof(html) != "undefined"){
+            $("#back-product").html(html);
+        }else{
 
-        $("#back-product").html(html);
+        }
     }
-
 </script>
 <script>
     $(function(){
@@ -1507,6 +1504,14 @@
         }
         /*----TDS收集模块--end-----*/
 
+        /* 地址拼接  */
+        var province = $("#province").find("option:selected").text();
+        var city = $("#city").find("option:selected").text();
+        var district = $("#district").find("option:selected").text();
+        var relationSendMergeAddress = province + "-" + city + "-" + district;
+        $("#relationSendMergeAddress").val(relationSendMergeAddress);
+        /* 地址拼接  */
+
         /*----问题描述- start --*/
         var describeContentText = UE.getEditor('describeContentText').getContent();
         $("#describeContent").val(describeContentText);
@@ -1517,7 +1522,75 @@
         $("#describeHandleDesc").val(describeHandleDescText);
         /*----处理描述--end-----*/
 
+        /* --- 类型:售后   处理结果:维修/换新/补发/退货/无理由退货 -- 处理产品 start---- */
+        var sendProdcues = new Array();  //寄出产品表
+        var sendFittings = new Array();
+        var closedProdcues = new Array();
+        var closedFittings = new Array();
+        $("#addProduct").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var product = new Object();
+                product.productId = $(this).parent().find(".input-produce-id").val();
+                product.colorId = $(this).parent().find(".input-color-id").val();
+                product.closedProdcueNumber = $(this).val();
+                //换新、维修,退货,无理由退货,
+                if(allCustomerType == 3 || allCustomerType == 4 || allCustomerType == 6 || allCustomerType == 7){
+                    closedProdcues.push(product);
+                }else if(allCustomerType == 5){
+                    sendProdcues.push(product);
+                }
+            }
+        })
+
+        $("#addProduct").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                var fittings = new Object();
+                fittings.productId = $(this).parent().find(".input-produce-id").val();
+                fittings.fittingsId = $(this).parent().find(".input-fittings-id").val();
+                fittings.sendFittingNumber = $(this).val();
+                //换新、维修,退货,无理由退货,
+                if(allCustomerType == 3 || allCustomerType == 4 || allCustomerType == 6 || allCustomerType == 7){
+                    closedFittings.push(fittings);
+                }else if(allCustomerType == 5){
+                    sendFittings.push(fittings);
+                }
+            }
+        })
+
+        $("#back-product").find(".input-color-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                //换新、维修,
+                if(allCustomerType == 3 || allCustomerType == 4){
+                    var fittings = new Object();
+                    fittings.productId = $(this).parent().find(".input-produce-id").val();
+                    fittings.fittingsId = $(this).parent().find(".input-fittings-id").val();
+                    fittings.sendFittingNumber = $(this).val();
+                    sendProdcues.push(fittings);
+                }
+            }
+        })
+
+        $("#back-product").find(".input-fittings-number").each(function(){
+            var number = $(this).val();
+            if(number != null && number != ""){
+                //换新、维修
+                if(allCustomerType == 3 || allCustomerType == 4){
+                    var fittings = new Object();
+                    fittings.productId = $(this).parent().find(".input-produce-id").val();
+                    fittings.fittingsId = $(this).parent().find(".input-fittings-id").val();
+                    fittings.sendFittingNumber = $(this).val();
+                    sendFittings.push(fittings);
+                }
+            }
+        })
 
+        $("#sendProdcues").val(JSON.stringify(sendProdcues));
+        $("#sendFittings").val(JSON.stringify(sendFittings));
+        $("#closedProdcues").val(JSON.stringify(closedProdcues));
+        $("#closedFittings").val(JSON.stringify(closedFittings));
     }
 
     /* 添加客诉 */

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

@@ -83,6 +83,7 @@
                             <option value="18">年糕妈妈</option>
                             <option value="19">快抱团</option>
                             <option value="20">北京北斗</option>
+                            <option value="21">凯叔</option>
                             <option value="22">上海-崔玉涛育学园</option>
                             <option value="23">简二家</option>
                         </select>

+ 6 - 6
watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/add_batch.ftl

@@ -81,7 +81,7 @@
             </div>
         </div>
 
-        <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">
@@ -90,7 +90,7 @@
 				</span>
                 <span id="batchSoftwareVersionIdMsg" style="color: red;"></span>
             </div>
-        </div>
+        </div>-->
 
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom单:</label>
@@ -206,7 +206,7 @@
         /*添加页面初始化,将根据产品的来获取bom和软件版本*/
         var produceId = $("[name='produceId']").val();
         getBomByProduce(produceId);
-        getVersionByProduce(produceId);
+        //getVersionByProduce(produceId);
 
         /*初始化一个颜色*/
         addBatchColor('','');
@@ -215,7 +215,7 @@
         $("[name='produceId']").change(function(){
             var produceId = $(this).val();
             getBomByProduce(produceId);
-            getVersionByProduce(produceId);
+           //getVersionByProduce(produceId);
         })
     })
     
@@ -275,7 +275,7 @@
     }
 
     /*根据产品获取软件版本*/
-    function getVersionByProduce(produceId) {
+   /* function getVersionByProduce(produceId) {
         $.ajax({
             type: "POST",
             data: {
@@ -302,7 +302,7 @@
             }
         });
     }
-
+*/
     /**
      * 添加颜色
      * colorName

+ 10 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/batch_list.ftl

@@ -42,7 +42,9 @@
                 </#if>
             </select>
             <input type="text" class="my-input"  style="width:150px" value="${batchNo!''}" placeholder="批次编号" id="batchNo" name="batchNo">
-            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="submit" class="my-btn-search" style="" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+
+            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出到Excel</button>
         </form>
     </div>
 
@@ -168,6 +170,13 @@
         });
     }
 
+    /**
+     * 导出零件到excel
+     */
+    function toExcel(){
+        window.location.href= "${path}/admin/batch/generation_excel";
+    }
+
 </script>
 </body>
 </html>

+ 4 - 4
watero-rst-web/src/main/webapp/WEB-INF/views/pts/batch/update_batch.ftl

@@ -101,7 +101,7 @@
             </div>
         </div>
 
-        <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">
@@ -115,7 +115,7 @@
 				</span>
                 <span id="batchSoftwareVersionIdMsg" style="color: red;"></span>
             </div>
-        </div>
+        </div>-->
 
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom单:</label>
@@ -288,7 +288,7 @@
     }
 
     /*根据产品获取软件版本*/
-    function getVersionByProduce(produceId) {
+    /*function getVersionByProduce(produceId) {
         $.ajax({
             type: "POST",
             data: {
@@ -314,7 +314,7 @@
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
-    }
+    }*/
 
     /*添加颜色*/
     function addBatchColor(colorName,colorQuantity) {

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

@@ -8,7 +8,6 @@
           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">
-    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
     <style>
         .add-list>li{margin: 10px 0;}
         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;}
@@ -33,7 +32,7 @@
 				<select class="select" size="1" name="produceId" datatype="*" errormsg="请选择产品">
                 <#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>
+                        <option value="${produce.produceId}" >${produce.produceName}</option>
                     </#list>
                 <#else>
                     <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
@@ -67,6 +66,22 @@
         </div>
 
         <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" id="machineVersionId" name="machineVersionId" datatype="*" errormsg="请选择软件版本">
+                    <#if machineVersionList?? &&  (machineVersionList?size > 0) >
+                        <#list machineVersionList as version>
+                            <option value="${version.machineVersionId}">${version.machineVersionName}(${version.machineVersionNo})</option>
+                        </#list>
+                    <#else>
+                        <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
+                    </#if>
+                    </select>
+				</span>
+            </div>
+        </div>
+
+        <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3">备注:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
@@ -142,7 +157,7 @@
                 $("#componentaAll").find("tr").each(function (){
                     var ptsBomComponents = {};
                     ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
-                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
+                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val() * 100;
                     ptsBomComponentsList.push(ptsBomComponents);
                 })
                 $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
@@ -163,7 +178,8 @@
 
     var allComponents;  //所有零件的集合
     var staticProduceId;  //产品id,用于判断产品更改
-    
+    var index;
+
     $(function () {
         /*添加页面初始化,添加一个零件选择框*/
         addComponents("#","");
@@ -174,8 +190,10 @@
 
         /*监听产品选择*/
         $("[name='produceId']").change(function(){
+
             var produceId = $(this).val();
             getBomByProduce(produceId);
+            getMachineVersion(produceId);
 
             delComponent(0,"all");
             addComponents("#","");
@@ -187,9 +205,13 @@
             getBom(bomId);
         })
     })
-    
+
     /* 添加零件 */
     function addComponents(componentsId,number) {
+        if(number == null || number == "" || typeof(number)=="undefined"){
+            number = 1;
+        }
+
         var tbody = $("#componentaAll");
 
         var produceId = $("[name='produceId']").val();
@@ -214,7 +236,8 @@
                 +'</select> '
                 +'</td> '
                 +'<td> '
-                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量只能为数字且不能超过999件!"> '
+                //+'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量只能为数字且不能超过1000件!"> '
+                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="/^([1-9]\\d{0,2}|0)(\\.\\d{0,2})?$/"  errormsg="零件数量只能为数字且不能超过1000件!"> '
                 +'</td> '
                 +'<td> '
                 +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
@@ -299,6 +322,9 @@
 
     /*获取bom信息,赋值在页面上*/
     function getBom(bomId){
+        var index = layer.load(1, {
+            shade: [0.5,'#fff'] //0.1透明度的白色背景
+        });
         var bom = new Object();
         $.ajax({
             type: "POST",
@@ -306,30 +332,56 @@
                 bomId : bomId
             },
             url: "${path}/admin/bom/get_bom",
-            async: false,
+            async: true,
             success: function(data){
                 if (data.returnCode == 200) {
                     bom = data.returnMsg.ptsBom;
+                    if(bom != null && bom.bomId != null){
+                        $("#bomName").val(bom.bomName);
+                        $("#bomRemarks").val(bom.bomRemarks);
+                        $("#bomVersion").val(bom.bomVersion);
+                        delComponent(0,"all");
+                        var components = bom.ptsBomComponentsList;
+                        if(components != null && components.length > 0){
+                            for(var i=0;i<components.length;i++){
+                                addComponents(components[i].componentsId,components[i].bomComponentsQuantity/100);
+                            }
+                        }
+                        layer.close(index);
+                    }else{
+                        defaultAllInput();
+                    }
                 }
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
+    }
 
-        if(bom != null && bom.bomId != null){
-            $("#bomName").val(bom.bomName);
-            $("#bomRemarks").val(bom.bomRemarks);
-            $("#bomVersion").val(bom.bomVersion);
-            delComponent(0,"all");
-            var components = bom.ptsBomComponentsList;
-            if(components != null && components.length > 0){
-                for(var i=0;i<components.length;i++){
-                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
+    /* 获取软件版本 */
+    function getMachineVersion(produceId){
+        var html = '';
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listMachineVersion",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200 && data.returnMsg.machineVersionList.length > 0) {
+                    for(var i=0;i<data.returnMsg.machineVersionList.length;i++){
+                        var version = data.returnMsg.machineVersionList[i];
+                        html += '<option value="'+ version.machineVersionId +'">'+ version.machineVersionName +'('+ version.machineVersionNo +')</option>';
+                    }
+                }else{
+                    html += '<option value="">暂时没有软件版本,需要到生产产品页面添加软件版本</option>';
                 }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
             }
-        }else{
-            defaultAllInput();
-        }
+        });
+        $("#machineVersionId").html(html);
     }
 
     /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/

+ 9 - 4
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_details.ftl

@@ -52,17 +52,22 @@
 
             <div class="input-box">
                 <span class="my-con-right content">所属产品:</span>&nbsp;&nbsp;
-                <span class="my-con-left content">${ptsBom.produceName}</span>
+                <span class="my-con-left content">${ptsBom.produceName ! ''}</span>
             </div>
 
             <div class="input-box">
                 <span class="my-con-right content">Bom名称:</span>&nbsp;&nbsp;
-                <span class="my-con-left content">${ptsBom.bomName}</span>
+                <span class="my-con-left content">${ptsBom.bomName ! ''}</span>
             </div>
 
             <div class="input-box">
                 <span class="my-con-right content">硬件版本:</span>&nbsp;&nbsp;
-                <span class="my-con-left content">${ptsBom.bomVersion}</span>
+                <span class="my-con-left content">${ptsBom.bomVersion ! ''}</span>
+            </div>
+
+            <div class="input-box">
+                <span class="my-con-right content">软件版本:</span>&nbsp;&nbsp;
+                <span class="my-con-left content">${ptsBom.machineVersionNo ! ''}</span>
             </div>
 
             <div class="input-box">
@@ -109,7 +114,7 @@
                                                 ${compont.componentsName}
                                             </td>
                                             <td>
-                                                ${bomComponents.bomComponentsQuantity}
+                                                ${bomComponents.bomComponentsQuantity/100 ! '0'}
                                             </td>
                                             <td>
                                                 <#if compont.componentsCost?? >${compont.componentsCost/100}</#if>

+ 107 - 6
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl

@@ -29,8 +29,8 @@
     <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
 <div class="page-container">
-    <div class="text-c">
-        <form action="${path}/admin/bom/_bom_list" method="post">
+    <div class="text-c" >
+        <form action="${path}/admin/bom/_bom_list" method="post" >
             <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddBom();">增加Bom</button>
             <select class="my-select" name="produceId" style="height: 36px;width: 150px">
                 <option value ="">所有产品</option>
@@ -43,7 +43,9 @@
            <#-- <input type="text" class="my-input"  style="width:150px" value="${bomId!}" placeholder="Bom单编号" id="bomId" name="bomId">-->
             <input type="text" class="my-input"  style="width:150px" value="${bomName!}" placeholder="Bom单名称" id="bomName" name="bomName">
             <input type="text" class="my-input"  style="width:150px" value="${bomRemarks!}" placeholder="Bom单备注" id="bomRemarks" name="bomRemarks">
-            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="submit" class="my-btn-search" style="cursor:pointer;" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <input class="my-btn-search" style="cursor:pointer;" data-loading-text="请勿重复提交" type="button" value="上传Excel" onClick="upFiles()">
+            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="downloadExcel();">下载模板</button>
         </form>
     </div>
 
@@ -55,6 +57,7 @@
             <th width="60">所属产品</th>
             <th width="100">bom名称</th>
             <th width="80">硬件版本</th>
+            <th width="80">软件版本</th>
             <th width="80">零件总数量</th>
             <th width="80">零件总成本(元)</th>
             <th width="80">零件总重(g)</th>
@@ -72,9 +75,10 @@
                             <td>${bom.produceName!''}</td>
                             <td>${bom.bomName!''}</td>
                             <td>${bom.bomVersion!''}</td>
-                            <td>${bom.componentsQuantity!'0'}</td>
-                            <td><#if bom.allComponentsCost?? >${bom.allComponentsCost/100}</#if></td>
-                            <td><#if bom.allComponentsWeight?? >${bom.allComponentsWeight}</#if></td>
+                            <td>${bom.machineVersionNo!''}</td>
+                            <td>${bom.componentsQuantity/100 !'0'}</td>
+                            <td><#if bom.allComponentsCost?? >${bom.allComponentsCost/10000}</#if></td>
+                            <td><#if bom.allComponentsWeight?? >${bom.allComponentsWeight/100}</#if></td>
                             <td>${bom.bomRemarks!''}</td>
                             <td>${(bom.bomUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>${(bom.bomCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
@@ -84,6 +88,9 @@
                                 </a>&nbsp;
                                 <a style="text-decoration:none" href="javascript:void(0);" title="查看bom单详情" onclick="admin_details_bom(${bom.bomId!''})">
                                     <i class="Hui-iconfont">&#xe665;</i>
+                                </a>&nbsp;
+                                <a style="text-decoration:none" href="javascript:void(0);" title="导出Excel" onclick="downloadEx(${bom.bomId!''})">
+                                    <i class="Hui-iconfont">&#xe640;</i>
                                 </a>
                             </td>
                         </tr>
@@ -97,6 +104,10 @@
 </div>
 <tfoot>
 <#include "/base/page_util.ftl">
+<script type="text/javascript" src="${path}/common/lib/ueditor/1.4.3/ueditor.config.js"></script>
+<script type="text/javascript" src="${path}/common/lib/ueditor/1.4.3/ueditor.all.min.js"> </script>
+<script type="text/javascript" src="${path}/common/lib/ueditor/1.4.3/lang/zh-cn/zh-cn.js"></script>
+<script type="text/plain" id="upload_ue"></script>
 </tfoot>
 <script>
     /**
@@ -122,6 +133,96 @@
         window.location.href= "${path}/admin/bom/to_details_bom?bomId="+bomId;
     }
 
+    var _editor;
+    $(function() {
+        //重新实例化一个编辑器,防止在上面的editor编辑器中显示上传的图片或者文件
+        _editor = UE.getEditor('upload_ue',{
+            initialFrameWidth : 375,
+            initialFrameHeight: 600
+        });
+        _editor.ready(function () {
+            _editor.setDisabled("attachment");//设置编辑器不可用
+            _editor.hide();//隐藏编辑器,因为不会用到这个编辑器实例,所以要隐藏
+            //侦听图片上传
+            _editor.addListener('beforeInsertImage', function (t, arg) {
+                console.log(arg[0].src);
+                $("#picture").attr("value", arg[0].src);//将地址赋值给相应的input,只去第一张图片的路径
+                $("#preview").attr("src", arg[0].src);  //图片预览
+            });
+            //侦听文件上传,取上传文件列表中第一个上传的文件的路径
+            _editor.addListener('afterUpfile', function (t, arg) {
+                console.log(arg[0].url);
+                var filePath = arg[0].url;
+                $.ajax({
+                    cache: true,
+                    type: "POST",
+                    data: {
+                    },
+                    contentType: false,
+                    processData: false,
+                    url: "${path}/admin/bom/upload_bom?file="+arg[0].url,
+                    async: false,
+                    success: function(data){
+                        if (data.resultCode == 200) {
+                            window.location.href = '${path}/admin/bom/_bom_list'
+                        }else{
+                            layer.msg(data.resultMsg, {icon: 2, time: 4000});
+                        }
+                    },
+                    error: function(XmlHttpRequest, textStatus, errorThrown){
+                        layer.msg('添加失败!', {icon: 2, time: 4000});
+                    }
+                });
+                //window.location.href=root_path + '/admin/bom/upload_bom?file='+arg[0].url;
+                $("#file").attr("value", _editor.options.filePath + arg[0].url);
+            });
+        });
+    });
+
+    //弹出文件上传的对话框
+    function upFiles() {
+        var myFiles = _editor.getDialog("attachment");
+        myFiles.open();
+    }
+
+    //弹出文件上传的对话框
+    /*function upPolicy() {
+        if($('#source_file').val().length > 0){
+            var formData = new FormData($( "#sourcefile" )[0]);
+            $.ajax({
+                cache: true,
+                type: "POST",
+                data: formData,
+                contentType: false,
+                processData: false,
+                url: "${path}/admin/bom/upload_bom",
+                async: false,
+                success: function(data){
+                    if (data.resultCode == 200) {
+                        window.location.href = '${path}/admin/bom/_bom_list'
+                    }else{
+                        layer.msg(data.resultMsg, {icon: 2, time: 4000});
+                    }
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+                    layer.msg('添加失败!', {icon: 2, time: 2000});
+                }
+            });
+        }else{
+            layer.msg('请先上传文件!', {icon: 2, time: 2000});
+        }
+    }*/
+
+    function downloadEx(bomId){
+        window.location.href= "${path}/admin/bom/generation_excel?bomId=" + bomId;
+    }
+
+    /**
+     * 下载模板
+     */
+    function downloadExcel(){
+        window.location.href= "${path}/common/images/uploadExcel/Bom单上传模板.xls";
+    }
 </script>
 </body>
 </html>

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

@@ -56,6 +56,22 @@
         </div>
 
         <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" id="machineVersionId" name="machineVersionId" datatype="*" errormsg="请选择软件版本">
+                    <#if machineVersionList?? &&  (machineVersionList?size > 0) >
+                        <#list machineVersionList as version>
+                            <option value="${version.machineVersionId}" <#if ptsBom.machineVersionId??><#if ptsBom.machineVersionId == version.machineVersionId >selected="selected" </#if></#if>>${version.machineVersionName}(${version.machineVersionNo})</option>
+                        </#list>
+                    <#else>
+                        <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
+                    </#if>
+                    </select>
+				</span>
+            </div>
+        </div>
+
+        <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3">备注:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
@@ -88,7 +104,7 @@
                                     </select>
                                 </td>
                                 <td>
-                                    <input type="text" class="input-text" value="${bomComponents.bomComponentsQuantity}" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量不能超过999件!">
+                                    <input type="text" class="input-text" value="${bomComponents.bomComponentsQuantity/100 ! ''}" id="" name="comNumber" placeholder="零件数量" datatype="/^([1-9]\d{0,2}|0)(\.\d{0,2})?$/" errormsg="零件数量不能超过1000件!">
                                 </td>
                                 <td>
                                     <a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> <i class="Hui-iconfont"></i> </a>
@@ -164,7 +180,7 @@
                 $("#componentaAll").find("tr").each(function (){
                     var ptsBomComponents = {};
                     ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
-                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
+                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val() * 100;
                     ptsBomComponentsList.push(ptsBomComponents);
                 })
                 $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
@@ -200,6 +216,10 @@
 
     /* 添加零件 */
     function addComponents(componentsId,number) {
+        if(number == null || number == "" || typeof(number)=="undefined"){
+            number = 1;
+        }
+
         var tbody = $("#componentaAll");
 
         if(allComponents == null){ //获取零件列表
@@ -223,7 +243,7 @@
                 +'</select> '
                 +'</td> '
                 +'<td> '
-                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量不能超过999件!"> '
+                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量"  datatype="/^([1-9]\\d{0,2}|0)(\\.\\d{0,2})?$/"  errormsg="零件数量不能超过1000件!"> '
                 +'</td> '
                 +'<td> '
                 +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
@@ -276,6 +296,9 @@
 
     /*获取bom信息,赋值在页面上*/
     function getBom(bomId){
+       var index = layer.load(1, {
+            shade: [0.1,'#fff'] //0.1透明度的白色背景
+        });
         var bom = new Object();
         $.ajax({
             type: "POST",
@@ -287,26 +310,52 @@
             success: function(data){
                 if (data.returnCode == 200) {
                     bom = data.returnMsg.ptsBom;
+                    if(bom != null && bom.bomId != null){
+                        $("#bomName").val(bom.bomName);
+                        $("#bomRemarks").val(bom.bomRemarks);
+                        $("#bomVersion").val(bom.bomVersion);
+                        delComponent(0,"all");
+                        var components = bom.ptsBomComponentsList;
+                        if(components != null && components.length > 0){
+                            for(var i=0;i<components.length;i++){
+                                addComponents(components[i].componentsId,components[i].bomComponentsQuantity/100);
+                            }
+                        }
+                    }else{
+                        defaultAllInput();
+                    }
+                    layer.close(index);
                 }
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
+    }
 
-        if(bom != null && bom.bomId != null){
-            $("#bomName").val(bom.bomName);
-            $("#bomRemarks").val(bom.bomRemarks);
-            $("#bomVersion").val(bom.bomVersion);
-            delComponent(0,"all");
-            var components = bom.ptsBomComponentsList;
-            if(components != null && components.length > 0){
-                for(var i=0;i<components.length;i++){
-                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
+    /* 获取软件版本 */
+    function getMachineVersion(produceId){
+        var html = '';
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listMachineVersion",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200 && data.returnMsg.machineVersionList.length > 0) {
+                    for(var i=0;i<data.returnMsg.machineVersionList.length;i++){
+                        var version = data.returnMsg.machineVersionList[i];
+                        html += '<option value="'+ version.machineVersionId +'">'+ version.machineVersionName +'('+ version.machineVersionNo +')</option>';
+                    }
+                }else{
+                    html += '<option value="">暂时没有软件版本,需要到生产产品页面添加软件版本</option>';
                 }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
             }
-        }else{
-            defaultAllInput();
-        }
+        });
+        $("#machineVersionId").html(html);
     }
 
     /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/device_list.ftl

@@ -30,7 +30,7 @@
             <input class="my-input" type="text" name="deviceNumber" value="${deviceNumber!}" placeholder="请输入设备编号"/>
             <input class="my-input" type="text" name="deviceName" value="${deviceName!}" placeholder="请输入设备名称"/>
             <input class="my-input" type="text" name="deviceRemake" value="${deviceRemake!}" placeholder="请输入备注"/>
-            <select class="my-select" name="deviceStatus" style="height: 30px;width: 150px">
+            <select class="my-select" name="deviceStatus" style="height: 36px;width: 150px">
                 <option value ="">全部</option>
                 <option value ="0" <#if deviceStatus??><#if deviceStatus == 0>selected="selected"</#if></#if>>停止使用</option>
                 <option value ="1" <#if deviceStatus??><#if deviceStatus == 1>selected="selected"</#if></#if>>正常使用</option>

+ 4 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/pts/employee/employee_list.ftl

@@ -32,16 +32,17 @@
     <div class="text-c">
         <form action="${path}/admin/employee/_employee_list" method="post">
             <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddEmployee();">增加员工</button>
-            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出员工到EXCEL</button>
+
             <input type="text" class="my-input"  style="width:150px" value="${employeeNo!}" placeholder="员工编号" id="employeeNo" name="employeeNo">
             <input type="text" class="my-input"  style="width:150px" value="${employeeName!}" placeholder="员工姓名" id="employeeName" name="employeeName">
             <input type="text" class="my-input"  style="width:150px" value="${employeeTel!}" placeholder="员工电话" id="employeeTel" name="employeeTel">
-            <select class="my-select" name="employeeState" style="height: 30px;width: 150px">
+            <select class="my-select" name="employeeState" style="height: 36px;width: 150px">
                 <option value ="">全部</option>
                 <option value ="1" <#if employeeState??><#if employeeState == 1>selected="selected"</#if></#if>>在职</option>
                 <option value ="0" <#if employeeState??><#if employeeState == 0>selected="selected"</#if></#if>>离职</option>
             </select>
-            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="submit" class="my-btn-search" style="cursor:pointer;" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出到Excel</button>
         </form>
     </div>
 

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

@@ -30,7 +30,7 @@
 </nav>
 <div class="page-container">
     <div class="text-c">
-        <form action="${path}/admin/machineParts/_parts_list" method="post" style="width: 55%;display: inline-block;">
+        <form action="${path}/admin/machineParts/_parts_list" method="post" style="">
             <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddParts();">添加机器零件</button>
 
             <select class="my-select" name="supplierId" id="supplierId" style="height: 36px;width: 130px">
@@ -43,18 +43,13 @@
                 <option value ="">暂无供应商,请到供应商列表添加供应商</option>
             </#if>
             </select>
-
-           <#-- <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>-->
             <input type="text" class="my-input"  style="width:80px" value="${componentsNo!}" placeholder="零件编号" id="componentsNo" name="componentsNo">
             <input type="text" class="my-input"  style="width:80px" 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>
+            <button type="submit" class="my-btn-search"  style="cursor:pointer;" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+
+            <button onClick="upFiles();" class="my-btn-search" style="cursor:pointer;" type="button">上传Excel</button>
+            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="downloadExcel();">下载模板</button>
+            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出到Excel</button>
         </form>
         <#--<form id="sourcefile" name="sourcefile" action=""  method="post" enctype="multipart/form-data" style="width: 42%;display: inline-block;">
             <input class="my-btn-search" data-loading-text="请勿重复提交" type="button" value="上传EXCEL" onClick="upPolicy()">
@@ -62,9 +57,6 @@
             <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出Excel</button>
             <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="downloadExcel();">下载模板</button>
         </form>-->
-        <button onClick="upFiles();" class="btn radius" style="background: #32a3d8;color: #fff;" type="button"><i class="Hui-iconfont">&#xe632;</i> 上传Excel</button>
-        <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="downloadExcel();">下载模板</button>
-        <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="toExcel();">导出Excel</button>
     </div>
 
     <div class="mt-20">
@@ -105,7 +97,7 @@
                                 <#if parts.componentsType == 2>五金件</#if>
                                 <#if parts.componentsType == 4>电子类</#if>
                                 <#if parts.componentsType == 5>线材</#if>
-                                <#if parts.componentsType == 6>包装</#if>
+                                <#if parts.componentsType == 6>辅材</#if>
                                 <#if parts.componentsType == 3>其他</#if>
                             </td>
                             <td>${parts.componentsMbsc!''}</td>
@@ -153,14 +145,13 @@
             _editor.addListener('afterUpfile', function (t, arg) {
                 console.log(arg[0].url);
                 /*window.location.href=root_path + '/admin/machineParts/excelAdd?sourceFile='+arg[0].url;*/
-                layer.msg('加载中', {icon: 16,time:500000});
                 $.ajax({
                     cache: true,
                     type: "POST",
-                    data: {"sourceFile":arg[0].url},
+                    data: {},
                     contentType: false,
                     processData: false,
-                    url: "${path}/admin/machineParts/excelAdd",
+                    url: "${path}/admin/machineParts/excelAdd?sourceFile="+arg[0].url,
                     async: false,
                     success: function(data){
                         if (data) {

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

@@ -53,12 +53,33 @@
 
         <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>
+              <div class="formControls col-xs-8 col-sm-9">
+                  <span class="select-box">
+                      <select class="select" size="1" name="componentsType" id="componentsType">
+                          <option value ="1">塑胶件</option>
+                          <option value ="2">五金件</option>
+                          <option value ="4">电子类</option>
+                          <option value ="5">线材</option>
+                          <option value ="6">辅材</option>
+                          <option value ="3">其他</option>
+                      </select>
+                  </span>
+              </div>
+          </div>
+
 		<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">
-				<input type="text" class="input-text" value=""  id="componentsNo" name="componentsNo" placeholder="请输入零件编号,支持数字、字母组合" onkeyup="this.value=this.value.replace(/[^\w]/g,'')" onpaste="this.value=this.value.replace(/[^\w]/g,'')">
+                <span  style="height: 30px;    width: 10%;float: left;line-height: 30px;"><span id="comType">220</span><span>&nbsp;-&nbsp;</span></span>
+				<input type="text" class="input-text" style="float: left;width: 90%;" value=""  id="comPontNo" name="comPontNo" placeholder="请输入零件编号,支持数字、字母组合" onkeyup="this.value=this.value.replace(/[^\w]/g,'')" onpaste="this.value=this.value.replace(/[^\w]/g,'')">
+                <input type="hidden" class="input-text"  value=""  id="componentsNo" name="componentsNo" >
+                <span style="display: block;padding-top: 35px;color: #e00;">零件编号后四位流水号,系统自动生成</span>
 			</div>
 		</div>
+
         <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">
@@ -143,19 +164,7 @@
                 <input type="text" class="input-text" value="" id="componentsMaterial" name="componentsMaterial" placeholder="请输入零件材料,支持1-30位字符">
             </div>
         </div>
-        <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">
-                <select class="select" size="1" name="componentsType" id="componentsType">
-                    <option value ="1">塑胶件</option>
-                    <option value ="2">五金件</option>
-                    <option value ="4">电子类</option>
-                    <option value ="5">线材</option>
-                    <option value ="6">包装</option>
-                    <option value ="3">其他</option>
-                </select>
-            </div>
-        </div>
+
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>MBSC:</label>
             <div class="formControls col-xs-8 col-sm-9">
@@ -194,6 +203,36 @@
 <script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/ajaxfileupload.js"></script>
 <script type="text/javascript">
 
+    $(function(){
+        $("#componentsType").change(function () {
+            var val = parseInt($(this).val());
+            var typeHtml = '';
+            switch (val){
+                case 1:
+                    typeHtml = 110;
+                    break;
+                case 2:
+                    typeHtml = 220;
+                    break;
+                case 4:
+                    typeHtml = 330;
+                    break;
+                case 5:
+                    typeHtml = 440;
+                    break;
+                case 6:
+                    typeHtml = 550;
+                    break;
+                case 3:
+                    typeHtml = 660;
+                    break;
+                default:
+                        break;
+            }
+            $("#comType").html(typeHtml);
+        })
+    })
+
     /*KindEditor.ready(function(K) {
         var editor = K.editor({
             fileManagerJson : '${path}/common/kingedit/jsp/file_manager_json.jsp',
@@ -286,6 +325,15 @@
                 return;
             }
 
+            var types = $("#comType").html();
+            var comPontNoOld = $("#comPontNo").val();
+            if(comPontNoOld.length > 5){
+                layer.msg('零件编号不能超过五位!', {icon: 2, time: 2000});
+                return;
+            }
+            var comPontNo = types + '-' + $("#comPontNo").val();
+            $("#componentsNo").val(comPontNo);
+
 			//$(form).ajaxSubmit();
             //var index = parent.layer.getFrameIndex(window.name);
 			//parent.$('.btn-refresh').click();

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

@@ -42,11 +42,32 @@
         <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>
+            <div class="formControls col-xs-8 col-sm-9">
+                <select class="select" size="1" name="componentsType" id="componentsType">
+                    <option value ="1"<#if ptsComponents.componentsType == 1>selected</#if>>塑胶件</option>
+                    <option value ="2"<#if ptsComponents.componentsType == 2>selected</#if>>五金件</option>
+                    <option value ="4"<#if ptsComponents.componentsType == 4>selected</#if>>电子类</option>
+                    <option value ="5"<#if ptsComponents.componentsType == 5>selected</#if>>线材</option>
+                    <option value ="6"<#if ptsComponents.componentsType == 6>selected</#if>>包装</option>
+                    <option value ="3"<#if ptsComponents.componentsType == 3>selected</#if>>其他</option>
+                </select>
+            </div>
+        </div>
+
 		<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">
-				<input type="text" class="input-text" value="${ptsComponents.componentsNo!''}"   id="componentsNo" name="componentsNo" placeholder="请输入零件编号,支持数字、字母组合" onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5w]/g,'')">
-			</div>
+                <span  style="height: 30px;    width: 10%;float: left;line-height: 30px;">
+                    <span id="comType"><#if ptsComponents.componentsType == 1>110</#if><#if ptsComponents.componentsType == 2>220</#if><#if ptsComponents.componentsType == 4>330</#if><#if ptsComponents.componentsType == 5>440</#if><#if ptsComponents.componentsType == 6>550</#if><#if ptsComponents.componentsType == 3>660</#if></span>
+                    <span>&nbsp;-&nbsp;</span>
+                </span>
+				<input type="text" class="input-text" style="float: left;width: 90%;" value="${ptsComponents.componentsNo!''}"   id="comPontNo" name="comPontNo" placeholder="请输入零件编号,支持数字、字母组合" onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5w]/g,'')">
+                <input type="hidden" class="input-text" style="" value=""   id="componentsNo" name="componentsNo" >
+                <input type="hidden" class="input-text" style="" value="${ptsComponents.serialNumber!''}"   id="serialNumber" name="serialNumber" >
+                <span style="display: block;padding-top: 35px;color: #e00;">零件编号后四位流水号,系统自动生成</span>
+            </div>
 		</div>
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件名称:</label>
@@ -119,20 +140,6 @@
             </div>
         </div>
         <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">
-                <select class="select" size="1" name="componentsType" id="componentsType">
-                    <option value ="1"<#if ptsComponents.componentsType == 1>selected</#if>>塑胶件</option>
-                    <option value ="2"<#if ptsComponents.componentsType == 2>selected</#if>>五金件</option>
-                    <option value ="4"<#if ptsComponents.componentsType == 4>selected</#if>>电子类</option>
-                    <option value ="5"<#if ptsComponents.componentsType == 5>selected</#if>>线材</option>
-                    <option value ="6"<#if ptsComponents.componentsType == 6>selected</#if>>包装</option>
-                    <option value ="3"<#if ptsComponents.componentsType == 3>selected</#if>>其他</option>
-                </select>
-            </div>
-        </div>
-        <div class="row cl">
-
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>MBSC:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <input type="text" class="input-text" value="${ptsComponents.componentsMbsc!''}"  id="componentsMbsc" name="componentsMbsc" placeholder="请输入MBSC">
@@ -171,6 +178,37 @@
 <script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/ajaxfileupload.js"></script>
 <script type="text/javascript">
 
+
+    $(function(){
+        $("#componentsType").change(function () {
+            var val = parseInt($(this).val());
+            var typeHtml = '';
+            switch (val){
+                case 1:
+                    typeHtml = 110;
+                    break;
+                case 2:
+                    typeHtml = 220;
+                    break;
+                case 4:
+                    typeHtml = 330;
+                    break;
+                case 5:
+                    typeHtml = 440;
+                    break;
+                case 6:
+                    typeHtml = 550;
+                    break;
+                case 3:
+                    typeHtml = 660;
+                    break;
+                default:
+                    break;
+            }
+            $("#comType").html(typeHtml);
+        })
+    })
+
     /*KindEditor.ready(function(K) {
         var editor = K.editor({
             fileManagerJson : '${path}/common/kingedit/jsp/file_manager_json.jsp',
@@ -258,7 +296,21 @@
                 layer.msg('零件成本不能小于0.1元!', {icon: 2, time: 2000});
                 return;
             }
-           var produceId = $("#produceId").val();
+
+            var comPontNoOld = $("#comPontNo").val();
+            if(comPontNoOld.length > 5){
+                layer.msg('零件编号不能超过五位!', {icon: 2, time: 2000});
+                return;
+            }
+            var types = $("#comType").html();
+            var serialNumber = $("#serialNumber").val();
+            var comPontNo = types + '-' + $("#comPontNo").val();
+            if(serialNumber != null && serialNumber != "" && typeof(serialNumber) != "undefined"){
+                comPontNo += "-" + serialNumber;
+            }
+            $("#componentsNo").val(comPontNo);
+
+            var produceId = $("#produceId").val();
            var oldProduceId =   $("#oldProduceId").val();
            var componentsStatus=$('input:radio[name="componentsStatus"]:checked').val();
            var oldComponentsStatus =   $("#oldComponentsStatus").val();

+ 33 - 10
watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/add_supplier.ftl

@@ -13,6 +13,7 @@
         .add-list>li{margin: 10px 0;}
         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;}
+        select{border: 1px solid rgba(0,0,0,.1);border-radius: 5px;padding:6px 35px 6px 5px;height: 32px;-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat !important;background-size:auto 100% !important;margin-right: 10px;width: 85px;}
     </style>
     <title>添加供应商 - 供应商管理 - RST</title>
 </head>
@@ -28,30 +29,48 @@
     <form action="${path}/admin/supplier/save_supplier" method="post" class="form form-horizontal" id="form-supplier-add">
 
         <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  style="height: 30px;    width: 10%;float: left;line-height: 30px;"><span id="comType">YNY</span></span>
+                <div class="input-box " style="">
+                    <select class="" style="width: 30%;" id="number" name="number">
+                        <option value="A" selected>A</option>
+                        <option value="B">B</option>
+                        <option value="C">C</option>
+                        <option value="D">D</option>
+                    </select>
+                    <span style="width: 30%;">后五位流水号系统自动生成</span>
+                </div>
+                <input type="hidden" class="input-text" value="" id="supplierNumber" name="supplierNumber" >
+
+            </div>
+        </div>
+
+        <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">
-				<input type="text" class="input-text" value="" id="supplierName" name="supplierName" placeholder="请输入1-30位的名称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,30}$/" errormsg="供应商名称请输入1-30位的中文、英文字母!">
+				<input type="text" class="input-text" value="" id="supplierName" name="supplierName" placeholder="请输入0-30位的名称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,30}$/" errormsg="供应商名称请输入0-30位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>供应商简称:</label>
+            <label class="form-label col-xs-4 col-sm-3">供应商简称:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="supplierAbbreviation" name="supplierAbbreviation" placeholder="请输入1-10位的简称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="供应商简称请输入1-10位的中文、英文字母!">
+                <input type="text" class="input-text" value="" id="supplierAbbreviation" name="supplierAbbreviation" placeholder="请输入0-10位的简称,支持中文、英文字母" datatype="/^\s*$/|/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="供应商简称请输入0-10位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人姓名:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人姓名:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="supplierContactPerson" name="supplierContactPerson" placeholder="请输入1-10位的联系人姓名,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="联系人姓名请输入1-10位的中文、英文字母!">
+                <input type="text" class="input-text" value="" id="supplierContactPerson" name="supplierContactPerson" placeholder="请输入0-10位的联系人姓名,支持中文、英文字母" datatype="/^\s*$/|/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="联系人姓名请输入0-10位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人电话:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人电话:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="supplierTel" name="supplierTel" placeholder="请输入联系人电话" datatype="m" errormsg="联系人电话格式不正确!">
+                <input type="text" class="input-text" value="" id="supplierTel" name="supplierTel" placeholder="请输入联系人电话" datatype="/^\s*$/|m" errormsg="联系人电话格式不正确!">
             </div>
         </div>
 
@@ -63,14 +82,14 @@
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人邮箱:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人邮箱:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="supplierEmail" name="supplierEmail" placeholder="请输入联系人邮箱" datatype="e" errormsg="联系人邮箱格式不正确!">
+                <input type="text" class="input-text" value="" id="supplierEmail" name="supplierEmail" placeholder="请输入联系人邮箱" datatype="/^\s*$/|e" errormsg="联系人邮箱格式不正确!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>供应商地址:</label>
+            <label class="form-label col-xs-4 col-sm-3">供应商地址:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="supplierAddress" id="supplierAddress" cols="" rows="" class="textarea"
                           placeholder="联系人地址,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" ></textarea>
@@ -103,6 +122,10 @@
             beforeCheck: function (curform) {  //验证通过之前执行的函数
             },
             beforeSubmit: function (curform) {  //验证通过之后执行的函数
+
+                var types = $("#comType").html();
+                var comPontNo = types + $("#number").val();
+                $("#supplierNumber").val(comPontNo);
             },
             callback: function (data) {//异步回调函数
                 if (data) {

+ 5 - 4
watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/supplier_list.ftl

@@ -35,16 +35,16 @@
             <input type="text" class="my-input"  style="width:150px" value="${supplierName!''}" placeholder="供应商名称" id="supplierName" name="supplierName">
             <input type="text" class="my-input"  style="width:150px" value="${supplierContactPerson!''}" placeholder="联系人姓名" id="supplierContactPerson" name="supplierContactPerson">
             <input type="text" class="my-input"  style="width:150px" value="${supplierTel!''}" placeholder="联系人电话" id="supplierTel" name="supplierTel">
-            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
-            <button type="button" style="cursor:pointer;" class="my-btn-search" onclick="derivationEcxcel();">导出excel</button>
+            <button type="submit" class="my-btn-search" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="button" class="my-btn-search" onclick="derivationEcxcel();">导出到Excel</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="50">供应商编号</th>
             <th width="50">供应商名称</th>
             <th width="60">供应商简称</th>
             <th width="100">联系人姓名</th>
@@ -61,6 +61,7 @@
             <#if page.dataList?? &&  (page.dataList?size > 0) >
                     <#list page.dataList as supplier>
                         <tr class="text-c">
+                            <td>${supplier.supplierNumber!''}</td>
                             <td>${supplier.supplierName!''}</td>
                             <td>${supplier.supplierAbbreviation!''}</td>
                             <td>${supplier.supplierContactPerson!''}</td>
@@ -82,7 +83,7 @@
                         </tr>
                     </#list>
             <#else>
-                <tr><td colspan="9" class="td-manage text-c" >暂时没有供应商,请添加!</td></tr>
+                <tr><td colspan="10" class="td-manage text-c" >暂时没有供应商,请添加!</td></tr>
             </#if>
         </tbody>
     </table>

+ 36 - 11
watero-rst-web/src/main/webapp/WEB-INF/views/pts/supplier/update_supplier.ftl

@@ -13,6 +13,7 @@
         .add-list>li{margin: 10px 0;}
         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;}
+        select{border: 1px solid rgba(0,0,0,.1);border-radius: 5px;padding:6px 35px 6px 5px;height: 32px;-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat !important;background-size:auto 100% !important;margin-right: 10px;width: 85px;}
     </style>
     <title>修改供应商 - 供应商管理 - RST</title>
 </head>
@@ -28,50 +29,69 @@
     <form action="${path}/admin/supplier/update_supplier" method="post" class="form form-horizontal" id="form-supplier-update">
         <input type="hidden" name="supplierId" id="supplierId" value="${ptsSupplier.supplierId!''}">
 
+
+        <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  style="height: 30px;    width: 10%;float: left;line-height: 30px;"><span id="comType">YNY</span></span>
+                <div class="input-box ">
+                    <select class="" style="width: 30%;" id="number" name="number">
+                        <option value="A" <#if ptsSupplier.supplierNumber??><#if ptsSupplier.supplierNumber == 'A'>selected</#if></#if>>A</option>
+                        <option value="B" <#if ptsSupplier.supplierNumber??><#if ptsSupplier.supplierNumber == 'B'>selected</#if></#if>>B</option>
+                        <option value="C" <#if ptsSupplier.supplierNumber??><#if ptsSupplier.supplierNumber == 'C'>selected</#if></#if>>C</option>
+                        <option value="D" <#if ptsSupplier.supplierNumber??><#if ptsSupplier.supplierNumber == 'D'>selected</#if></#if>>D</option>
+                    </select>
+                    <span style="width: 30%;">后五位流水号系统自动生成</span>
+                </div>
+                <input type="hidden" class="input-text" value="${ptsSupplier.serialNumber!''}" id="serialNumber" name="serialNumber" >
+                <input type="hidden" class="input-text" value="" id="supplierNumber" name="supplierNumber" >
+            </div>
+        </div>
+
         <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">
-				<input type="text" class="input-text" value="${ptsSupplier.supplierName!''}" id="supplierName" name="supplierName" placeholder="请输入1-30位的名称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,30}$/" errormsg="供应商名称请输入1-30位的中文、英文字母!">
+				<input type="text" class="input-text" value="${ptsSupplier.supplierName!''}" id="supplierName" name="supplierName" placeholder="请输入0-30位的名称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,30}$/" errormsg="供应商名称请输入0-30位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>供应商简称:</label>
+            <label class="form-label col-xs-4 col-sm-3">供应商简称:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="${ptsSupplier.supplierAbbreviation!''}" id="supplierAbbreviation" name="supplierAbbreviation" placeholder="请输入1-10位的简称,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="供应商简称请输入1-10位的中文、英文字母!">
+                <input type="text" class="input-text" value="${ptsSupplier.supplierAbbreviation!''}" id="supplierAbbreviation" name="supplierAbbreviation" placeholder="请输入0-10位的简称,支持中文、英文字母" datatype="/^\s*$/|/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="供应商简称请输入0-10位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人姓名:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人姓名:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="${ptsSupplier.supplierContactPerson!''}" id="supplierContactPerson" name="supplierContactPerson" placeholder="请输入1-10位的联系人姓名,支持中文、英文字母" datatype="/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="联系人姓名请输入1-10位的中文、英文字母!">
+                <input type="text" class="input-text" value="${ptsSupplier.supplierContactPerson!''}" id="supplierContactPerson" name="supplierContactPerson" placeholder="请输入0-10位的联系人姓名,支持中文、英文字母" datatype="/^\s*$/|/^[a-zA-Z\u4e00-\u9fa5]{1,10}$/" errormsg="联系人姓名请输入0-10位的中文、英文字母!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人电话:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人电话:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="${ptsSupplier.supplierTel!''}" id="supplierTel" name="supplierTel" placeholder="请输入联系人电话" datatype="m" errormsg="联系人电话格式不正确!">
+                <input type="text" class="input-text" value="${ptsSupplier.supplierTel!''}" id="supplierTel" name="supplierTel" placeholder="请输入联系人电话" datatype="/^\s*$/|m" errormsg="联系人电话格式不正确!">
             </div>
         </div>
 
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3">联系人座机:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="${ptsSupplier.supplierPhone!''}" id="supplierPhone" name="supplierPhone" placeholder="请输入联系人座机" datatype="/^\s*$/|/^0\d{2,3}-?\d{7,8}$/" errormsg="联系人座机格式不正确!">
+                <input type="text" class="input-text" value="${ptsSupplier.supplierPhone!''}" id="supplierPhone" name="supplierPhone" placeholder="请输入联系人座机" datatype="/^\s*$/|/^\s*$/|/^0\d{2,3}-?\d{7,8}$/" errormsg="联系人座机格式不正确!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>联系人邮箱:</label>
+            <label class="form-label col-xs-4 col-sm-3">联系人邮箱:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="${ptsSupplier.supplierEmail!''}" id="supplierEmail" name="supplierEmail" placeholder="请输入联系人邮箱" datatype="e" errormsg="联系人邮箱格式不正确!">
+                <input type="text" class="input-text" value="${ptsSupplier.supplierEmail!''}" id="supplierEmail" name="supplierEmail" placeholder="请输入联系人邮箱" datatype="/^\s*$/|e" errormsg="联系人邮箱格式不正确!">
             </div>
         </div>
 
         <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>供应商地址:</label>
+            <label class="form-label col-xs-4 col-sm-3">供应商地址:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="supplierAddress" id="supplierAddress" cols="" rows="" class="textarea"
                           placeholder="联系人地址,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" >${ptsSupplier.supplierAddress!''}</textarea>
@@ -104,6 +124,11 @@
             beforeCheck: function (curform) {  //验证通过之前执行的函数
             },
             beforeSubmit: function (curform) {  //验证通过之后执行的函数
+
+                var types = $("#comType").html();
+                var comPontNo = types + $("#number").val() + $("#serialNumber").val();
+                $("#supplierNumber").val(comPontNo);
+
             },
             callback: function (data) {//异步回调函数
                 if (data) {

二進制
watero-rst-web/src/main/webapp/common/images/uploadExcel/Bom单上传模板.xls


二進制
watero-rst-web/src/main/webapp/common/images/uploadExcel/零件上传模板.xls