Procházet zdrojové kódy

Merge remote-tracking branch 'liujiankang/master'

liujiankang před 7 roky
rodič
revize
41387ff467
31 změnil soubory, kde provedl 2369 přidání a 114 odebrání
  1. 2 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/Produce.java
  2. 1 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/ProduceProcess.java
  3. 17 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsDevice.java
  4. 13 4
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsEmployee.java
  5. 57 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/EquipmentService.java
  6. 10 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/ProduceService.java
  7. 29 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsEmployeeService.java
  8. 88 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/EquipmentServiceImpl.java
  9. 140 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/ProduceServiceImpl.java
  10. 31 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsEmployeeServiceImpl.java
  11. 56 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/EquipmentMapper.java
  12. 23 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ProduceMapper.java
  13. 27 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsEmployeeMapper.java
  14. 194 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/equipmentMapper.xml
  15. 143 14
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml
  16. 80 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml
  17. 29 6
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminProduceController.java
  18. 117 5
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsEmployeeController.java
  19. 250 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/EquipmentController.java
  20. 13 5
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/ProduceAppController.java
  21. 1 0
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  22. 145 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/add_device.ftl
  23. 113 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/device_list.ftl
  24. 107 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/update_device.ftl
  25. 519 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/update_process.ftl
  26. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/produce_list.ftl
  27. 49 22
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/save_produce.ftl
  28. 102 44
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/update_produce.ftl
  29. binární
      watero-rst-web/src/main/webapp/common/images/rili-1.png
  30. binární
      watero-rst-web/src/main/webapp/common/images/select-1.png
  31. 11 0
      wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

+ 2 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/Produce.java

@@ -18,9 +18,10 @@ public class Produce implements Serializable {
     private Integer produceStatus;          //产品状态
     private String produceRemake;           //产品备注
     private Date produceCreateTime;         //创建时间
-    private Integer produceType;            //产品类型 1.净水机 2.冲奶机
     private Date produceUpdateTime;         //修改时间
 
+    private Integer produceType;
+
     private Integer employeeId;            //员工id
 
     private List<ProduceProcess>  process = new ArrayList<ProduceProcess>();  //工序集合

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

@@ -17,7 +17,7 @@ public class ProduceProcess implements Serializable {
     private String processName;            //工序名称
     private Integer employeeId;            //员工id
     private Integer driveId;                //设备id
-    private Integer processStatus;         //工序状态0:停止使用;1:正常使用;
+    private Integer processStatus;         //工序状态  0:停止使用;1:正常使用;
     private Integer processType;           //工序类型  1:生产工序  2:修理工序
     private Integer processSort;           //工序排序
     private String processRemake;          //工序备注

+ 17 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsDevice.java

@@ -1,7 +1,12 @@
 package com.iamberry.rst.core.pts;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by Administrator on 2017/8/25.
@@ -11,12 +16,24 @@ public class PtsDevice implements Serializable{
     private Integer deviceId;//设备id
     private String deviceNumber;//设备编号
     private String deviceName;//设备名称
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date deviceDate;//购买日期
     private Integer deviceStatus;//设备状态
     private String deviceRemake;//设备备注
     private Date deviceCreateTime;//创建时间
     private Date deviceUpdateTime;//修改时间
 
+    private List<ProduceProcess> processList = new ArrayList<ProduceProcess>();//产品工序集合
+
+    public List<ProduceProcess> getProcessList() {
+        return processList;
+    }
+
+    public void setProcessList(List<ProduceProcess> processList) {
+        this.processList = processList;
+    }
+
     public Integer getDeviceId() {
         return deviceId;
     }

+ 13 - 4
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsEmployee.java

@@ -1,5 +1,8 @@
 package com.iamberry.rst.core.pts;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import javax.swing.*;
 import java.io.Serializable;
 import java.util.Date;
@@ -13,9 +16,15 @@ public class PtsEmployee implements Serializable{
     private String employeeNo; //员工编号
     private String employeeName; //员工姓名
     private String employeeTel; //员工电话
-    private Integer employeeState; //员工状态
-    private String employeeEntryDate; // 入职日期
+    private Integer employeeState; //员工状态  1:在职  0 离职
+
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date employeeEntryDate; // 入职日期
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date employeeDepartureDate;//离职日期
+
     private String employeePost; //员工岗位
     private String employeeDesc; //员工备注
     private Integer employeeClearPower; //是否拥有清除权限 0:否 1:是
@@ -62,11 +71,11 @@ public class PtsEmployee implements Serializable{
         this.employeeState = employeeState;
     }
 
-    public String getEmployeeEntryDate() {
+    public Date getEmployeeEntryDate() {
         return employeeEntryDate;
     }
 
-    public void setEmployeeEntryDate(String employeeEntryDate) {
+    public void setEmployeeEntryDate(Date employeeEntryDate) {
         this.employeeEntryDate = employeeEntryDate;
     }
 

+ 57 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/EquipmentService.java

@@ -1,7 +1,64 @@
 package com.iamberry.rst.faces.pts;
 
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.ProduceProcess;
+import com.iamberry.rst.core.pts.PtsDevice;
+import com.iamberry.rst.core.pts.PtsEmployee;
+import java.util.List;
+
 /**
  * Created by Administrator on 2017/8/29.
  */
 public interface EquipmentService {
+
+    /**
+     * 新增设备信息和修改工序信息
+     * @param device
+     * @return
+     */
+    boolean addDevice(PtsDevice device, String[] processIds);
+
+    /**
+     * 分页查询机器列表信息
+     * @param pageRequest
+     * @return
+     */
+    PagedResult<PtsDevice> listDevice(PageRequest<PtsDevice> pageRequest);
+
+    /**
+     * 查询机器列表信息不分页
+     * @param device
+     * @return
+     */
+    List<PtsDevice> listPtsDevice(PtsDevice device);
+
+    /**
+     * 修改设备信息
+     * @param device
+     * @return
+     */
+    Integer updateDevice(PtsDevice device);
+
+    /**
+     * 关联查询产品和产品工序
+     * @param produce
+     * @return
+     */
+    List<Produce> listProduct(Produce produce);
+
+    /**
+     * 获取员工集合
+     * @param employee
+     * @return
+     */
+    List<PtsEmployee> listEmployee(PtsEmployee employee);
+
+    /**
+     * 修改产品工序信息
+     * @param process
+     * @return
+     */
+    boolean updateProcessInfo(ProduceProcess process);
 }

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

@@ -15,7 +15,7 @@ public interface ProduceService {
     //获取生产产品列表
     List<Produce> getProduceList();
 
-    //获取生产产品,产品工序,工序节点 --
+    //获取生产产品,产品工序,工序节点 -- app
     List<Produce> getAllProduceList(Integer employeeId);
 
     //获取单个产品信息
@@ -33,10 +33,19 @@ public interface ProduceService {
     //获取所有的工序
     List<ProduceProcess> listProduceProcess(ProduceProcess produceProcess);
 
+    //获取所有的节点操作
+    List<ProcessNode> listProcessNode(ProcessNode processNode);
 
     //添加Produce
     Integer saveProduce(Produce produce);
 
+    //添加产品工序
+    Integer saveProcessNodeList(List<ProcessNode> processNodeList);
+
+    //修改produce
+    Integer updateProduce(Produce produce,String delProcessIds,String delNodeIds);
+
+
     /**
      * 关联查询产品和产品工序
      * @param produce

+ 29 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsEmployeeService.java

@@ -1,7 +1,12 @@
 package com.iamberry.rst.faces.pts;
 
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.faq.FAQDetails;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsEmployee;
 
+import java.util.List;
+
 /**
  * pts员工信息接口
  * Created by wangxiaoming on 2017/8/29.
@@ -18,4 +23,28 @@ public interface PtsEmployeeService {
      * @return
      */
     PtsEmployee getPtsEmployeeById(Integer employeeId);
+
+    /**
+     * 获取员工信息列表
+     * @param pageNO
+     * @param pageSize
+     * @param employee
+     * @param isTotalNum
+     * @return
+     */
+    PagedResult<PtsEmployee> getEmployeeList(int pageNO, int pageSize, PtsEmployee employee, boolean isTotalNum);
+
+    /**
+     * 添加员工
+     * @param employee
+     * @return
+     */
+    Integer saveEmployee(PtsEmployee employee);
+
+    /**
+     * 修改员工
+     * @param employee
+     * @return
+     */
+    Integer updateEmployee(PtsEmployee employee);
 }

+ 88 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/EquipmentServiceImpl.java

@@ -1,7 +1,94 @@
 package com.iamberry.rst.service.pts;
 
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.ProduceProcess;
+import com.iamberry.rst.core.pts.PtsDevice;
+import com.iamberry.rst.core.pts.PtsEmployee;
+import com.iamberry.rst.faces.pts.EquipmentService;
+import com.iamberry.rst.service.pts.mapper.EquipmentMapper;
+import com.iamberry.rst.service.pts.mapper.ProduceMapper;
+import com.iamberry.rst.util.PageUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Created by Administrator on 2017/8/29.
  */
-public class EquipmentServiceImpl {
+@Service
+public class EquipmentServiceImpl implements EquipmentService {
+
+    @Autowired
+    private EquipmentMapper equipmentMapper;
+    @Autowired
+    private ProduceMapper produceMapper;
+
+    @Transactional
+    @Override
+    public boolean addDevice(PtsDevice device, String[] processIds) {
+        boolean flag = true;
+        int num = equipmentMapper.addDevice(device);
+        if (num <= 0) {
+            flag = false;
+        }
+        /*List<ProduceProcess> processList = new ArrayList<ProduceProcess>();
+        if (processIds.length > 0) {
+            for (int i = 0;i < processIds.length;i++) {
+                ProduceProcess process = new ProduceProcess();
+                process.setProcessId(Integer.parseInt(processIds[i]));
+                process.setDriveId(device.getDeviceId());
+                processList.add(process);
+            }
+            int sum = produceMapper.updateProduceProcessList(processList);
+            if (sum <= 0) {
+                flag = false;
+            }
+        }*/
+        return flag;
+    }
+
+    @Override
+    public PagedResult<PtsDevice> listDevice(PageRequest<PtsDevice> pageRequest) {
+        PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
+        List<PtsDevice> deviceList = equipmentMapper.listDevice(pageRequest.getData());
+        return PageUtil.getPage(deviceList);
+    }
+
+    @Override
+    public List<PtsDevice> listPtsDevice(PtsDevice device) {
+        return equipmentMapper.listPtsDevice(device);
+    }
+
+    @Transactional
+    @Override
+    public Integer updateDevice(PtsDevice device) {
+        return equipmentMapper.updateDevice(device);
+    }
+
+    @Override
+    public List<Produce> listProduct(Produce produce) {
+        return equipmentMapper.listProduct(produce);
+    }
+
+    @Override
+    public List<PtsEmployee> listEmployee(PtsEmployee employee) {
+        return equipmentMapper.listEmployee(employee);
+    }
+
+    @Transactional
+    @Override
+    public boolean updateProcessInfo(ProduceProcess process) {
+        int num = equipmentMapper.updateProcessInfo(process);
+        if (num > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 }

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

@@ -9,7 +9,9 @@ import com.iamberry.rst.service.pts.mapper.ProduceMapper;
 import com.iamberry.rst.util.ProduceNoUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -65,18 +67,31 @@ public class ProduceServiceImpl implements ProduceService {
         return produceMapper.selectProcessList(produceProcess);
     }
 
+    //获取所有的节点操作
+    public List<ProcessNode> listProcessNode(ProcessNode processNode){
+        return produceMapper.listProcessNode(processNode);
+    }
+
     //添加产品
+    @Transactional
     public Integer saveProduce(Produce produce){
         produce.setProduceNo(ProduceNoUtil.getProduceNo());
         produce.setProduceStatus(1);
         int flag = produceMapper.saveProduce(produce);
         Integer produceId = produce.getProduceId(); // 获取产品主键
 
+        int sort = 0;   //专用排序字段
         for (int i=0; i<produce.getProcess().size();i++){
             produce.getProcess().get(i).setProduceId(produceId);    //产品id
             produce.getProcess().get(i).setProcessNo(ProduceNoUtil.getProcessNo(i));  //工序编号
             produce.getProcess().get(i).setProcessStatus(1);    //状态
-            produce.getProcess().get(i).setProcessSort(i);  //排序字段
+
+            if(produce.getProcess().get(i).getProcessType() == 2){      //修理工序的排序字段为99
+                produce.getProcess().get(i).setProcessSort(99);  //排序字段
+            }else{
+                produce.getProcess().get(i).setProcessSort(sort);  //排序字段
+                sort++;
+            }
 
             ProduceProcess produceProcess = produce.getProcess().get(i);
             this.saveProduceProcess(produceProcess);
@@ -99,11 +114,134 @@ public class ProduceServiceImpl implements ProduceService {
 
     //添加产品工序操作
     public Integer saveProcessNodeList(List<ProcessNode> processNodeList){
-        int flag = produceMapper.saveProcessNodeList(processNodeList);
+        int flag = 0;
+        if (processNodeList.size()>0)
+            flag = produceMapper.saveProcessNodeList(processNodeList);
+        return flag;
+    }
+
+    /**
+     * 修改产品
+     * @param produce
+     * @return
+     */
+    @Transactional
+    public Integer updateProduce(Produce produce,String delProcessIds,String delNodeIds){
+        //修改产品
+        int flag = produceMapper.updateProduce(produce);
+
+        //删除的工序
+        if (delProcessIds != null && !"".equals(delProcessIds)){
+            String delProcessId[] = delProcessIds.split(",");
+            this.delProcess(delProcessId);
+        }
+        //删除节点操作
+        if (delNodeIds != null && !"".equals(delNodeIds)){
+            String delNodeId[] = delNodeIds.split(",");
+            this.delNode(delNodeId);
+        }
+
+        Integer produceId = produce.getProduceId();
+
+        int sort = 0;   //专用排序字段
+
+        List<ProduceProcess> updateProcessList = new ArrayList<ProduceProcess>();
+        List<ProcessNode> updateNodeList = new ArrayList<ProcessNode>();
+        List<ProcessNode> addNodeList = new ArrayList<ProcessNode>();
+        for (int i=0; i<produce.getProcess().size();i++){
+
+            ProduceProcess produceProcess = produce.getProcess().get(i);
+            produceProcess.setProcessNo(ProduceNoUtil.getProcessNo(i));  //工序编号
+            if(produce.getProcess().get(i).getProcessType() == 2){      //修理工序的排序字段为99
+                produce.getProcess().get(i).setProcessSort(99);  //排序字段
+            }else{
+                produce.getProcess().get(i).setProcessSort(sort);  //排序字段
+                sort++;
+            }
+
+            // 新增的工序/操作的id值都为 0 ;
+            if(0 == produceProcess.getProcessId()){     //新增的节点
+                produce.getProcess().get(i).setProduceId(produceId);    //产品id
+                produce.getProcess().get(i).setProcessStatus(1);    //状态
+                this.saveProduceProcess(produceProcess);
+                Integer processId = produceProcess.getProcessId();  //获取工序主键
+                for(int j=0; j<produceProcess.getNodes().size();j++){
+                    produceProcess.getNodes().get(j).setProduceId(produceId);
+                    produceProcess.getNodes().get(j).setProcessId(processId);
+                    produceProcess.getNodes().get(j).setNodeNo(ProduceNoUtil.getNodeNo(j)); //节点编号
+                    addNodeList.add(produceProcess.getNodes().get(j));
+                }
+            }else{      //修改节点
+                Integer processId = produceProcess.getProcessId();
+                updateProcessList.add(produceProcess);
+                for(int j=0; j<produceProcess.getNodes().size();j++){
+                    ProcessNode processNode = produceProcess.getNodes().get(j);
+                    if(0 == processNode.getNodeId()){       //新增节点操作1
+                        processNode.setProduceId(produceId);
+                        processNode.setProcessId(processId);
+                        processNode.setNodeNo(ProduceNoUtil.getNodeNo(j));
+                        addNodeList.add(processNode);
+                    }else{                              //修改节点操作1
+                        processNode.setNodeNo(ProduceNoUtil.getNodeNo(j));
+                        updateNodeList.add(processNode);
+                    }
+                }
+            }
+        }
+        this.saveProcessNodeList(addNodeList);      //添加节点操作
+        this.updateProcessNodeList(updateNodeList);     //修改节点操作
+        this.updateProcessList(updateProcessList);    //修改工序
         return flag;
     }
 
+    /**
+     * 删除工序
+     * @return
+     */
+    public Integer delProcess(String delProcess[]){
+        List<ProduceProcess> produceProcessesList = new ArrayList<ProduceProcess>();
+        for (String processId : delProcess){
+            ProduceProcess produceProcess = new ProduceProcess();
+            produceProcess.setProcessId(Integer.valueOf(processId));
+            produceProcess.setProcessNo("#");       //删除的工序  编号为#
+            produceProcess.setProcessStatus(0);
+            produceProcessesList.add(produceProcess);
+        }
+        Integer flag = this.updateProcessList(produceProcessesList);
+        return flag;
+    }
 
+    /**
+     * 删除节点操作
+     * @param delNodeId
+     * @return
+     */
+    public Integer delNode(String delNodeId[]){
+        Integer flag = produceMapper.delNode(delNodeId);
+        return flag;
+    }
+
+    /**
+     * 修改工序
+     * @return
+     */
+    public Integer updateProcessList(List<ProduceProcess> produceProcessesList){
+        Integer flag = 0;
+        if (produceProcessesList.size()>0)
+            flag = produceMapper.updateProcessList(produceProcessesList);
+        return flag;
+    }
+
+    /**
+     * 修改节点操作
+     * @return
+     */
+    public Integer updateProcessNodeList(List<ProcessNode> updateNodeList){
+        Integer flag = 0;
+        if (updateNodeList.size()>0)
+            flag = produceMapper.updateProcessNodeList(updateNodeList);
+        return flag;
+    }
 
 
     @Override

+ 31 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsEmployeeServiceImpl.java

@@ -1,11 +1,17 @@
 package com.iamberry.rst.service.pts;
 
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.faq.FAQDetails;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsEmployee;
 import com.iamberry.rst.faces.pts.PtsEmployeeService;
 import com.iamberry.rst.service.pts.mapper.PtsEmployeeMapper;
+import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * pts员工信息接口实现
  * Created by wangxiaoming on 2017/8/29.
@@ -31,5 +37,30 @@ public class PtsEmployeeServiceImpl implements PtsEmployeeService {
         return ptsEmployeeMapper.getPtsEmployeeById(employeeId);
     }
 
+    @Override
+    public PagedResult<PtsEmployee> getEmployeeList(int pageNO, int pageSize,PtsEmployee employee, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        List<PtsEmployee> list = ptsEmployeeMapper.getPtsEmployeeList(employee);
+        return PageUtil.getPage(list);
+    }
+
+    /**
+     * 添加
+     * @param employee
+     * @return
+     */
+    public Integer saveEmployee(PtsEmployee employee){
+        Integer flag = ptsEmployeeMapper.saveEmployee(employee);
+        return flag;
+    }
 
+    /**
+     * 修改员工
+     * @param employee
+     * @return
+     */
+    public Integer updateEmployee(PtsEmployee employee){
+        Integer flag = ptsEmployeeMapper.updateEmployee(employee);
+        return flag;
+    }
 }

+ 56 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/EquipmentMapper.java

@@ -1,7 +1,63 @@
 package com.iamberry.rst.service.pts.mapper;
 
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.ProduceProcess;
+import com.iamberry.rst.core.pts.PtsDevice;
+import com.iamberry.rst.core.pts.PtsEmployee;
+
+import java.util.List;
+
 /**
  * Created by Administrator on 2017/8/29.
  */
 public interface EquipmentMapper {
+
+    /**
+     * 新增设备信息
+     * @param device
+     * @return
+     */
+    Integer addDevice(PtsDevice device);
+
+    /**
+     * 分页查询机器列表信息
+     * @param device
+     * @return
+     */
+    List<PtsDevice> listDevice(PtsDevice device);
+
+    /**
+     * 查询机器列表信息不分页
+     * @param device
+     * @return
+     */
+    List<PtsDevice> listPtsDevice(PtsDevice device);
+
+    /**
+     * 修改设备信息
+     * @param device
+     * @return
+     */
+    Integer updateDevice(PtsDevice device);
+
+    /**
+     * 关联查询产品和产品工序
+     * @param produce
+     * @return
+     */
+    List<Produce> listProduct(Produce produce);
+
+    /**
+     * 获取员工集合
+     * @param employee
+     * @return
+     */
+    List<PtsEmployee> listEmployee(PtsEmployee employee);
+
+    /**
+     * 修改产品工序信息
+     * @param process
+     * @return
+     */
+    Integer updateProcessInfo(ProduceProcess process);
 }

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

@@ -40,9 +40,12 @@ public interface ProduceMapper {
      */
     List<Produce> listSelectProduct(Produce produce);
 
-    //获取当前产品所有工序信息
+    //获取产品所有工序信息
     List<ProduceProcess> selectProcessList(ProduceProcess produceProcess);
 
+    //获取所有的节点操作
+    List<ProcessNode> listProcessNode(ProcessNode processNode);
+
     //添加产品
     Integer saveProduce(Produce produce);
 
@@ -51,4 +54,23 @@ public interface ProduceMapper {
 
     //添加工序节点
     Integer saveProcessNodeList(List<ProcessNode> processNodeList);
+
+    //修改产品
+    Integer updateProduce(Produce produce);
+
+    /**
+     * 修改工序/节点
+     */
+    Integer updateProcessList(List<ProduceProcess> produceProcesses);
+
+    /**
+     * 修改节点操作
+     * @return
+     */
+    Integer updateProcessNodeList(List<ProcessNode> updateNodeList);
+
+
+   //删除节点操作
+    Integer delNode(String delNodeId[]);
+
 }

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

@@ -1,7 +1,11 @@
 package com.iamberry.rst.service.pts.mapper;
 
+import com.iamberry.rst.core.faq.FAQDetails;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsEmployee;
 
+import java.util.List;
+
 /**
  * pts员工信息
  * Created by wangxiaoming on 2017/8/29.
@@ -9,11 +13,11 @@ import com.iamberry.rst.core.pts.PtsEmployee;
 public interface PtsEmployeeMapper {
 
     /**
-     * 获取员工信息
+     * 获取员工信息 需要确定该员工是唯一
      * @param ptsEmployee
      * @return
      */
-    PtsEmployee getPtsEmployee(PtsEmployee ptsEmployee);
+     PtsEmployee getPtsEmployee(PtsEmployee ptsEmployee);
 
     /**
      * 根据id查询单个员工信息
@@ -21,4 +25,25 @@ public interface PtsEmployeeMapper {
      * @return
      */
     PtsEmployee getPtsEmployeeById(Integer employeeId);
+
+    /**
+     * 获取员工信息列表
+     * @param employee
+     * @return
+     */
+    List<PtsEmployee> getPtsEmployeeList(PtsEmployee employee);
+
+    /**
+     * 添加员工
+     * @param employee
+     * @return
+     */
+    Integer saveEmployee(PtsEmployee employee);
+
+    /**
+     * 修改员工
+     * @param employee
+     * @return
+     */
+    Integer updateEmployee(PtsEmployee employee);
 }

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

@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.rst.service.pts.mapper.EquipmentMapper">
+
+    <!-- 分页查询机器列表信息 -->
+    <select id="listDevice" parameterType="PtsDevice" resultMap="deviceMap">
+        SELECT
+            device_id,
+            device_number,
+            device_name,
+            device_date,
+            device_status,
+            device_remake,
+            device_create_time,
+            device_update_time
+        FROM
+        tb_rst_pts_device
+        <where>
+            <if test="deviceNumber != null">
+                device_number like CONCAT('%',#{deviceNumber},'%')
+            </if>
+            <if test="deviceName != null">
+                and device_name like CONCAT('%',#{deviceName},'%')
+            </if>
+            <if test="deviceStatus != null">
+                and device_status = #{deviceStatus}
+            </if>
+            <if test="deviceRemake != null">
+                and device_remake like CONCAT('%',#{deviceRemake},'%')
+            </if>
+            <if test="deviceId != null">
+                and device_id = #{deviceId}
+            </if>
+        </where>
+    </select>
+
+    <resultMap type="PtsDevice" id="deviceMap">
+        <id column="device_id" property="deviceId"/>
+        <result column="device_number" property="deviceNumber"/>
+        <result column="device_name" property="deviceName"/>
+        <result column="device_date" property="deviceDate"/>
+        <result column="device_status" property="deviceStatus"/>
+        <result column="device_remake" property="deviceRemake"/>
+        <result column="device_create_time" property="deviceCreateTime"/>
+        <result column="device_update_time" property="deviceUpdateTime"/>
+        <collection property="processList" column="device_id" ofType="ProduceProcess" select="listProcess"/>
+    </resultMap>
+
+    <select id="listProcess" parameterType="Integer" resultType="ProduceProcess">
+        select
+            t.produce_name produceName,
+            p.process_id processId,
+            p.process_name processName
+        from
+            tb_rst_pts_produce_process p
+        LEFT JOIN tb_rst_pts_produce t ON p.produce_id = t.produce_id
+        <where>
+              drive_id = #{driveId}
+        </where>
+    </select>
+
+    <!-- 获取设备集合,不分页 -->
+    <select id="listPtsDevice" parameterType="PtsDevice" resultType="PtsDevice">
+      SELECT
+            *
+      FROM
+        tb_rst_pts_device
+    <where>
+      <if test="deviceId != null">
+          device_id = #{deviceId}
+      </if>
+      <if test="deviceStatus != null">
+          and device_status = #{deviceStatus}
+      </if>
+    </where>
+    </select>
+
+    <!-- 新增设备信息 -->
+    <insert id="addDevice" parameterType="PtsDevice"
+            useGeneratedKeys="true" keyProperty="deviceId">
+        insert into tb_rst_pts_device
+        (
+          device_number,device_name,device_date,device_status,
+          device_remake,device_create_time
+        )
+        VALUES
+        (
+          #{deviceNumber},#{deviceName},#{deviceDate},#{deviceStatus},
+          #{deviceRemake},NOW()
+        )
+    </insert>
+
+    <!-- 修改设备信息 -->
+    <update id="updateDevice" parameterType="PtsDevice">
+        update
+          tb_rst_pts_device
+          <set>
+              <if test="deviceNumber != null">
+                  device_number = #{deviceNumber},
+              </if>
+              <if test="deviceName != null">
+                  device_name = #{deviceName},
+              </if>
+              <if test="deviceDate != null">
+                  device_date = #{deviceDate},
+              </if>
+              <if test="deviceStatus != null">
+                  device_status = #{deviceStatus},
+              </if>
+              device_remake = #{deviceRemake}
+          </set>
+        <where>
+            device_id = #{deviceId}
+        </where>
+    </update>
+
+    <!-- 关联查询产品和产品工序 -->
+    <select id="listProduct" parameterType="Produce" resultMap="produceMap">
+        SELECT
+        produce_id,
+        produce_no,
+        produce_name,
+        produce_status,
+        produce_remake,
+        produce_create_time,
+        produce_update_time
+        FROM
+        tb_rst_pts_produce
+    </select>
+
+    <resultMap type="Produce" id="produceMap">
+        <id column="produce_id" property="produceId"/>
+        <result column="produce_no" property="produceNo"/>
+        <result column="produce_name" property="produceName"/>
+        <result column="produce_status" property="produceStatus"/>
+        <result column="produce_remake" property="produceRemake"/>
+        <result column="produce_create_time" property="produceCreateTime"/>
+        <result column="produce_update_time" property="produceUpdateTime"/>
+        <collection property="process" column="produce_id" ofType="ProduceProcess" select="listProduceProcess"/>
+    </resultMap>
+
+    <select id="listProduceProcess" parameterType="Integer" resultType="ProduceProcess">
+       SELECT
+		ts.process_id AS processId,
+		ts.produce_id AS produceId,
+		ts.process_no AS processNo,
+		ts.process_name AS  processName,
+		ts.employee_id AS employeeId,
+		ts.drive_id AS  driveId,
+		ts.process_status AS processStatus,
+		ts.process_sort AS processSort,
+		ts.process_remake AS processRemake,
+		ts.process_create_time AS processCreateTime,
+		ts.process_update_time AS processUpdateTime,
+		d.device_name AS deviceName,
+		e.employee_name AS employeeName
+        FROM
+            tb_rst_pts_produce_process ts
+        LEFT JOIN tb_rst_pts_device d ON ts.drive_id = d.device_id
+        LEFT JOIN tb_rst_pts_employee e ON ts.employee_id = e.employee_id
+        WHERE
+          ts.produce_id = #{produceId}
+    </select>
+
+    <!-- 获取员工集合 -->
+    <select id="listEmployee" parameterType="PtsEmployee" resultType="PtsEmployee">
+        select
+          *
+        from
+          tb_rst_pts_employee
+        <where>
+            <if test="employeeState != null">
+                employee_state = #{employeeState}
+            </if>
+        </where>
+    </select>
+
+    <!-- 修改产品工序信息 -->
+    <update id="updateProcessInfo" parameterType="ProduceProcess">
+      update
+        tb_rst_pts_produce_process
+      <set>
+          <if test="employeeId != null">
+              employee_id = #{employeeId},
+          </if>
+          <if test="driveId != null">
+              drive_id = #{driveId}
+          </if>
+      </set>
+      <where>
+          process_id = #{processId}
+      </where>
+    </update>
+</mapper>

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

@@ -5,6 +5,7 @@
     <select id="getProduceList" parameterType="Produce" resultType="Produce">
         SELECT
             tb_rst_pts_produce.produce_id AS produceId,
+            tb_rst_pts_produce.produce_no AS produceNo,
             tb_rst_pts_produce.produce_name AS produceName,
             tb_rst_pts_produce.produce_status AS  produceStatus,
             tb_rst_pts_produce.produce_remake AS produceRemake,
@@ -66,8 +67,8 @@
         ts.employee_id
         FROM
         tb_rst_pts_produce tp
-        LEFT JOIN tb_rst_pts_produce_process ts ON tp.produce_id = ts.produce_id AND ts.employee_id = #{employeeId}
-        WHERE  tp.produce_status = 1
+        LEFT JOIN tb_rst_pts_produce_process ts ON tp.produce_id = ts.produce_id
+        WHERE  tp.produce_status = 1  AND ts.employee_id = #{employeeId}
         GROUP BY tp.produce_id
     </select>
     <select id="getProduceProcessList" parameterType="java.util.HashMap" resultMap="ProduceProcessMap">
@@ -191,15 +192,22 @@
 
     <update id="updateProduce" parameterType="Produce" >
         UPDATE tb_rst_pts_produce
-        SET
-        produce_no = #{produceNo},
-        produce_name = #{produceName},
-        produce_status = #{produceStatus},
-        produce_remake = #{produceRemake},
-        produce_create_time = #{produceCreateTime},
-        produce_update_time = #{produceUpdateTime}
+        <set>
+            <if test="produceNo !=null and produceNo !=''">
+                produce_no = #{produceNo},
+            </if>
+            <if test="produceName !=null and produceName !=''">
+                produce_name = #{produceName},
+            </if>
+            <if test="produceStatus !=null and produceStatus !=''">
+                produce_status = #{produceStatus},
+            </if>
+            <if test="produceRemake !=null and produceRemake !=''">
+                produce_remake = #{produceRemake},
+            </if>
+        </set>
         WHERE
-        produce_id = #{produceId}
+            produce_id = #{produceId}
     </update>
 
     <insert id="saveProcessNodeList" parameterType="java.util.List" useGeneratedKeys="true">
@@ -210,20 +218,96 @@
        </foreach>
     </insert>
 
+    <update id="updateProcessNodeList" parameterType="java.util.List">
+        <foreach collection="list" item="node" index="index" separator=";" open="" close="">
+            update tb_rst_pts_process_node
+            <set>
+                <if test="node.nodeNo !=null and node.nodeNo !=''">
+                    node_no = #{node.nodeNo},
+                </if>
+                <if test="node.nodeStatus !=null and node.nodeStatus !=''">
+                    node_status = #{node.nodeStatus},
+                </if>
+                <if test="node.nodeDes !=null and node.nodeDes !=''">
+                    node_des = #{node.nodeDes}
+                </if>
+            </set>
+            where  node_id = #{node.nodeId}
+        </foreach>
+    </update>
+
     <insert id="saveProduceProcess" parameterType="ProduceProcess" useGeneratedKeys="true" keyProperty="processId">
         insert into tb_rst_pts_produce_process (process_id,produce_id ,process_no ,process_name ,employee_id ,drive_id ,process_status ,process_type,process_sort ,process_remake )
         values
             (#{processId},#{produceId},#{processNo},#{processName},#{employeeId},#{driveId},#{processStatus},#{processType},#{processSort},#{processRemake})
     </insert>
 
-    <update id="updateProduceProcessList" parameterType="java.util.ArrayList" >
-        <foreach collection="process" item="pro" index="index" separator=";" open="" close="">
+    <update id="updateProcessList" parameterType="java.util.ArrayList" >
+        <foreach collection="list" item="pro" index="index" separator=";" open="" close="">
             update tb_rst_pts_produce_process
-            set `process_no` = #{pro.processNo},`process_name` = #{pro.processName},`employee_id` = #{pro.employeeId},`drive_id` = #{pro.driveId},`process_status` = #{pro.processStatus},`process_type` = #{pro.processType},`process_sort` = #{pro.processSort},`process_remake` = #{pro.processRemake}
-            where  `process_id` = #{produceId}
+            <set>
+                <if test="pro.processNo !=null and pro.processNo !=''">
+                    process_no = #{pro.processNo},
+                </if>
+                <if test="pro.processName !=null and pro.processName !=''">
+                    process_name = #{pro.processName},
+                </if>
+                <if test="pro.employeeId !=null and pro.employeeId !=''">
+                    employee_id = #{pro.employeeId},
+                </if>
+                <if test="pro.driveId !=null and pro.driveId !=''">
+                    drive_id = #{pro.driveId},
+                </if>
+                <if test="pro.processStatus !=null">
+                    process_status = #{pro.processStatus},
+                </if>
+                <if test="pro.processType !=null">
+                    process_type = #{pro.processType},
+                </if>
+                <if test="pro.processSort !=null">
+                    process_sort = #{pro.processSort},
+                </if>
+                <if test="pro.processRemake !=null and pro.processRemake !=''">
+                    process_remake = #{pro.processRemake}
+                </if>
+            </set>
+            where  process_id = #{pro.processId}
         </foreach>
     </update>
 
+    <select id="getProduceByPro" parameterType="Produce" resultType="Produce">
+        SELECT
+            produce_id AS produceId,
+            produce_no AS  produce_no,
+            produce_name AS produceName,
+            produce_status AS  produceStatus,
+            produce_remake AS produceRemake,
+            produce_create_time AS  produceCreateTime,
+            produce_update_time AS produceUpdateTime
+        FROM
+            tb_rst_pts_produce
+        <where>
+            <if test="produceId !=null and produceId !=''">
+                produce_id = #{produceId}
+            </if>
+        </where>
+    </select>
+
+    <!-- 关联查询产品和产品工序 -->
+    <select id="listSelectProduct" parameterType="Produce" resultMap="productListMap">
+        SELECT
+        produce_id AS produceId,
+        produce_no AS produceNo,
+        produce_name AS produceName,
+        produce_status AS  produceStatus,
+        produce_remake AS produceRemake,
+        produce_create_time AS  produceCreateTime,
+        produce_update_time AS produceUpdateTime
+        FROM
+        tb_rst_pts_produce
+        WHERE
+        produce_no = #{produceNo}
+    </select>
 
     <resultMap type="Produce" id="productListMap">
         <id column="produce_id" property="produceId"/>
@@ -262,4 +346,49 @@
                                                     device_status = 0))
     </select>
 
+    <select id="selectProcessList" parameterType="ProduceProcess" resultType="ProduceProcess">
+        SELECT
+            ts.process_id,
+            ts.produce_id,
+            ts.process_no,
+            ts.process_name,
+            ts.employee_id,
+            ts.drive_id,
+            ts.process_status,
+            ts.process_type,
+            ts.process_sort,
+            ts.process_remake,
+            ts.process_create_time,
+            ts.process_update_time
+        FROM
+            tb_rst_pts_produce_process ts
+        <where>
+            ts.process_status = 1
+            <if test="produceId !=null and produceId !=''">
+                AND produce_id = #{produceId}
+            </if>
+        </where>
+        ORDER BY ts.process_sort
+    </select>
+
+
+    <select id="listProcessNode" parameterType="ProcessNode" resultType="ProcessNode">
+        SELECT
+            node_id AS nodeId,
+            produce_id AS produceId,
+            process_id AS processId,
+            node_no AS  nodeNo,
+            node_status AS nodeStatus,
+            node_des AS  nodeDes,
+            node_create_time AS nodeCreateTime,
+            node_update_time AS nodeUpdateTime
+        FROM
+            tb_rst_pts_process_node ts
+        <where>
+            <if test="processId !=null and processId !=''">
+                AND process_id = #{processId}
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 80 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml

@@ -18,13 +18,14 @@
             employee_update_time AS  employeeUpdateTime
         FROM
             tb_rst_pts_employee
-        WHERE
+        <where>
             <if test="employeeId !=null and employeeId !=''">
                 employee_id = #{employeeId}
             </if>
             <if test="employeeNo !=null and employeeNo !=''">
-                employee_no = #{employeeNo}
+                and employee_no = #{employeeNo}
             </if>
+        </where>
     </select>
 
     <select id="getPtsEmployeeById" parameterType="Integer" resultType="PtsEmployee">
@@ -46,4 +47,81 @@
         WHERE
         employee_id = #{employeeId}
     </select>
+
+    <select id="getPtsEmployeeList" parameterType="PtsEmployee" resultType="PtsEmployee">
+        SELECT
+        employee_id AS employeeId,
+        employee_no AS employeeNo,
+        employee_name AS employeeName,
+        employee_tel AS  employeeTel,
+        employee_state AS  employeeState,
+        employee_entry_date AS  employeeEntryDate,
+        employee_departure_date AS employeeDepartureDate ,
+        employee_post AS  employeePost,
+        employee_desc AS  employeeDesc,
+        employee_clear_power AS  employeeClearPower,
+        employee_create_time AS  employeeCreateTime,
+        employee_update_time AS  employeeUpdateTime
+        FROM
+        tb_rst_pts_employee
+        <where>
+            <if test="employeeId !=null and employeeId !=''">
+                employee_id = #{employeeId}
+            </if>
+            <if test="employeeNo !=null and employeeNo !=''">
+               AND employee_no = #{employeeNo}
+            </if>
+            <if test="employeeName !=null and employeeName !=''">
+                AND employee_name like CONCAT('%',#{employeeName},'%')
+
+            </if>
+            <if test="employeeTel !=null and employeeTel !=''">
+                AND employee_tel like CONCAT('%',#{employeeTel},'%')
+            </if>
+        </where>
+    </select>
+
+
+    <insert id="saveEmployee" parameterType="PtsEmployee" useGeneratedKeys="true" >
+        insert into tb_rst_pts_employee
+          (employee_no ,employee_name ,employee_tel ,employee_state ,employee_entry_date ,employee_departure_date ,employee_post ,employee_desc ,employee_clear_power )
+        values
+          (#{employeeNo},#{employeeName},#{employeeTel},#{employeeState},#{employeeEntryDate},#{employeeDepartureDate},#{employeePost},#{employeeDesc},#{employeeClearPower})
+    </insert>
+
+    <update id="updateEmployee" parameterType="PtsEmployee" >
+        update tb_rst_pts_employee
+        <set>
+            <if test="employeeNo !=null and employeeNo !=''">
+                employee_no = #{employeeNo},
+            </if>
+            <if test="employeeName !=null and employeeName !=''">
+                employee_name = #{employeeName},
+            </if>
+            <if test="employeeTel !=null and employeeTel !=''">
+                employee_tel = #{employeeTel},
+            </if>
+            <if test="employeeState !=null">
+                employee_state = #{employeeState},
+            </if>
+            <if test="employeeEntryDate !=null and employeeEntryDate !=''">
+                employee_entry_date = #{employeeEntryDate},
+            </if>
+            <if test="employeeDepartureDate !=null and employeeDepartureDate !=''">
+                employee_departure_date = #{employeeDepartureDate},
+            </if>
+            <if test="employeePost !=null and employeePost !=''">
+                employee_post = #{employeePost},
+            </if>
+            <if test="employeeDesc !=null and employeeDesc !=''">
+                employee_desc = #{employeeDesc},
+            </if>
+            <if test="employeeClearPower !=null">
+                employee_clear_power = #{employeeClearPower}
+            </if>
+        </set>
+        where
+            employee_id = #{employeeId}
+    </update>
+
 </mapper>

+ 29 - 6
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminProduceController.java

@@ -86,7 +86,7 @@ public class AdminProduceController {
 
         int falg = produceService.saveProduce(produce);
 
-        if (falg < 0 ){
+        if (falg < 1 ){
             return new ResponseJson(500, "ERROR", 500);
         }else {
             return new ResponseJson(200, "SUCCESS", 200);
@@ -100,15 +100,24 @@ public class AdminProduceController {
      */
     @RequiresPermissions("produce:update_produce:produce")
     @RequestMapping("/to_update_produce")
-    public ModelAndView toUpdateProduce(HttpServletRequest request) {
+    public ModelAndView toUpdateProduce(HttpServletRequest request,String produceId) {
         ModelAndView mv = new ModelAndView("pts/produce/update_produce");
 
-        String produceId = request.getParameter("");
         Produce produce = new Produce();
         produce.setProduceId(Integer.valueOf(produceId));
         produce = produceService.getProduce(produce);
 
+        ProduceProcess produceProcess = new ProduceProcess();
+        produceProcess.setProduceId(produce.getProduceId());
+        List<ProduceProcess> produceProcessList = produceService.listProduceProcess(produceProcess);
 
+        for (ProduceProcess producePro : produceProcessList){
+            ProcessNode processNode = new ProcessNode();
+            processNode.setProcessId(producePro.getProcessId());
+            List<ProcessNode> processNodeList = produceService.listProcessNode(processNode);
+            producePro.setNodes(processNodeList);
+        }
+        produce.setProcess(produceProcessList);
         mv.addObject("produce", produce);
         return mv;
     }
@@ -121,9 +130,23 @@ public class AdminProduceController {
     @ResponseBody
     @RequiresPermissions("produce:update_produce:produce")
     @RequestMapping("/update_produce")
-    public ResponseJson updateProduce(HttpServletRequest request,Produce produce) {
-        int flag = produceService.saveProduce(produce);
-        return new ResponseJson(200, "VALIDATION_ERROR", 500);
+    public ResponseJson updateProduce(HttpServletRequest request,Produce produce,String delProcessIds,String delNodeIds) {
+        JSONArray jsonArray = JSONArray.fromObject(produce.getJson());
+        List<ProduceProcess>  process = (List) JSONArray.toCollection(jsonArray,ProduceProcess.class);
+        for(ProduceProcess produceProcess :process){
+            JSONArray nodesArray = JSONArray.fromObject(produceProcess.getJson());
+            List<ProcessNode>  processNode = (List) JSONArray.toCollection(nodesArray,ProcessNode.class);
+            produceProcess.setNodes(processNode);
+        }
+        produce.setProcess(process);
+
+        int flag = produceService.updateProduce(produce,delProcessIds,delNodeIds);
+
+        if (flag < 1 ){
+            return new ResponseJson(500, "ERROR", 500);
+        }else {
+            return new ResponseJson(200, "SUCCESS", 200);
+        }
     }
 
 }

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

@@ -1,30 +1,142 @@
 package com.iamberry.rst.controllers.pts;
 
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsEmployee;
 import com.iamberry.rst.faces.pts.PtsEmployeeService;
-import com.iamberry.wechat.tools.RespJsonBean;
 import com.iamberry.wechat.tools.ResponseJson;
-import com.iamberry.wechat.tools.payUtil.StringUtil;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.Map;
 
 /**
  * pts系统员工信息controller
  * Created by wangxiaoming on 2017/8/29.
  */
 @Controller
-@RequestMapping("/admin/staffmember")
+@RequestMapping("/admin/employee")
 public class AdminPtsEmployeeController {
 
     @Autowired
     private PtsEmployeeService ptsEmployeeService;
 
+    /**
+     * 查询员工列表
+     * @param pageSize
+     * @param pageNO
+     * @param totalNum
+     * @return
+     */
+    @RequestMapping("/_employee_list")
+    @RequiresPermissions("employee:list_employee:employee")
+    public ModelAndView subMenuList(HttpServletRequest request,
+                                    @RequestParam(value= "pageSize",defaultValue= "10" ,required=false) Integer pageSize,
+                                    @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO,
+                                    @RequestParam(value = "totalNum", defaultValue = "0",required=false) Integer totalNum) {
+        ModelAndView mv = new ModelAndView("pts/employee/employee_list");
+
+        PtsEmployee employee = new PtsEmployee();
+
+        String employeeName = request.getParameter("employeeName");
+        String employeeNo = request.getParameter("employeeNo");
+        String employeeTel = request.getParameter("employeeTel");
+
+        if (employeeName != null && !"".equals(employeeName)) {
+            employee.setEmployeeName(employeeName);
+        }
+        if (employeeNo != null && !"".equals(employeeNo)) {
+            employee.setEmployeeNo(employeeNo);
+        }
+        if (employeeTel != null && !"".equals(employeeTel)) {
+            employee.setEmployeeTel(employeeTel);
+        }
+
+        PagedResult<PtsEmployee> pagedResult = ptsEmployeeService.getEmployeeList(pageNO, pageSize, employee, totalNum == 0);
+        if(totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+            pagedResult.setPages((int) Math.ceil((double)totalNum/pageSize));
+        }
+        StringBuilder sb = new StringBuilder("/admin/employee/_employee_list?pageSize=" + pageSize);
+        sb.append("&totalNum=");
+        sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
+        sb.append("&pageNO=");
+        mv.addObject("employeeName", employeeName);
+        mv.addObject("employeeNo", employeeNo);
+        mv.addObject("employeeTel", employeeTel);
+        mv.addObject("page", pagedResult);
+        mv.addObject("url", sb.toString());
+        return mv;
+    }
+
+    /**
+     * 跳转到添加员工页面
+     *
+     * @return
+     */
+    @RequiresPermissions("employee:add_employee:employee")
+    @RequestMapping("/to_save_employee")
+    public ModelAndView goSaveProduce(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("pts/employee/save_employee");
+        return mv;
+    }
+
+    /**
+     * 添加员工
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("employee:add_employee:employee")
+    @RequestMapping(value="/save_employee")
+    public ResponseJson saveProduce(PtsEmployee employee, HttpServletRequest request) {
+
+       Integer flag = ptsEmployeeService.saveEmployee(employee);
+        if (flag < 1 ){
+            return new ResponseJson(500, "ERROR", 500);
+        }else {
+            return new ResponseJson(200, "SUCCESS", 200);
+        }
+    }
+
+    /**
+     * 跳转到修改员工页面
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("employee:update_employee:employee")
+    @RequestMapping(value="/to_update_employee")
+    public ModelAndView updateProduce(String employeeId, HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("pts/employee/update_employee");
+        if(employeeId == null || "".equals(employeeId)){
+            return mv;
+        }
+        PtsEmployee ptsEmployee = new PtsEmployee();
+        ptsEmployee = ptsEmployeeService.getPtsEmployeeById(Integer.valueOf(employeeId));
+        mv.addObject("employee",ptsEmployee);
+        return mv;
+    }
+
+    /**
+     * 修改员工
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("employee:update_employee:employee")
+    @RequestMapping(value="/update_employee")
+    public ResponseJson updateProduce(PtsEmployee employee, HttpServletRequest request) {
+        Integer flag = ptsEmployeeService.updateEmployee(employee);
+        if (flag < 1 ){
+            return new ResponseJson(500, "ERROR", 500);
+        }else {
+            return new ResponseJson(200, "SUCCESS", 200);
+        }
+    }
 
 }

+ 250 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/EquipmentController.java

@@ -1,17 +1,28 @@
 package com.iamberry.rst.controllers.pts;
 
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.ProduceProcess;
+import com.iamberry.rst.core.pts.PtsDevice;
+import com.iamberry.rst.core.pts.PtsEmployee;
+import com.iamberry.rst.faces.pts.EquipmentService;
 import com.iamberry.rst.faces.pts.ProduceService;
 import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.payUtil.StringUtil;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by Administrator on 2017/8/29.
@@ -22,13 +33,29 @@ public class EquipmentController {
 
     @Autowired
     private ProduceService produceService;
+    @Autowired
+    private EquipmentService equipmentService;
 
+    /**
+     * 进入添加设备页面
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:add:device")
     @RequestMapping("/_add_equpment")
     public ModelAndView addEqupmentUI(HttpServletRequest request) throws Exception {
-        ModelAndView mv = new ModelAndView("produce/addEqupment");
+        ModelAndView mv = new ModelAndView("pts/device/add_device");
         return mv;
     }
 
+    /**
+     * 查询所有可用产品工序信息
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:select:produce")
     @ResponseBody
     @RequestMapping("/select_produce_list")
     public ResponseJson selectProduceList(HttpServletRequest request) throws Exception {
@@ -42,9 +69,231 @@ public class EquipmentController {
                 iter.remove();
             }
         }
+        msg.setReturnCode(200);
+        msg.setResultCode(200);
+        msg.addResponseKeyValue("produceList",produceList);
+        return msg;
+    }
 
+    /**
+     * 添加设备信息
+     * @param request
+     * @param device
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:add:device")
+    @ResponseBody
+    @RequestMapping("/add_equpment")
+    public ResponseJson addEqupment(HttpServletRequest request,PtsDevice device) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        String processId = request.getParameter("selProcess");
+        String[] processIds = null;
+        /*if (processId != null && !"".equals(processId) && processId.indexOf(",") > 0) {
+            processId = processId.substring(0,processId.lastIndexOf(","));
+            processIds = processId.split(",");
+        }*/
+        //添加设备信息和修改工序信息
+        boolean flag = equipmentService.addDevice(device, processIds);
+        if (flag) {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+        } else {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        }
+        return msg;
+    }
 
+    /**
+     * 查询设备列表信息
+     * @param request
+     * @param pageNO
+     * @param pageTotal
+     * @param pageSize
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:select:device")
+    @RequestMapping("/select_device_list")
+    public ModelAndView selectDeviceList(HttpServletRequest request,
+                                         @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
+                                         @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
+                                         @RequestParam(value = "pageSize", defaultValue = "5", required = false) int pageSize
+                                         ) throws Exception {
+        ModelAndView mv = new ModelAndView("pts/device/device_list");
+        StringBuilder url = new StringBuilder("/admin/equipment/select_device_list?pageSize=" + pageSize);
+        String deviceNumber = request.getParameter("deviceNumber");
+        String deviceStatus = request.getParameter("deviceStatus");
+        String deviceName = request.getParameter("deviceName");
+        String deviceRemake = request.getParameter("deviceRemake");
+        PtsDevice device = new PtsDevice();
+        if (StringUtil.isNotEmpty(deviceNumber)) {
+            device.setDeviceNumber(deviceNumber);
+            mv.addObject("deviceNumber", deviceNumber);
+        }
+        if (StringUtil.isNotEmpty(deviceName)) {
+            device.setDeviceName(deviceName);
+            mv.addObject("deviceName", deviceName);
+        }
+        if (StringUtil.isNotEmpty(deviceStatus)) {
+            device.setDeviceStatus(Integer.parseInt(deviceStatus));
+            mv.addObject("deviceStatus", device.getDeviceStatus());
+        }
+        if (StringUtil.isNotEmpty(deviceRemake)) {
+            device.setDeviceRemake(deviceRemake);
+            mv.addObject("deviceRemake", deviceRemake);
+        }
+        // 封装请求数据
+        PageRequest<PtsDevice> pageRequest = new PageRequest<PtsDevice>(device, pageNO, pageSize, pageTotal == null);
+        PagedResult<PtsDevice> result = equipmentService.listDevice(pageRequest);
+        long total = 0;
+        if (pageTotal == null) {
+            total = result.getPages();
+        } else {
+            total = pageTotal;
+            result.setPages(total);
+        }
+        url.append("&pageTotal=").append(total).append("&pageNO=");
+        mv.addObject("page", result);
+        mv.addObject("url", url.toString());
+        return mv;
+    }
+
+    /**
+     * 进入修改设备页面
+     * @param request
+     * @param deviceId
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:update:device")
+    @RequestMapping("/_update_device")
+    public ModelAndView editDevice(HttpServletRequest request,
+                  @RequestParam(value = "deviceId", defaultValue = "", required = false) Integer deviceId
+    ) throws Exception {
+        ModelAndView mv = new ModelAndView("pts/device/update_device");
+        if (deviceId == null) {
+            return mv;
+        }
+        PtsDevice device = new PtsDevice();
+        device.setDeviceId(deviceId);
+        //获取机器列表
+        List<PtsDevice> deviceList = equipmentService.listPtsDevice(device);
+        if (deviceList == null || deviceList.size() <= 0) {
+            return mv;
+        }
+        device = deviceList.get(0);//通过id获取只可能有一条数据
+        mv.addObject("device",device);
+        return mv;
+    }
 
+    /**
+     * 修改设备信息
+     * @param request
+     * @param device
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("equipment:update:device")
+    @RequestMapping("/update_device")
+    public ResponseJson updateDevice(HttpServletRequest request,PtsDevice device) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        //修改设备信息
+        int num = equipmentService.updateDevice(device);
+        if (num > 0) {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+        } else {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        }
+        return msg;
+    }
+
+    /**
+     * 进入修改生产流程页面
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("equipment:update:process")
+    @RequestMapping("/_update_process")
+    public ModelAndView editProcess(HttpServletRequest request) throws Exception {
+        ModelAndView mv = new ModelAndView("pts/device/update_process");
+        String deviceId = request.getParameter("deviceId");
+        mv.addObject("deviceId",deviceId);
+        return mv;
+    }
+
+    /**
+     * 查询产品及工序信息
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("equipment:select:process")
+    @RequestMapping("/select_produce_process")
+    public ResponseJson selectproduceProcess(HttpServletRequest request) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        Map<String, Object> objMap = new HashMap<String, Object>();
+        Produce produce = new Produce();
+        //查询产品及工序信息
+        List<Produce> produceList = equipmentService.listProduct(produce);
+
+        PtsEmployee employee = new PtsEmployee();
+        employee.setEmployeeState(1);
+        //查询员工集合
+        List<PtsEmployee> employeeList = equipmentService.listEmployee(employee);
+
+        PtsDevice device = new PtsDevice();
+        device.setDeviceStatus(1);
+        //获取机器列表
+        List<PtsDevice> deviceList = equipmentService.listPtsDevice(device);
+
+        if (produceList != null && produceList.size() > 0) {
+            objMap.put("employeeList",employeeList);
+            objMap.put("produceList",produceList);
+            objMap.put("deviceList",deviceList);
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+            msg.addResponseKeyValue("objMap",objMap);
+        } else {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+        }
         return msg;
     }
+
+    /**
+     * 修改产品工序方法
+     * @param request
+     * @param process
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("equipment:update:process")
+    @RequestMapping("/update_process_info")
+    public ResponseJson updateProcessInfo(HttpServletRequest request,ProduceProcess process) throws Exception {
+        ResponseJson msg = new ResponseJson();
+        if (process == null || process.getProcessId() == null || "".equals(process.getProcessId())) {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+            return msg;
+        }
+        //修改产品工序
+        boolean flag = equipmentService.updateProcessInfo(process);
+        if (flag) {
+            msg.setResultCode(200);
+            msg.setReturnCode(200);
+            return msg;
+        } else {
+            msg.setResultCode(500);
+            msg.setReturnCode(500);
+            return msg;
+        }
+    }
 }

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

@@ -41,14 +41,22 @@ public class ProduceAppController {
         if (employeeId == null || "".equals(employeeId)) {
             rsj.setResultCode(500);
             rsj.setResultMsg("ERROR");
-            rsj.addResponseKeyValue("员工id为空");
+            rsj.setReturnMsg("员工不存在!");
             return rsj;
         }
         //查询员工所做的产品,产品的工序,工序的节点操作
         List<Produce> list = produceService.getAllProduceList(Integer.valueOf(employeeId));
-        rsj.setResultCode(200);
-        rsj.setResultMsg("SUCCESS");
-        rsj.setReturnMsg(list);
-        return rsj;
+        if(list.size() < 1){
+            rsj.setResultCode(500);
+            rsj.setResultMsg("ERROR");
+            rsj.setReturnMsg("该员工未绑定工序");
+            return rsj;
+        }else{
+            rsj.setResultCode(200);
+            rsj.setResultMsg("SUCCESS");
+            rsj.setReturnMsg(list);
+            return rsj;
+        }
+
     }
 }

+ 1 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -65,5 +65,6 @@
 		<mapper resource="com/iamberry/rst/service/pts/mapper/machineMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/deviceMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/pts/mapper/equipmentMapper.xml"/>
 	</mappers>
 </configuration>

+ 145 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/add_device.ftl

@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+<#include "/base/add_base.ftl">
+    <title></title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 5px 10px;width: 60%;}
+        .my-input-date{padding: 5px 10px;width: 60%;background: url(images/rili-1.png) 98.5% center no-repeat; background-size:auto 80%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 60%;}
+        .my-btn-reset{padding: 6px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 6px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;width: 60%; height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(common/images/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> PST管理
+    <span class="c-gray en">&gt;</span> 添加设备
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div style="padding: 10px;">
+    <form class="form-horizontal" action="${path}/admin/equipment/add_equpment" id="form-admin-add">
+        <div class="my-title">设备信息</div>
+        <div class="input-box">
+            <span class="input-dic">设备编号</span>
+            <input class="my-input" type="text" value="" maxlength="10" minlength="2" name="deviceNumber" id="deviceNumber" placeholder="请输入设备编号,请输入英文、数字,2-10位"/>
+        </div>
+        <div class="input-box"><span class="input-dic">设备姓名</span><input class="my-input" type="text" value="" name="deviceName" id="deviceName" placeholder="请输入设备名称,中文和英文"/> </div>
+        <div class="input-box"><span class="input-dic">购买日期</span><input class="my-input-date" type="text" value="" name="device_date" id="device_date" placeholder="请选择购买日期" onClick="WdatePicker()" readonly="readonly"/> </div>
+        <div class="input-box"><span class="input-dic">设备状态</span> <input type="radio" id="radio1" name="deviceStatus" value="1" checked/><label for="radio1">正常使用</label><input type="radio" id="radio2" name="deviceStatus" value="0"/><label for="radio3">设备停用</label> </div>
+        <#--<div class="input-box"><span class="input-dic">作用流程</span>
+            <ul class="add-list">
+
+            </ul>
+        </div>-->
+        <div style="clear: both;"></div>
+        <div class="input-box"><span class="input-dic">设备备注</span>
+            <textarea rows="3" cols="20" name="deviceRemake" id="deviceRemake" class="my-textarea"></textarea>
+        </div>
+        <div>
+            <button type="reset" class="my-btn-reset">重置</button><button type="button" class="my-btn-submit" onclick="submit_value();">确认提交</button>
+        </div>
+    </form>
+</div>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+    var check_number = /^[A-Za-z0-9]+$/;
+    var check_name = /^[a-zA-Z\u4e00-\u9fa5]+$/;
+
+    $(function(){
+        /*$.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/equipment/select_produce_list",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var data_produce = data.returnMsg.produceList;
+                    var table = document.body.querySelector('.add-list');
+                    $.each(data_produce, function(i,item){
+                        var this_produce = this;
+                        var li = document.createElement('li');
+                        var process = '';
+                        var data_process = this_produce.process;
+                        $.each(data_process, function(j,obj){
+                            var this_process = this;
+                            process += '<option value="' + this_process.processId + '"> ' + this_process.processName + ' </option>';
+                        });
+                        li.innerHTML = this_produce.produceName + '<select class="my-select">' + process + '</select>';
+                        table.appendChild(li);
+                    });
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+
+            }
+        });*/
+    });
+
+    function check_value() {
+        var flag = true;
+        var deviceNumber = $('#deviceNumber').val();
+        var deviceName = $('#deviceName').val();
+        if (deviceNumber == null || !check_number.test(deviceNumber)) {
+            flag = false;
+            alert("设备编号格式不正确,请重新输入!");
+            return flag;
+        }
+        if (deviceName == null || !check_name.test(deviceName)) {
+            flag = false;
+            alert("设备名称格式不正确,请重新输入!");
+            return flag;
+        }
+        return flag;
+    }
+
+    function submit_value() {
+        var deviceNumber = $('#deviceNumber').val();
+        var deviceName = $('#deviceName').val();
+        var device_date = $('#device_date').val();
+        var deviceRemake = $('#deviceRemake').val();
+        var deviceStatus = $('input[name="deviceStatus"]:checked').val();
+        var flag = check_value();
+        if (flag) {
+            //var selProcess = '';
+            //循环获取所有流程节点
+            /*$.each($('.add-list>li>select option:selected'), function(i,item){
+                selProcess += $(this).val() + ',';
+            });*/
+            var data = {
+                "deviceNumber":deviceNumber,
+                "deviceName":deviceName,
+                "deviceDate":device_date,
+                "deviceRemake":deviceRemake,
+                "deviceStatus":deviceStatus
+                //"selProcess":selProcess
+            }
+
+            $.ajax({
+                cache: true,
+                type: "POST",
+                data: data,
+                url: "${path}/admin/equipment/add_equpment",
+                async: false,
+                success: function(data){
+                    if (data.returnCode == 200) {
+                        window.location.href = '${path}/admin/equipment/select_device_list'
+                    }
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+
+                }
+            });
+        }
+    }
+</script>
+</body>
+</html>

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

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title></title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(images/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+    </style>
+<#include "/base/list_base.ftl">
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> PST管理
+    <span class="c-gray en">&gt;</span> 设备列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+<div class="text-c">
+    <form name="form1" action="${path}/admin/equipment/select_device_list" method="post">
+        <button type="button" class="my-btn-search" onclick="add_device();">添加设备</button>
+        <input class="my-input" type="text" name="deviceNumber" value="${deviceNumber!}" placeholder="请输入设备编号"/>
+        <select class="select" name="deviceStatus" style="height: 30px;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>
+        </select>
+        <input class="my-input" type="text" name="deviceName" value="${deviceName!}" placeholder="请输入设备名称"/>
+        <input class="my-input" type="text" name="deviceRemake" value="${deviceRemake!}" placeholder="请输入备注"/>
+        <button type="submit" class="my-btn-search">搜索</button>
+    </form>
+</div>
+<div class="mt-20">
+    <table class="table table-border table-bordered table-bg table-hover table-sort">
+        <thead>
+        <tr class="text-c">
+            <th width="100">设备编号</th>
+            <th width="100">设备名称</th>
+            <th width="100">设备备注</th>
+            <th width="100">购买日期</th>
+            <th width="100">状态</th>
+            <th width="150">作用流程岗位</th>
+            <th width="50">操作</th>
+        </tr>
+        </thead>
+        <tbody id="listid">
+        <#list page.dataList as device>
+        <tr>
+            <td class="text-c" width="100">${device.deviceNumber}</td>
+            <td class="text-c" width="100">${device.deviceName}</td>
+            <td class="text-c" width="100">${device.deviceRemake}</td>
+            <td class="text-c" width="100">${(device.deviceDate?string("yyyy-MM-dd"))!''}</td>
+            <td class="text-c" width="100">
+                <#if device.deviceStatus == 0>
+                    停止使用
+                </#if>
+                <#if device.deviceStatus == 1>
+                    正常使用
+                </#if>
+                <#if device.deviceStatus == 2>
+                    设备故障
+                </#if>
+            </td>
+            <td class="text-c" width="100">
+                <#if device.processList??>
+                    <#list device.processList as process>
+                        <#if (process_index + 1) == device.processList?size>
+                            ${process.produceName}-${process.processName}
+                        </#if>
+                        <#if (process_index + 1) != device.processList?size>
+                        ${process.produceName}-${process.processName},
+                        </#if>
+                    </#list>
+                </#if>
+            </td>
+            <!-- 遍历操作 -->
+            <td class="td-manage text-c">
+                <a style="text-decoration:none" href="javascript:;" title="查看"
+                   onclick="edit_detail('${path}/admin/equipment/_update_device?deviceId=${device.deviceId!}');">
+                    <i class="Hui-iconfont">&#xe6df;</i>
+                </a>
+                <a style="text-decoration:none" href="javascript:;" title="查看"
+                   onclick="edit_process('${path}/admin/equipment/_update_process?deviceId=${device.deviceId!}');">
+                    <i class="Hui-iconfont">&#xe665;</i>
+                </a>
+            </td>
+        </tr>
+        </#list>
+        </tbody>
+    </table>
+</div>
+</div>
+<div style="padding-top: 10px;"></div>
+<#include "/base/page_util.ftl">
+
+<script type="text/javascript">
+    function add_device() {
+        window.location.href = '${path}/admin/equipment/_add_equpment'
+    }
+
+    function edit_detail(url) {
+        window.location.href = url
+    }
+
+    function edit_process(url) {
+        window.location.href = url
+    }
+</script>
+</body>
+</html>

+ 107 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/update_device.ftl

@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+<#include "/base/add_base.ftl">
+    <title></title>
+    <style>
+        .my-title{font-weight: 500;padding-left: 15px;position: relative;}
+        .my-title:after{content: '';position: absolute;left: 0;top:12%;width: 3px;height: 80%;background: #32a3d8;}
+        .my-input{padding: 5px 10px;width: 60%;}
+        .my-input-date{padding: 5px 10px;width: 60%;background: url(images/rili-1.png) 98.5% center no-repeat; background-size:auto 80%;}
+        .input-box{margin: 18px 0;}
+        .input-dic{float: left;margin:5px 10px 0 0;font-size: 12px;}
+        .add-list{list-style-type: none;padding: 10px;background-color: #f5f5f5;width: 60%;float: left;margin: 0;}
+        .add-list>li{margin: 10px 0;}
+        .my-textarea{padding: 5px 10px;width: 60%;}
+        .my-btn-reset{padding: 6px 20px;width: 150px; background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-btn-submit{padding: 6px 20px;width: 150px; background-color: #32a3d8;color: #fff;border: 1px solid #32a3d8;cursor:pointer;margin: 10px 10px 0 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;width: 60%; height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(common/images/select-1.png) right center no-repeat #fff;background-size:auto 100%;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> PST管理
+    <span class="c-gray en">&gt;</span> 修改设备
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div style="padding: 10px;">
+    <form class="form-horizontal" action="${path}/admin/equipment/update_device" id="form-admin-add">
+        <div class="my-title">设备信息</div>
+        <input class="my-input" type="hidden" value="${device.deviceId!}" name="deviceId" id="deviceId" placeholder="请输入设备编号"/>
+        <div class="input-box"><span class="input-dic">设备编号</span><input class="my-input" type="text" value="${device.deviceNumber!}" name="deviceNumber" id="deviceNumber" placeholder="请输入设备编号"/> </div>
+        <div class="input-box"><span class="input-dic">设备姓名</span><input class="my-input" type="text" value="${device.deviceName!}" name="deviceName" id="deviceName" placeholder="请输入设备姓名"/> </div>
+        <div class="input-box"><span class="input-dic">购买日期</span><input class="my-input-date" type="text" value="${(device.deviceDate?string("yyyy-MM-dd"))!''}" onClick="WdatePicker()" name="device_date" id="device_date" placeholder="请选择购买日期" readonly="readonly"/> </div>
+        <div class="input-box"><span class="input-dic">设备状态</span>
+            <input type="radio" id="radio1" name="deviceStatus" <#if device.deviceStatus??><#if device.deviceStatus == 1>checked</#if></#if> value="1"/><label for="radio1">正常使用</label>
+            <input type="radio" id="radio2" name="deviceStatus" <#if device.deviceStatus??><#if device.deviceStatus == 0>checked</#if></#if> value="0"/><label for="radio3">设备停用</label>
+        </div>
+        <div style="clear: both;"></div>
+        <div class="input-box"><span class="input-dic">设备备注</span>
+            <textarea rows="3" cols="20" name="deviceRemake" id="deviceRemake" class="my-textarea">${device.deviceRemake!}</textarea>
+        </div>
+        <div>
+            <button type="reset" class="my-btn-reset">重置</button><button type="button" class="my-btn-submit" onclick="update_value();">确认</button>
+        </div>
+    </form>
+</div>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript">
+    var check_number = /^[A-Za-z0-9]+$/;
+    var check_name = /^[a-zA-Z\u4e00-\u9fa5]+$/;
+
+    function check_value() {
+        var flag = true;
+        var deviceNumber = $('#deviceNumber').val();
+        var deviceName = $('#deviceName').val();
+        if (deviceNumber == null || !check_number.test(deviceNumber)) {
+            flag = false;
+            alert("设备编号格式不正确,请重新输入!");
+            return flag;
+        }
+        if (deviceName == null || !check_name.test(deviceName)) {
+            flag = false;
+            alert("设备名称格式不正确,请重新输入!");
+            return flag;
+        }
+        return flag;
+    }
+
+    function update_value() {
+        var deviceNumber = $('#deviceNumber').val();
+        var deviceName = $('#deviceName').val();
+        var device_date = $('#device_date').val();
+        var deviceRemake = $('#deviceRemake').val();
+        var deviceStatus = $('input[name="deviceStatus"]:checked').val();
+        var deviceId = $('#deviceId').val();
+        var flag = check_value();
+        if (flag) {
+            var data = {
+                "deviceNumber":deviceNumber,
+                "deviceName":deviceName,
+                "deviceDate":device_date,
+                "deviceRemake":deviceRemake,
+                "deviceStatus":deviceStatus,
+                "deviceId":deviceId
+            }
+
+            $.ajax({
+                cache: true,
+                type: "POST",
+                data: data,
+                url: "${path}/admin/equipment/update_device",
+                async: false,
+                success: function(data){
+                    if (data.returnCode == 200) {
+                        window.location.href = '${path}/admin/equipment/select_device_list'
+                    }
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+
+                }
+            });
+        }
+    }
+</script>
+</body>
+</html>

+ 519 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/device/update_process.ftl

@@ -0,0 +1,519 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title></title>
+    <style>
+        article, section, time, aside {
+            display: block;
+        }
+        .point-time {
+            content: "";
+            position: absolute;
+            width: 15px;
+            height: 15px;
+            line-height: 15px;
+            top: 35%;
+            left: 48%;
+            background: #1c87bf;
+            margin-left: -5px;
+            border-radius: 50%;
+            box-shadow: 0 0 0 5px #fff;
+            font-size: 12px;
+            text-align: center;
+            color: #fff;
+        }
+
+        .text-red {
+            color: #f6393f;
+        }
+
+        .text-blue {
+            color: #1c87bf;
+        }
+
+        .text-green {
+            color: #999;
+        }
+
+        .text-yellow {
+            color: #ffb902;
+        }
+
+        .text-purple {
+            color: #d32d93;
+        }
+        .text-left{
+            text-align: left;
+            text-indent: 1em;
+        }
+        .text-right{
+            text-align: right;
+            padding-right: 1em;
+        }
+        .point-red {
+            background-color: #f6393f;
+        }
+
+        .point-blue {
+            background-color: #1c87bf;
+        }
+
+        .point-green {
+            background-color: #95c91e;
+        }
+
+        .point-yellow {
+            background-color: #ffb902;
+        }
+
+        .point-gray {
+            background-color: #999;
+        }
+
+        .point-purple {
+            background-color: #d32d93;
+        }
+
+        .content {
+            width: 100%;
+            margin: 0 auto;
+        }
+        .content article {
+            position: relative;
+        }
+        .content article > h3 {
+            width: 100%;
+            text-align: center;
+            font-size: 1.4em;
+            color: #fff;
+            padding: 10px 0 20px;
+            background-color: #32a3d8;
+            margin: 0 0 10px 0;
+        }
+        .content article section {
+            padding: 10px 0 10px;
+            position: relative;
+        }
+        .content article section:before {
+            content: "";
+            width: 5px;
+            top: 23px;
+            bottom: -50px;
+            left: 48%;
+            background: #e6e6e6;
+            position: absolute;
+        }
+        .content article section:last-child:before {
+            display: none;
+        }
+        .content article section time {
+            width: 45%;
+            display: block;
+            position: absolute;
+            text-align: right;
+        }
+        .content article section time > span {
+            display: block;
+        }
+        .content article section aside {
+            color: #3a3a38;
+            margin-left: 55%;
+            min-height: 50px;
+        }
+        .content article section aside > span{
+            display: block;
+        }
+        .content article section .brief {
+            color: #9f9f9f;
+        }
+
+        .class-hidden {
+            display: none;
+        }
+
+        /*设置Select样式*/
+        select {
+            border-width: 0px;
+            border-top-style: none;
+            border-right-style: none;
+            border-left-style: none;
+            border-bottom-style: none;
+            overflow:hidden;
+            -webkit-appearance: none;
+        }
+
+        select option {
+            text-align: center;
+            color: blue;
+        }
+
+        .add-title-left{position: absolute;right: 0;top: 15%;}
+        .add-title-right{position: absolute;left: 55%;top:33%;}
+        .my-btn-edit{padding: 6px 20px;background-color: #fff;color: #32a3d8;border: 1px solid #32a3d8;cursor:pointer;margin: 5px 0 5px 0;}
+        .list-main{list-style-type: none;margin: 0;padding: 10px;overflow-x: scroll;white-space: nowrap;}
+        .list-main>li{display: table-cell;min-width: 450px;position: relative;width: 450px;margin-right: 20px;border: 1px solid rgba(0,0,0,.1);}
+    </style>
+<#include "/base/list_base.ftl">
+</head>
+<body>
+<div><input type="hidden" value="${deviceId!}" id="deviceId"></div>
+<ul class="list-main">
+    <#--<li>
+        <div class="content">
+            <article>
+                <h3>净水机</h3>
+                <section>
+                    <span class="point-time point-yellow">1</span>
+                    <time>
+                        <span>净水机需求清洗物料</span>
+                        <span class="text-blue">员工:张三(a5)</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">2</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span>t1滤芯组装</span>
+                        <span class="text-blue">员工:李二二(a4)</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-green">3</span>
+                    <time>
+                        <span>t3滤芯组装</span>
+                        <span class="text-blue">员工:钟小小(a4)</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">4</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-green">5</span>
+                    <time>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-left">接头加工</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-blue">6</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">7</span>
+                    <time>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-left">接头加工</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-blue">8</span>
+                    <time datetime="2012-02">
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+            </article>
+        </div>
+    </li>
+
+    <li>
+        <div class="content">
+            <article>
+                <h3>净水机</h3>
+                <section>
+                    <span class="point-time point-yellow">1</span>
+                    <time>
+                        <span>净水机需求清洗物料</span>
+                        <span class="text-blue">员工:张三(a5)</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">2</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span>t1滤芯组装</span>
+                        <span class="text-blue">员工:李二二(a4)</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-green">3</span>
+                    <time>
+                        <span>t3滤芯组装</span>
+                        <span class="text-blue">员工:钟小小(a4)</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">4</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-green">5</span>
+                    <time>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-left">接头加工</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-blue">6</span>
+                    <time>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-red">7</span>
+                    <time>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-left"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-left">接头加工</span>
+                    </time>
+                    <aside>
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </aside>
+                </section>
+                <section>
+                    <span class="point-time point-blue">8</span>
+                    <time datetime="2012-02">
+                        <!--<span></span>
+                        <span></span>&ndash;&gt;
+                    </time>
+                    <aside>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加员工</button></span>
+                        <span class="text-right"><button type="button" class="my-btn-edit">添加设备</button></span>
+                        <span class="add-title-right">接头加工</span>
+                    </aside>
+                </section>
+            </article>
+        </div>
+    </li>-->
+</ul>
+<script type="text/javascript">
+
+    $(function(){
+        var deviceId = $('#deviceId').val();
+        $.ajax({
+            cache: true,
+            type: "POST",
+            url: "${path}/admin/equipment/select_produce_process",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var data_produce = data.returnMsg.objMap.produceList;
+                    var employeeList = data.returnMsg.objMap.employeeList;
+                    var deviceList = data.returnMsg.objMap.deviceList;
+                    var table = document.body.querySelector('.list-main');
+                    var tab_name = $('#tab_title');
+                    var tab_text = '';
+                    var id_num = 1;
+
+                    $.each(data_produce, function(i,item){
+                        var this_produce = this;
+
+                        var li = document.createElement('li');
+                        var process = '';
+                        var data_process = this_produce.process;
+                        $.each(data_process, function(j,obj){
+                            id_num++;
+                            var this_process = this;
+                            var tb_user = '';
+                            var tb_device = '';
+                            var point_class = '';
+                            if (deviceId == this_process.driveId) {
+                                point_class = 'point-red';
+                            } else {
+                                point_class = 'point-blue';
+                            }
+                            if (this_process.employeeName == null || this_process.employeeName == undefined) {
+                                var employee_option = '<option value="">选择员工</option>';
+                                $.each(employeeList, function(n,nobj){
+                                    var employee_list = this;
+                                    employee_option += '<option value="' + employee_list.employeeId + '">' + employee_list.employeeName + '</option>';
+                                });
+                                tb_user = '<select id="user' + id_num + '" process="' + this_process.processId + '" onchange="update_process(this,1)">' + employee_option + '</select>&nbsp;&nbsp;&nbsp;&nbsp;';
+                            } else {
+                                var employee_option = '';
+                                $.each(employeeList, function(n,nobj){
+                                    var employee_list = this;
+                                    if (employee_list.employeeId == this_process.employeeId) {
+                                        employee_option += '<option value="' + employee_list.employeeId + '" selected>' + employee_list.employeeName + '</option>';
+                                    } else {
+                                        employee_option += '<option value="' + employee_list.employeeId + '">' + employee_list.employeeName + '</option>';
+                                    }
+
+                                });
+                                tb_user = '<select id="user' + id_num + '" process="' + this_process.processId + '" onchange="update_process(this,1)">' + employee_option + '</select>';
+                            }
+                            if (this_process.deviceName == null || this_process.deviceName == undefined) {
+                                var device_option = '<option value="">添加打卡设备</option>';
+                                $.each(deviceList, function(n,nobj){
+                                    var device_list = this;
+                                    device_option += '<option value="' + device_list.deviceId + '">' + device_list.deviceName + '</option>';
+                                });
+                                tb_device = '(<select id="device' + id_num + '" process="' + this_process.processId + '" onchange="update_process(this,2)">' + device_option + '</select>)';
+                            } else {
+                                var device_option = '';
+                                $.each(deviceList, function(n,nobj){
+                                    var device_list = this;
+                                    if (this_process.driveId == device_list.deviceId) {
+                                        device_option += '<option value="' + device_list.deviceId + '" selected>' + device_list.deviceName + '</option>';
+                                    } else {
+                                        device_option += '<option value="' + device_list.deviceId + '">' + device_list.deviceName + '</option>';
+                                    }
+                                });
+                                tb_device = '(<select id="device' + id_num + '" process="' + this_process.processId + '" onchange="update_process(this,2)">' + device_option + '</select>)';
+                            }
+                            if (j % 2 == 0) {
+                                process += '<section>'
+                                        + '<span class="point-time ' + point_class + '">' + (j+1)
+                                        + '</span>'
+                                        + '<time>'
+                                        + '<span>' + this_process.processName
+                                        + '</span>'
+                                        + '<span class="text-blue">' + tb_user + tb_device
+                                        + '</span>'
+                                        + '</time>'
+                                        + '<aside>'
+                                        + '</aside>'
+                                        + '</section>'
+                            } else {
+                                process += '<section>'
+                                        + '<span class="point-time ' + point_class + '">' + (j+1)
+                                        + '</span>'
+                                        + '<time>'
+                                        + '</time>'
+                                        + '<aside>'
+                                        + '<span>' + this_process.processName
+                                        + '</span>'
+                                        + '<span class="text-blue">' + tb_user + tb_device
+                                        + '</span>'
+                                        + '</aside>'
+                                        + '</section>'
+                            }
+                        });
+                        li.innerHTML = '<div class="content"><article><h3>' + this_produce.produceName + '</h3>' + process + '</article></div>';
+                        li.id = 'tab_li' + i;
+                        li.setAttribute("index", i);
+                        table.appendChild(li);
+                    });
+                    tab_name.html(tab_text);
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+
+            }
+        });
+    });
+
+    function update_process(obj,num) {
+        var processId = obj.getAttribute("process");
+        var id = obj.getAttribute("id");
+        var value = $('#' + id + ' option:selected').val();
+        var data = null;
+        if (confirm("您确定修改吗?")) {
+            //num=1则是修改员工信息,num=2则是修改设备信息
+            if (num == 1) {
+                data = {
+                    processId: processId,
+                    employeeId: value
+                }
+            } else if(num == 2) {
+                data = {
+                    processId: processId,
+                    driveId: value
+                }
+            }
+            $.ajax({
+                cache: true,
+                type: "POST",
+                data: data,
+                url: "${path}/admin/equipment/update_process_info",
+                async: false,
+                success: function(dt){
+                    if (dt.returnCode == 200) {
+                        alert('恭喜您,修改成功!');
+                    } else {
+                        alert('对不起,修改失败!');
+                    }
+                }
+            })
+        } else {
+            location.reload();
+        }
+    }
+</script>
+</body>
+</html>

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/produce_list.ftl

@@ -14,7 +14,7 @@
         .chanpin-list{margin: 0;padding: 10px;list-style-type: none;}
         .chanpin-list>li{float: left;width: 230px;border: 1px solid rgba(0,0,0,.1);background-color: #fff;margin-right: 30px;}
         .chanpin-list>li .title{background-color: #32a3d8;text-align: center;color: #fff;padding: 12px 0;}
-        .chanpin-list>li .title>span{padding:3px 3px 3px 28px;background: url(${path}/common/images/jiqi-1.png) left center no-repeat;background-size:auto 80%;}
+        .chanpin-list>li .title>span{padding:3px 3px 3px 28px;background: url(${path}/common/images/pts/jiqi-1.png) left center no-repeat;background-size:auto 80%;}
         .items-list{margin: 0;padding: 20px 25px;list-style: none;}
         .items-list>li{margin: 12px 0;font-size: 13px;position: relative;padding-left: 13px;color: #666;}
         .items-list>li:after{content: '';position: absolute;left: 0;top: 5px;width: 5px;height: 5px;border-radius: 50%;border: 1px solid #32a3d8;}
@@ -47,7 +47,7 @@
                         <li>${process.processName!}</li>
                     </#list>
                     <li>
-                        <button type="button" onclick="updateProduce(1)" class="my-btn-edit">编辑流程</button>
+                        <button type="button" onclick="updateProduce(${produce.produceId!})" class="my-btn-edit">编辑流程</button>
                     </li>
                 </ul>
             </li>

+ 49 - 22
watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/save_produce.ftl

@@ -28,7 +28,7 @@
 <body>
 <article class="page-container">
     <form class="form form-horizontal" id="form-admin-addProduce">
-        <div style="padding: 10px;">
+        <div style="padding: 10px;width: 600px;margin: 0 auto;" class="">
             <div class="my-title">产品信息</div>
             <div class="input-box"><span class="input-dic">产品名称</span><input class="my-input" name="produceName" type="text" value="" placeholder="请输入产品名称"/> </div>
             <div class="input-box"><span class="input-dic">产品描述</span><input class="my-input" type="text" name="produceRemake" value="" placeholder="请输入产品描述"/> </div>
@@ -38,18 +38,20 @@
             <ul class="cp-list onrTheProcess" id="sortable">
                 <li id="1" class="processList">
                     <input type="hidden" class="processNumber" value="1">
-                    <div class="input-box"><span class="input-dic">节点类型</span>
-                        <label><input type="radio" name="processType_p1" value="1">生产工序</label>
+                    <div class="input-box"><span class="input-dic process-type">节点类型</span>
+                        <label class=""><input type="radio" name="processType_p1" value="1">生产工序</label>
                         <label><input type="radio" name="processType_p1" value="2">修理工序</label>
+                        <button type="button" class="my-btn-edit" onclick="delProcess(this)">删除节点</button>
                     </div>
-                    <div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入产品名称"/> </div>
+                    <div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入节点名称"/> </div>
                     <div class="input-box"><span class="input-dic">节点操作</span>
                         <ul class="add-list oneTheNode" >
                             <li class="nodeList">
-                                <select class="my-select"><option>1</option></select>
+                                <#--<select class="my-select"><option>1</option></select>-->
                                 <label><input type="radio" name="nodeStatus_p1_n1" value="1">正常</label>
                                 <label><input type="radio" name="nodeStatus_p1_n1" value="0">异常</label>
-                                <input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>
+                                <input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>
+                                <i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>
                             </li>
                             <li>
                                 <button type="button" class="my-btn-edit" onclick="addProNode(this)">增加节点操作</button>
@@ -91,7 +93,6 @@
             focusCleanup:true,
             success:"valid",
             submitHandler:function(form){
-                debugger;
                 $.post(root_path + "/admin/produce/save_produce", formatJSON(),function(result){
                     if (result.returnCode != 200 || result.returnCode != 200) {
                         layer.msg('录入失败,请重试!',{icon: 5,time:3000});
@@ -108,16 +109,15 @@
 
     /*将表单format为JSON*/
     function formatJSON() {
-        debugger;
         var produce = {};
 
         var oneTheProcess = $(".onrTheProcess").find(".processList");
         var proessList = new Array();
-        var i=1;
         oneTheProcess.each(function(){
             var produceProcess = {};
             produceProcess.processName =  $(this).find("[name='processName']").val();   //获取工序名称
-            var processTypeName = "processType_p"+i;         //获取工序类型名称
+            var processNumber = $(this).find(".processNumber").val();
+            var processTypeName = "processType_p"+processNumber;         //获取工序类型名称
             produceProcess.processType =  $("input[name="+ processTypeName +"]:checked").val();   //获取工序类型
 
             var nodeList =  new Array();
@@ -125,7 +125,7 @@
             $(this).find(".oneTheNode").find(".nodeList").each(function(){
                 var processNode = {};
                 processNode.nodeDes = $(this).find("[name='nodeDes']").val();   //获取节点描述
-                var nodeStatusName = "nodeStatus_p"+i+"_n" +j;
+                var nodeStatusName = "nodeStatus_p"+processNumber+"_n" +j;
                 processNode.nodeStatus = $("input[name="+ nodeStatusName +"]:checked").val();     //获取节点状态
                 nodeList.push(processNode);
                 j++;
@@ -133,13 +133,10 @@
             produceProcess.json = JSON.stringify(nodeList);     //将node变成json存入到工序对象中
             //produceProcess.nodes = nodeList;
             proessList.push(produceProcess);
-            i++;
         })
         produce.json = JSON.stringify(proessList);      //将工序变成json存入到产品对象中
         produce.produceName = $("[name='produceName']").val();//获取产品名称
         produce.produceRemake = $("[name='produceRemake']").val();//获取产品描述
-//        var s  = JSON.stringify(produce);
-//        alert(s)
         return produce;
     }
 
@@ -150,10 +147,11 @@
         var processNumber = $(node).parents(".processList").find(".processNumber").val();    //获取当前的节点标识
         var nodeNumber = $(node).parents(".oneTheNode").find(".nodeList").length + 1;       //因为是新加的节点操作所以 +1
         var nodeHtml = '<li class="nodeList">'
-                +'<select class="my-select"><option>1</option></select>&nbsp;'
+                //+'<select class="my-select"><option>1</option></select>&nbsp;'
                 +'<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n'+ nodeNumber +'" value="1">正常</label>&nbsp;'
                 +'<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n'+ nodeNumber +'" value="0">异常</label>&nbsp;'
-                +'<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>'
+                +'<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>&nbsp;'
+                +'<i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>'
                 +'</li>';
         $(node).parent().before(nodeHtml);
     }
@@ -163,20 +161,22 @@
      * @param node
      */
     function addProcess(node) {
-        var processNumber = $(node).parents(".onrTheProcess").find("processList").length + 1;  //因为是新加的工序节点所以 +1
+        var processNumber = $(".onrTheProcess").find(".processList").length + 1;  //因为是新加的工序节点所以 +1
         var processHtml = '<li id="'+ processNumber +'"  class="processList"><input type="hidden" class="processNumber" value="'+ processNumber +'">'
                 + '<div class="input-box"><span class="input-dic">节点类型</span>'
-                + '<label><input type="radio" name="processType_p2" value="1">生产工序</label>'
-                + '<label><input type="radio" name="processType_p2" value="2">修理工序</label>'
+                + '<label><input type="radio" name="processType_p'+ processNumber +'" value="1">生产工序</label>'
+                + '<label><input type="radio" name="processType_p'+ processNumber +'" value="2">修理工序</label>'
+                + '<button type="button" class="my-btn-edit" onclick="delProcess(this)">删除节点</button>'
                 + '</div>'
-                + '<div class="input-box"><span class="input-dic">第二节点</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入产品名称"/> </div>'
+                + '<div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入节点名称"/> </div>'
                 + '<div class="input-box"><span class="input-dic">节点操作</span>'
                 + '<ul class="add-list oneTheNode">'
                 + '<li class="nodeList">'
-                + '<select class="my-select"><option>1</option></select>&nbsp;'
+                //  + '<select class="my-select"><option>1</option></select>&nbsp;'
                 + '<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n1" value="1">正常</label>&nbsp;'
                 + '<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n1" value="0">异常</label>&nbsp;'
-                + '<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>'
+                + '<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>&nbsp;'
+                + '<i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>'
                 + '</li>'
                 + '<li><button type="button" class="my-btn-edit" onclick="addProNode(this)">增加节点操作</button></li>'
                 + '</ul>'
@@ -184,6 +184,33 @@
                 + '</li>';
         $(".onrTheProcess").append(processHtml);
     }
+
+    /**
+     * 删除工序节点
+     * @param node
+     */
+    function delProcess(node) {
+        var processNumber = $(node).parents(".onrTheProcess").find(".processList").length;
+        if(parseInt(processNumber) < 2){
+            layer.msg('至少要有一个节点!',{icon: 5,time:3000});
+        }else{
+            $(node).parents(".processList").remove();
+            delProcessIds += delProcessIds;
+        }
+    }
+
+    /**
+     * 删除节点操作
+     * @param node
+     */
+    function delNode(node){
+        var nodesNumber = $(node).parents(".oneTheNode").find(".nodeList").length;
+        if(parseInt(nodesNumber) < 2){
+            layer.msg('至少要有一个节点操作!',{icon: 5,time:3000});
+        }else{
+            $(node).parents(".nodeList").remove();
+        }
+    }
 </script>
 
 <script>

+ 102 - 44
watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/update_produce.ftl

@@ -6,7 +6,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
     <meta http-equiv="Cache-Control" content="no-siteapp" />
-    <#include "/base/add_base.ftl">
+<#include "/base/add_base.ftl">
     <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css" />
     <style>
         .my-title{font-weight: 500;padding-left: 15px;position: relative;}
@@ -28,41 +28,52 @@
 <body>
 <article class="page-container">
     <form class="form form-horizontal" id="form-admin-addProduce">
-        <div style="padding: 10px;">
+        <div style="padding: 10px;width: 600px;margin: 0 auto;" class="">
             <div class="my-title">产品信息</div>
-            <div class="input-box"><span class="input-dic">产品名称</span><input class="my-input" name="produceName" type="text" value="" placeholder="请输入产品名称"/> </div>
-            <div class="input-box"><span class="input-dic">产品描述</span><input class="my-input" type="text" name="produceRemake" value="" placeholder="请输入产品描述"/> </div>
+            <input type="hidden" name="produceId" value="${produce.produceId!}">
+            <div class="input-box"><span class="input-dic">产品名称</span><input class="my-input" name="produceName" type="text" value="${produce.produceName!}" placeholder="请输入产品名称"/> </div>
+            <div class="input-box"><span class="input-dic">产品描述</span><input class="my-input" type="text" name="produceRemake" value="${produce.produceRemake!}" placeholder="请输入产品描述"/> </div>
             <div style="background-color:rgba(0,0,0,.1);height: 1px;margin: 15px 0;"></div>
             <div class="my-title">节点信息</div>
 
+
             <ul class="cp-list onrTheProcess" id="sortable">
-                <li id="1" class="processList">
-                    <input type="hidden" class="processNumber" value="1">
-                    <div class="input-box"><span class="input-dic">节点类型</span>
-                        <label><input type="radio" name="processType_p1" value="1">生产工序</label>
-                        <label><input type="radio" name="processType_p1" value="2">修理工序</label>
-                    </div>
-                    <div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入产品名称"/> </div>
-                    <div class="input-box"><span class="input-dic">节点操作</span>
-                        <ul class="add-list oneTheNode" >
-                            <li class="nodeList">
-                                <select class="my-select"><option>1</option></select>
-                                <label><input type="radio" name="nodeStatus_p1_n1" value="1">正常</label>
-                                <label><input type="radio" name="nodeStatus_p1_n1" value="0">异常</label>
-                                <input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>
-                            </li>
-                            <li>
-                                <button type="button" class="my-btn-edit" onclick="addProNode(this)">增加节点操作</button>
-                            </li>
-                        </ul>
-                    </div>
-                </li>
+                    <#list produce.process as process>
+                    <li id="${process_index + 1}" class="processList">
+                        <input type="hidden" name="processId" value="${process.processId!}">
+                        <input type="hidden" class="processNumber" value="${process_index + 1}">
+                        <div class="input-box"><span class="input-dic process-type">节点类型</span>
+                            <label><input type="radio" name="processType_p${process_index + 1}" value="1" <#if process.processType == 1>checked</#if>>生产工序</label>
+                            <label><input type="radio" name="processType_p${process_index + 1}" value="2" <#if process.processType == 2>checked</#if>>修理工序</label>
+                            <button type="button" class="my-btn-edit" onclick="delProcess(this)">删除节点</button>
+                        </div>
+                        <div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="${process.processName!}" placeholder="请输入节点名称"/> </div>
+                        <div class="input-box"><span class="input-dic">节点操作</span>
+                            <ul class="add-list oneTheNode" >
+                                <#list process.nodes as nodes>
+                                    <li class="nodeList">
+                                        <input type="hidden" name="nodeId" value="${nodes.nodeId!}">
+                                        <#--<select class="my-select"><option>1</option></select>-->
+                                        <label><input type="radio" name="nodeStatus_p${process_index + 1}_n${nodes_index + 1}" value="1" <#if nodes.nodeStatus == 1>checked</#if>>正常</label>
+                                        <label><input type="radio" name="nodeStatus_p${process_index + 1}_n${nodes_index + 1}" value="0" <#if nodes.nodeStatus == 0>checked</#if>>异常</label>
+                                        <input class="my-input" name="nodeDes" type="text" value="${nodes.nodeDes!}" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>
+                                        <i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>
+                                    </li>
+                                </#list>
+                                <li>
+                                    <button type="button" class="my-btn-edit" onclick="addProNode(this)">增加节点操作</button>
+                                </li>
+                            </ul>
+                        </div>
+                    </li>
+                </#list>
             </ul>
 
+
             <div style="clear: both;"></div>
             <div><button type="button" class="my-btn-edit" onclick="addProcess(this)">增加节点</button></div>
             <div>
-                <button type="reset" class="my-btn-reset">重置</button><button type="submit" class="my-btn-submit">确认提交</button>
+                <button type="reset" class="my-btn-reset" >重置</button><button type="submit" class="my-btn-submit">确认提交</button>
             </div>
         </div>
 
@@ -73,6 +84,8 @@
 <script type="text/javascript" src="${path}/common/lib/jquery.ui/jquery-ui.js"></script>
 <script type="text/javascript">
 
+    var delProcessIds="",delNodeIds="";
+
     //动态显示隐藏所属菜单
     $(document).on('click', '.menuSubid input[type=radio]', function() {
         isSelectShow($(this).val())
@@ -91,8 +104,7 @@
             focusCleanup:true,
             success:"valid",
             submitHandler:function(form){
-                debugger;
-                $.post(root_path + "/admin/produce/save_produce", formatJSON(),function(result){
+                $.post(root_path + "/admin/produce/update_produce", formatJSON(),function(result){
                     if (result.returnCode != 200 || result.returnCode != 200) {
                         layer.msg('录入失败,请重试!',{icon: 5,time:3000});
                     } else {
@@ -106,26 +118,27 @@
         });
     });
 
-    /*将表单format为JSON*/
+    /*将表单format为JSON*/
     function formatJSON() {
-        debugger;
         var produce = {};
 
         var oneTheProcess = $(".onrTheProcess").find(".processList");
         var proessList = new Array();
-        var i=1;
         oneTheProcess.each(function(){
             var produceProcess = {};
             produceProcess.processName =  $(this).find("[name='processName']").val();   //获取工序名称
-            var processTypeName = "processType_p"+i;         //获取工序类型名称
+            var processNumber = $(this).find(".processNumber").val();
+            var processTypeName = "processType_p"+processNumber;         //获取工序类型名称
             produceProcess.processType =  $("input[name="+ processTypeName +"]:checked").val();   //获取工序类型
+            produceProcess.processId = getDelId($(this),"processId");   //获取工序id
 
             var nodeList =  new Array();
             var j=1;
             $(this).find(".oneTheNode").find(".nodeList").each(function(){
                 var processNode = {};
                 processNode.nodeDes = $(this).find("[name='nodeDes']").val();   //获取节点描述
-                var nodeStatusName = "nodeStatus_p"+i+"_n" +j;
+                processNode.nodeId = getDelId($(this),"nodeId");         //获取节点操作id
+                var nodeStatusName = "nodeStatus_p"+processNumber+"_n" +j;
                 processNode.nodeStatus = $("input[name="+ nodeStatusName +"]:checked").val();     //获取节点状态
                 nodeList.push(processNode);
                 j++;
@@ -133,27 +146,42 @@
             produceProcess.json = JSON.stringify(nodeList);     //将node变成json存入到工序对象中
             //produceProcess.nodes = nodeList;
             proessList.push(produceProcess);
-            i++;
         })
         produce.json = JSON.stringify(proessList);      //将工序变成json存入到产品对象中
+
+        produce.produceId = $("[name='produceId']").val();//获取产品id
         produce.produceName = $("[name='produceName']").val();//获取产品名称
         produce.produceRemake = $("[name='produceRemake']").val();//获取产品描述
-//        var s  = JSON.stringify(produce);
-//        alert(s)
+
+        produce.delProcessIds = delProcessIds;    //需要删除的工序id
+        produce.delNodeIds = delNodeIds;           //需要删除的节点操作id
         return produce;
     }
 
     /**
+     * 获取id
+     */
+    function getDelId(node,delIdName){
+        debugger;
+        var delId = $(node).find("[name='"+ delIdName +"']").val();
+        if(delId == null || delId == "" || typeof(delId)=="undefined" || delId == undefined ){
+            delId = 0;
+        }
+        return delId;
+    }
+
+    /**
      * 增加节点操作方法
      */
     function addProNode(node){
         var processNumber = $(node).parents(".processList").find(".processNumber").val();    //获取当前的节点标识
         var nodeNumber = $(node).parents(".oneTheNode").find(".nodeList").length + 1;       //因为是新加的节点操作所以 +1
         var nodeHtml = '<li class="nodeList">'
-                +'<select class="my-select"><option>1</option></select>&nbsp;'
+                //+'<select class="my-select"><option>1</option></select>&nbsp;'
                 +'<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n'+ nodeNumber +'" value="1">正常</label>&nbsp;'
                 +'<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n'+ nodeNumber +'" value="0">异常</label>&nbsp;'
-                +'<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>'
+                +'<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>&nbsp;'
+                +'<i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>'
                 +'</li>';
         $(node).parent().before(nodeHtml);
     }
@@ -163,20 +191,22 @@
      * @param node
      */
     function addProcess(node) {
-        var processNumber = $(node).parents(".onrTheProcess").find("processList").length + 1;  //因为是新加的工序节点所以 +1
+        var processNumber = $(".onrTheProcess").find(".processList").length + 1;  //因为是新加的工序节点所以 +1
         var processHtml = '<li id="'+ processNumber +'"  class="processList"><input type="hidden" class="processNumber" value="'+ processNumber +'">'
                 + '<div class="input-box"><span class="input-dic">节点类型</span>'
-                + '<label><input type="radio" name="processType_p2" value="1">生产工序</label>'
-                + '<label><input type="radio" name="processType_p2" value="2">修理工序</label>'
+                + '<label><input type="radio" name="processType_p'+ processNumber +'" value="1">生产工序</label>'
+                + '<label><input type="radio" name="processType_p'+ processNumber +'" value="2">修理工序</label>'
+                + '<button type="button" class="my-btn-edit" onclick="delProcess(this)">删除节点</button>'
                 + '</div>'
-                + '<div class="input-box"><span class="input-dic">第二节点</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入产品名称"/> </div>'
+                + '<div class="input-box"><span class="input-dic">节点名称</span><input class="my-input" name="processName" type="text" value="" placeholder="请输入节点名称"/> </div>'
                 + '<div class="input-box"><span class="input-dic">节点操作</span>'
                 + '<ul class="add-list oneTheNode">'
                 + '<li class="nodeList">'
-                + '<select class="my-select"><option>1</option></select>&nbsp;'
+                //  + '<select class="my-select"><option>1</option></select>&nbsp;'
                 + '<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n1" value="1">正常</label>&nbsp;'
                 + '<label><input type="radio" name="nodeStatus_p'+ processNumber +'_n1" value="0">异常</label>&nbsp;'
-                + '<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点描述,2-10位中文" maxlength="10"/>'
+                + '<input class="my-input" name="nodeDes" type="text" value="" placeholder="请输入节点操作描述,2-10位中文" maxlength="10"/>&nbsp;'
+                + '<i class="Hui-iconfont" onclick="delNode(this)">&#xe60b;</i>'
                 + '</li>'
                 + '<li><button type="button" class="my-btn-edit" onclick="addProNode(this)">增加节点操作</button></li>'
                 + '</ul>'
@@ -184,6 +214,34 @@
                 + '</li>';
         $(".onrTheProcess").append(processHtml);
     }
+
+    /**
+     * 删除工序节点
+     * @param node
+     */
+    function delProcess(node) {
+        debugger;
+        var processNumber = $(node).parents(".onrTheProcess").find(".processList").length;
+        if(parseInt(processNumber) < 2){
+            layer.msg('至少要有一个节点!',{icon: 5,time:3000});
+        }else{
+            $(node).parents(".processList").remove();
+            //delProcessIds += delProcessIds+",";
+        }
+    }
+
+    /**
+     * 删除节点操作
+     * @param node
+     */
+    function delNode(node){
+        var nodesNumber = $(node).parents(".oneTheNode").find(".nodeList").length;
+        if(parseInt(nodesNumber) < 2){
+            layer.msg('至少要有一个节点操作!',{icon: 5,time:3000});
+        }else{
+            $(node).parents(".nodeList").remove();
+        }
+    }
 </script>
 
 <script>

binární
watero-rst-web/src/main/webapp/common/images/rili-1.png


binární
watero-rst-web/src/main/webapp/common/images/select-1.png


+ 11 - 0
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -4,6 +4,7 @@ import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.net.URLDecoder;
+import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
@@ -15,6 +16,7 @@ import java.util.UUID;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.iamberry.wechat.service.ImberryConfig;
 import org.apache.commons.lang3.StringUtils;
 import org.jdom.Document;
 import org.jdom.Element;
@@ -160,6 +162,15 @@ public class ResponseWechatPayHandler {
 					
 					// 修改订单状态
 					int count = cartService.updateOrderStatus(order);
+
+					//发送短信给运营部
+					ShopSystemRule rule = cartService.getReluByRid(241);
+					try {
+						String text = MessageFormat.format(ImberryConfig.ORDER_UPDATE_STATUS_TEXT, "发货");
+						codeService.informShipping(rule.getRuleDesc(),text);
+					} catch (Exception e) {
+						System.out.println("订单换货发送消息失败!");
+					}
 					
 //System.out.println("===========pay 132 修改订单状态==============");
 					//修改优惠券状态