wangxiaoming 7 лет назад
Родитель
Сommit
6596cb58f9
17 измененных файлов с 671 добавлено и 137 удалено
  1. 2 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/Produce.java
  2. 0 28
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/ProduceProcess.java
  3. 13 4
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsEmployee.java
  4. 10 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/ProduceService.java
  5. 29 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsEmployeeService.java
  6. 1 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/ProduceServiceImpl.java
  7. 31 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsEmployeeServiceImpl.java
  8. 23 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ProduceMapper.java
  9. 27 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsEmployeeMapper.java
  10. 143 14
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml
  11. 80 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml
  12. 29 6
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminProduceController.java
  13. 117 5
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsEmployeeController.java
  14. 13 5
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/ProduceAppController.java
  15. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/produce_list.ftl
  16. 49 22
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/save_produce.ftl
  17. 102 44
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/update_produce.ftl

+ 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>();  //工序集合

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

@@ -28,34 +28,6 @@ public class ProduceProcess implements Serializable {
 
     private String json;    //传入的json字符串
 
-    private String produceName;             //产品名称
-    private String employeeName;            //员工名称
-    private String deviceName;              //设备名称
-
-    public String getEmployeeName() {
-        return employeeName;
-    }
-
-    public void setEmployeeName(String employeeName) {
-        this.employeeName = employeeName;
-    }
-
-    public String getDeviceName() {
-        return deviceName;
-    }
-
-    public void setDeviceName(String deviceName) {
-        this.deviceName = deviceName;
-    }
-
-    public String getProduceName() {
-        return produceName;
-    }
-
-    public void setProduceName(String produceName) {
-        this.produceName = produceName;
-    }
-
     public Integer getProcessId() {
         return processId;
     }

+ 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;
     }
 

+ 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);
 }

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

@@ -4,6 +4,7 @@ import com.iamberry.rst.core.pts.ProcessNode;
 import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.ProduceProcess;
 import com.iamberry.rst.faces.pts.ProduceService;
+import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.pts.mapper.ProduceMapper;
 import com.iamberry.rst.util.ProduceNoUtil;
 import org.springframework.beans.factory.annotation.Autowired;

+ 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;
+    }
 }

+ 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);
 }

+ 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);
+        }
+    }
 
 }

+ 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;
+        }
+
     }
 }

+ 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>