Browse Source

上传工序选项接口代码

liujiankang 7 years ago
parent
commit
b89c3726b2

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

@@ -19,12 +19,14 @@ public interface ProduceService {
     List<Produce> getAllProduceList(Integer employeeId);
 
     //获取单个产品信息
-    Produce getProduce(Integer produceId);
+    Produce getProduce(String produceNo);
 
     //获取单个工序信息
-    ProduceProcess getProduceProcess(Integer processId);
+    ProduceProcess getProduceProcess(Integer produceId,char processNo);
 
     //获取单个工序选项信息
-    ProcessNode getprocessNode(Integer nodeId);
+    ProcessNode getprocessNode(Integer ProcessId,char nodeNo);
 
+    //获取当前产品所有工序信息
+    List<ProduceProcess> listProduceProcess(Integer produceId);
 }

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

@@ -33,17 +33,30 @@ public class ProduceServiceImpl implements ProduceService {
     }
 
     @Override
-    public Produce getProduce(Integer produceId) {
-        return produceMapper.getProduce(produceId);
+    public Produce getProduce(String produceNo) {
+        return produceMapper.getProduce(produceNo);
     }
 
     @Override
-    public ProduceProcess getProduceProcess(Integer processId) {
-        return produceMapper.getProduceProcess(processId);
+    public ProduceProcess getProduceProcess(Integer produceId,char processNo) {
+        ProduceProcess produceProcess = new ProduceProcess();
+        produceProcess.setProduceId(produceId);
+        produceProcess.setProcessNo(processNo);
+        return produceMapper.getProduceProcess(produceProcess);
     }
 
     @Override
-    public ProcessNode getprocessNode(Integer nodeId) {
-        return produceMapper.getprocessNode(nodeId);
+    public ProcessNode getprocessNode(Integer ProcessId,char nodeNo) {
+        ProcessNode processNode = new ProcessNode();
+        processNode.setProcessId(ProcessId);
+        processNode.setNodeNo(nodeNo);
+        return produceMapper.getprocessNode(processNode);
     }
+
+    @Override
+    public List<ProduceProcess> listProduceProcess(Integer produceId) {
+        return produceMapper.listProduceProcess(produceId);
+    }
+
+
 }

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

@@ -19,11 +19,15 @@ public interface ProduceMapper {
     List<Produce> getAllProduceList(Integer employeeId);
 
     //获取单个产品信息
-    Produce getProduce(Integer produceId);
+    Produce getProduce(String produceNo);
 
     //获取单个工序信息
-    ProduceProcess getProduceProcess(Integer processId);
+    ProduceProcess getProduceProcess(ProduceProcess produceProcess);
 
     //获取单个工序选项信息
-    ProcessNode getprocessNode(Integer nodeId);
+    ProcessNode getprocessNode(ProcessNode processNode);
+
+    //获取当前产品所有工序信息
+    List<ProduceProcess> listProduceProcess(Integer produceId);
+
 }

+ 1 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml

@@ -2,7 +2,7 @@
 <!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.MachineLogsMapper">
     <insert id="addMachineLogs" parameterType="PtsMachineLogs" useGeneratedKeys="true" keyProperty="machineId">
-        INSERT INTO tb_rst_machine_logs
+        INSERT INTO tb_rst_pts_machine_logs
         (machine_id,employee_id,produce_id,
         process_id,device_id,employee_name,
         produce_name,process_name,device_name

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

@@ -40,7 +40,10 @@
             machine_hardware_version = #{machineHardwareVersion},
         </if>
         <if test="machineUpdateTime != null and machineUpdateTime != ''" >
-            machine_update_time = #{machineUpdateTime}
+            machine_update_time = #{machineUpdateTime},
+        </if>
+        <if test="logsErrorType != null and logsErrorType != ''" >
+            logs_error_type = #{logsErrorType}
         </if>
         <where>
             <if test="machineId != null">

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

@@ -104,9 +104,12 @@
         WHERE  tn.process_id = #{processId}
     </select>
     <!--获取产品工序节点的接口sql-start-->
-    <select id="getProduce" parameterType="Integer" resultType="Produce">
+
+    <!--根据产品编号获取产品信息-->
+    <select id="getProduce" parameterType="String" 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,
@@ -115,10 +118,10 @@
         FROM
         tb_rst_pts_produce
         WHERE
-        produce_id = #{produceId}
+        produce_no = #{produceNo}
     </select>
 
-    <select id="getProduceProcess" parameterType="Integer" resultType="ProduceProcess">
+    <select id="getProduceProcess" parameterType="ProduceProcess" resultType="ProduceProcess">
         SELECT
         pp.process_id AS processId,
         pp.produce_id AS produceId,
@@ -130,14 +133,17 @@
         pp.process_sort AS processSort,
         pp.process_remake AS processRemake,
         pp.process_create_time AS processCreateTime,
-        pp.process_update_time AS processUpdateTime
+        pp.process_update_time AS processUpdateTime,
+        pp.process_type AS processType
         FROM
         tb_rst_pts_produce_process pp
         WHERE
-        pp.process_id = #{processId}
+        pp.produce_id = #{produceId}
+        AND
+        pp.process_no = #{processNo}
     </select>
 
-    <select id="getprocessNode" parameterType="Integer" resultType="ProcessNode">
+    <select id="getprocessNode" parameterType="ProcessNode" resultType="ProcessNode">
         SELECT
         node_id AS nodeId,
         produce_id AS produceId,
@@ -150,7 +156,29 @@
         FROM
         tb_rst_pts_process_node
         WHERE
-        node_id = #{nodeId}
+        process_id = #{processId}
+        AND
+        node_no = #{nodeNo}
+    </select>
+
+    <select id="listProduceProcess" parameterType="ProduceProcess" resultType="ProduceProcess">
+        SELECT
+        pp.process_id AS processId,
+        pp.produce_id AS produceId,
+        pp.process_no AS processNo,
+        pp.process_name AS  processName,
+        pp.employee_id AS employeeId,
+        pp.drive_id AS  driveId,
+        pp.process_status AS processStatus,
+        pp.process_sort AS processSort,
+        pp.process_remake AS processRemake,
+        pp.process_create_time AS processCreateTime,
+        pp.process_update_time AS processUpdateTime
+        FROM
+        tb_rst_pts_produce_process pp
+        WHERE
+        pp.produce_id = #{produceId}
+        order by id ACS
     </select>
 
 </mapper>

+ 78 - 32
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/MachineController.java

@@ -3,11 +3,7 @@ package com.iamberry.rst.controllers.pts;
 import com.iamberry.rst.core.pts.*;
 import com.iamberry.rst.core.tools.QRCJson;
 import com.iamberry.rst.core.tools.WeixinUtil;
-import com.iamberry.rst.faces.pts.MachineService;
-import com.iamberry.rst.faces.pts.ProduceService;
-import com.iamberry.rst.service.pts.mapper.DeviceMapper;
-import com.iamberry.rst.service.pts.mapper.MachineLogsMapper;
-import com.iamberry.rst.service.pts.mapper.PtsEmployeeMapper;
+import com.iamberry.rst.faces.pts.*;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
@@ -22,6 +18,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 import java.util.Iterator;
+import java.util.List;
 
 /**
  * Created by LJK on 2017/8/29.
@@ -36,13 +33,13 @@ public class MachineController {
     private MachineService machineService;
 
     @Autowired
-    private DeviceMapper deviceMapper;
+    private DeviceService deviceService;
 
     @Autowired
-    private PtsEmployeeMapper ptsEmployeeMapper;
+    private PtsEmployeeService ptsEmployeeService;
 
     @Autowired
-    private MachineLogsMapper machineLogsMapper;
+    private MachineLogsService machineLogsService;
     @ResponseBody
     @RequestMapping("/uploadProcessOptions")
     public ResponseJson uploadProcessOptions(HttpServletRequest request,@RequestBody JSONObject query){
@@ -53,7 +50,7 @@ public class MachineController {
             return rj;
         }
         Integer employeeId = query.getInt("employeeId");//员工id
-        Integer produceId = query.getInt("produceId");//产品id
+        String produceNo = query.getString("produceId");//产品编号
         //生成条形码,二维码
         String berQrcode = String.valueOf(employeeId+new Date().getTime());
         String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix+berQrcode);
@@ -70,50 +67,99 @@ public class MachineController {
             ptsMachine.setMachineCreateTime(new Date());//创建时间
             machineService.addMachine(ptsMachine);
         }
+        boolean isAbnormality = true;//状态是否异常
         JSONArray nodes = query.getJSONArray("nodes");//选项集合(包含一个或多个工序选项,详情见示例)
         Iterator<Object> it = nodes.iterator();
         for(int i = 0;i< nodes.size();i++){
             JSONObject jsonObject = nodes.getJSONObject(i);
-            /*JSONObject jsonObject = (JSONObject) it.next();*/
-            /*System.out.println(jsonObject.toString());*/
-            Integer processId = jsonObject.getInt("processId"); //工序id
-            Integer nodeId = jsonObject.getInt("nodeId"); //工序选项id
+            String processNo = jsonObject.getString("processId"); //工序编号
+            String nodeNo = jsonObject.getString("nodeId"); //工序选项编号
             Long logsProcessTime = jsonObject.getLong("logsProcessTime"); //工序执行时间 (时间戳)
             Date logsProcessDate = new Date(logsProcessTime);
-            Produce produce = produceService.getProduce(produceId);
-            ProduceProcess produceProcess = produceService.getProduceProcess(processId);
-            ProcessNode processNode = produceService.getprocessNode(nodeId);
-            PtsDevice ptsDevice = deviceMapper.getDevice(produceProcess.getDriveId());
-            PtsEmployee ptsEmployee =ptsEmployeeMapper.getPtsEmployeeById(employeeId);
+            Produce produce = produceService.getProduce(produceNo);//根据产品编号获取产品信息
+            ProduceProcess produceProcess = produceService.getProduceProcess(produce.getProduceId(),processNo.charAt(0));
+            ProcessNode processNode = produceService.getprocessNode(produceProcess.getProcessId(),nodeNo.charAt(0));
+            PtsDevice ptsDevice = deviceService.getDevice(produceProcess.getDriveId());
+            PtsEmployee ptsEmployee =ptsEmployeeService.getPtsEmployeeById(employeeId);
             PtsMachineLogs ptsMachineLogs = new PtsMachineLogs();
             ptsMachineLogs.setDeviceId(produceProcess.getDriveId());
             ptsMachineLogs.setEmployeeId(employeeId);
-            ptsMachineLogs.setProduceId(produceId);
-            ptsMachineLogs.setProcessId(processId);
+            ptsMachineLogs.setProduceId(produce.getProduceId());
+            ptsMachineLogs.setProcessId(produceProcess.getProcessId());
             ptsMachineLogs.setMachineId(ptsMachine.getMachineId());
             ptsMachineLogs.setEmployeeName(ptsEmployee.getEmployeeName());
             ptsMachineLogs.setProduceName(produce.getProduceName());
             ptsMachineLogs.setProcessName(produceProcess.getProcessName());
             ptsMachineLogs.setDeviceName(ptsDevice.getDeviceName());
-            ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
+            if(i == 0){//如果当前循环的是第一条数据则排序必须是1,否则为异常
+                if(produceProcess.getProcessSort() == 1){
+                    if(processNode.getNodeStatus() == 0){//工序选项状态为异常则机器表状态也是异常
+                        isAbnormality = false;
+                    }
+                    ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
+                }else{
+                    ptsMachineLogs.setLogsProcessStatus(0);
+                    isAbnormality = false;
+                }
+            }else{//默认为正常
+                ptsMachineLogs.setLogsProcessStatus(1);
+            }
             ptsMachineLogs.setLogsProcessPrompt(processNode.getNodeStatus() == 0?"异常操作": null);
             ptsMachineLogs.setLogsProcessTime(logsProcessDate);
             ptsMachineLogs.setLogsCreateTime(new Date());
-            machineLogsMapper.addMachineLogs(ptsMachineLogs);
-            //根据下一条工序选项信息判断当前工序是否正常
-            if(i+1 < nodes.size()){
-                JSONObject jsonObject2 = nodes.getJSONObject(i+1);
+            //根据上一条工序选项信息判断当前工序是否正常,如果当前为修理工序则忽略,如果上一条为修理工序则查询上上一条
+            if(i > 0){
+                //查询出当前产品正常生产工序
+                //List<ProduceProcess> ProcessList = produceService.listProduceProcess(produce.getProduceId());
+                int num = 0;
+                ProduceProcess produceProcess2 = null;//当前工序的上一条非修理工序
+                JSONObject jsonObject2;//上一级工序信息
+                String processNo2 = null;//上一级工序编号
+                //先判断当前的上一次是否是修理工序,如果不是则不用执行下面的循环,否则需要循环判断
+                jsonObject2 = nodes.getJSONObject(i-1);
                 if(jsonObject2 != null){
-                    Integer processId2 = jsonObject.getInt("processId");
-                    ProduceProcess produceProcess2 = produceService.getProduceProcess(processId2);
-                    if(produceProcess2.getProcessSort() - produceProcess.getProcessSort() != 1){
-                        PtsMachine ptsMachine2 = new PtsMachine();
-                        ptsMachine2.setMachineId(ptsMachine.getMachineId());
-                        ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
-                        ptsMachine2.setMachineUpdateTime(new Date());
+                    processNo2 = jsonObject.getString("processId");
+                    produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2.charAt(0));
+                    if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
+                        if(produceProcess.getProcessSort() - produceProcess2.getProcessSort() != 1){
+                            ptsMachineLogs.setLogsProcessStatus(0);
+                            ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
+                            isAbnormality = false;
+                        }
+                    }else{
+                        for(int j = i-1;j<= i-1;j--){
+                            if(num == i){
+                                break;//只能循环 i 次,超出则跳出当前循环
+                            }
+                            jsonObject2 = nodes.getJSONObject(j);
+                            if(jsonObject2 != null){
+                                processNo2 = jsonObject.getString("processId");
+                                produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2.charAt(0));
+                                if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
+                                    break;
+                                }else{
+                                    if(produceProcess.getProcessSort() > produceProcess2.getProcessSort()){
+                                        ptsMachineLogs.setLogsProcessStatus(0);
+                                        ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
+                                        isAbnormality = false;
+                                    }
+                                }
+                            }
+                            num++;
+                        }
                     }
                 }
             }
+            //执行添加日志操作
+            machineLogsService.addMachineLogs(ptsMachineLogs);
+        }
+        //修改机器信息
+        if(isAbnormality){
+            PtsMachine ptsMachine2 = new PtsMachine();
+            ptsMachine2.setMachineId(ptsMachine.getMachineId());
+            ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
+            ptsMachine2.setMachineUpdateTime(new Date());
+            machineService.updateMachine(ptsMachine2);
         }
         //截取条形码尾号(4位)
         rj.addResponseKeyValue("barcodeTail",berQrcode.substring(berQrcode.length()-4, berQrcode.length()));