From 4fbe2431794ce4842a4a7d1a7242d53db86182ef Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期三, 03 七月 2024 15:06:54 +0800
Subject: [PATCH] add quality and test items Api

---
 pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java |  145 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 116 insertions(+), 29 deletions(-)

diff --git a/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
index e3b6538..cbd6c1e 100644
--- a/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
+++ b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
@@ -1,9 +1,13 @@
 package com.dy.pmsStation.assemblyStep;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.dy.pmsGlobal.daoPlt.PltProductQualityInspectionItemsMapper;
+import com.dy.pmsGlobal.daoPlt.PltProductTestInspectionItemsMapper;
 import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper;
 import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper;
 import com.dy.pmsGlobal.daoSta.*;
+import com.dy.pmsGlobal.pojoPlt.PltProductQualityInspectionItems;
+import com.dy.pmsGlobal.pojoPlt.PltProductTestInspectionItems;
 import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan;
 import com.dy.pmsGlobal.pojoPr.PrProductionNode;
 import com.dy.pmsGlobal.pojoSta.*;
@@ -12,6 +16,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 
@@ -29,42 +34,68 @@
     private StaDeviceProductionLogMapper deviceProductionLogDao;
     private StaAssemblyWorkLastMapper assemblyWorkLastDao;
     private PrAssemblyPlanMapper assemblyPlanDao;
-//    private PrProductionProcessMapper processDao;
+    //    private PrProductionProcessMapper processDao;
     private PrProductionNodeMapper nodeDao;
+    private StaRepairInfoMapper repairInfoDao;
+    private PltProductQualityInspectionItemsMapper qualityItemsDao;
+    private PltProductTestInspectionItemsMapper testItemsDao;
+
     @Autowired
     public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) {
         this.deviceLastDao = deviceLastDao;
     }
+
     @Autowired
     public void setDeviceLifeDao(StaDeviceLifeMapper deviceLifeDao) {
         this.deviceLifeDao = deviceLifeDao;
     }
+
     @Autowired
     public void setWipSnExDao(StaWipSnExMapper wipSnExDao) {
         this.wipSnExDao = wipSnExDao;
     }
+
     @Autowired
     public void setDeviceProductionLogDao(StaDeviceProductionLogMapper deviceProductionLogDao) {
         this.deviceProductionLogDao = deviceProductionLogDao;
     }
+
     @Autowired
     public void setAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao) {
         this.assemblyWorkLastDao = assemblyWorkLastDao;
     }
+
     @Autowired
     public void setAssemblyPlanDao(PrAssemblyPlanMapper assemblyPlanDao) {
         this.assemblyPlanDao = assemblyPlanDao;
     }
+
     @Autowired
     public void setNodeDao(PrProductionNodeMapper nodeDao) {
         this.nodeDao = nodeDao;
     }
 
+    @Autowired
+    public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) {
+        this.repairInfoDao = repairInfoDao;
+    }
+
+    @Autowired
+    public void setQualityItemsDao(PltProductQualityInspectionItemsMapper qualityItemsDao) {
+        this.qualityItemsDao = qualityItemsDao;
+    }
+
+    @Autowired
+    public void setTestItemsDao(PltProductTestInspectionItemsMapper testItemsDao) {
+        this.testItemsDao = testItemsDao;
+    }
+
+    @Transactional
     public int save(QueryVo params) {
-        long taskId = Long.parseLong(params.taskId);
-        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(taskId);
+        long workId = Long.parseLong(params.workId);
+        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
         if (workLast == null) {
-            throw new RuntimeException("宸ュ崟涓嶅瓨鍦�");
+            throw new RuntimeException("绯荤粺涓病鏈夎鏉$櫥褰曚俊鎭�");//宸ュ崟涓嶅瓨鍦�
         }
         PrAssemblyPlan plan = assemblyPlanDao.selectByPrimaryKey(workLast.getPlanId());
         // 楠岃瘉骞跺鐞嗚澶囧彿鍜岀墿鏂欏彿
@@ -82,13 +113,13 @@
         });
 
         if (deviceList.isEmpty()) {
-            throw new RuntimeException("璁惧鍙蜂笉灞炰簬褰撳墠浠诲姟璁″垝");
+            throw new RuntimeException("璁惧鍙�(" + params.deviceNo + ")鍧囦笉灞炰簬褰撳墠浠诲姟璁″垝");
         }
         if (deviceList.size() > 1) {
-            throw new RuntimeException("璁惧鍙锋湁涓斿彧鑳芥湁涓�涓�");
+            throw new RuntimeException("璁惧鍙锋湁涓斿彧鑳芥湁涓�涓睘浜庡綋鍓嶄换鍔¤鍒�");
         }
 
-        StaDeviceLast deviceLast = saveDeviceLast(params, workLast, deviceList);
+        StaDeviceLast deviceLast = buildDeviceLast(params, workLast, deviceList.get(0));
         int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
                 deviceLastDao.updateByPrimaryKeySelective(deviceLast);
 
@@ -117,22 +148,22 @@
         deviceLifeDao.insertSelective(life);
     }
 
-    private StaDeviceLast saveDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, List<String> deviceList){
+    private StaDeviceLast buildDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, String deviceNo) {
         //缁勮鏁版嵁
         StaDeviceLast record = new StaDeviceLast();
 
-        StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceList.get(0));
-        if(preRecord != null){
+        StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceNo);
+        if (preRecord != null) {
             record.id = preRecord.id;
             record.inTime = preRecord.outTime;
         }
         record.outTime = new Date();
 
-        record.setPlanId(workLast.planId);
-        record.setClaimId(Long.parseLong(params.taskId));
-        record.setStationId(workLast.stationId);
-        record.setEquipNo(deviceList.get(0));
-        record.setCurrNode(workLast.nodeId);
+        record.planId = workLast.planId;
+        record.workId = Long.parseLong(params.workId);
+        record.stationId = workLast.stationId;
+        record.equipNo = deviceNo;
+        record.currNode = workLast.nodeId;
 //        record.setNextNode(getNextNode(params.status,workLast.nodeId));
 
         record.updatedBy = workLast.userId;
@@ -140,34 +171,90 @@
 
         PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId);
         record.nodeContent = node.content;
-        if(node.isRecord){
+        if (node.isRecord) {
             record.equipCycleContent = node.equipCycleContent;
         }
-        record.status = getStatus(params.status,node.isEnd);
+        record.status = getStatus(params.status, node.isEnd);
         return record;
     }
-    private int saveSnEx(StaAssemblyWorkLast workLast, List<String> deviceList,List<String> materialList, PrAssemblyPlan plan){
-        StaWipSnEx snEx = new StaWipSnEx();
-        snEx.deviceNo = deviceList.get(0);
-        snEx.productNo = plan.batchNo;
-        snEx.deviceNo = materialList.get(0);
-        snEx.createTime = workLast.startTime;
-        snEx.createBy = workLast.userId;
-        snEx.productName = plan.proName;
-        return wipSnExDao.insertSelective(snEx);
+
+    private void saveSnEx(StaAssemblyWorkLast workLast, List<String> deviceList, List<String> materialList, PrAssemblyPlan plan) {
+        for (String material : materialList) {
+            StaWipSnEx snEx = new StaWipSnEx();
+            snEx.deviceNo = deviceList.get(0);
+            snEx.productId = plan.process.proId;
+            snEx.productNo = material;
+            snEx.createTime = workLast.startTime;
+            snEx.createBy = workLast.userId;
+            snEx.productName = plan.proName;
+            wipSnExDao.insertSelective(snEx);
+        }
     }
+
     /**
      * 鐘舵��: 1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾
-     * @param status 鐘舵��
+     *
+     * @param status    鐘舵��
      * @param isEndNode 鏄惁缁撴潫鑺傜偣
      * @return 鐘舵��
      */
-    private int getStatus(String status,boolean isEndNode){
+    private int getStatus(String status, boolean isEndNode) {
         return switch (status) {
-            case QrCodeConstant.MarkOk -> isEndNode? STATUS_COMPLETE:STATUS_OK;
+            case QrCodeConstant.MarkOk -> isEndNode ? STATUS_COMPLETE : STATUS_OK;
             case QrCodeConstant.MarkUnqualified -> STATUS_REPAIR;
             case QrCodeConstant.MarkWaste -> STATUS_WASTE;
             default -> throw new RuntimeException("鐘舵�侀敊璇�");
         };
     }
+
+    public int repair(QueryVo vo) {
+        long workId = Long.parseLong(vo.workId);
+        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
+        if (workLast == null) {
+            throw new RuntimeException("绯荤粺涓病鏈夎鏉$櫥褰曚俊鎭�");
+        }
+        StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo);
+        StaRepairInfo repairInfo = new StaRepairInfo();
+        repairInfo.workId = workId;
+        repairInfo.equipNo = vo.deviceNo;
+        repairInfo.repairTime = new Date();
+        repairInfo.repairBy = workLast.userId;
+        repairInfo.repairReason = vo.errorMsg;
+        repairInfo.fromNode = preDeviceRecord.currNode;
+        repairInfoDao.insertSelective(repairInfo);
+
+        StaDeviceLast deviceLast = new StaDeviceLast();
+        BeanUtils.copyProperties(preDeviceRecord, deviceLast);
+        deviceLast.repairId = repairInfo.id;
+        deviceLast.errorCode = vo.errorMsg;
+        deviceLast.assistants = vo.assistants;
+        //濡傛灉鍘熻妭鐐规槸缁撴潫鑺傜偣鎴栦箣鍚庣殑鑺傜偣锛屾槸鍒欐洿鏂颁负瀹屾垚,鍚﹀垯鏇存柊涓虹粍瑁呬腑(榛樿缁翠慨鑺傜偣鐨勭姸鎬佸彧鑳戒负 纭畾鎴� 鎶ュ簾)
+        boolean isEndNode = nodeDao.isEndNode(preDeviceRecord.currNode);
+        if (QrCodeConstant.MarkWaste.equals(vo.status)) {
+            deviceLast.status = STATUS_WASTE;
+        } else {
+            deviceLast.status = isEndNode ? STATUS_COMPLETE : STATUS_OK;
+        }
+        int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
+                deviceLastDao.updateByPrimaryKeySelective(deviceLast);
+        saveDeviceProductionLog(deviceLast);
+
+        if (isEndNode) {
+            saveDeviceLife(deviceLast);
+        }
+        return count;
+    }
+
+    public List<PltProductQualityInspectionItems> getQualityItems(String proId) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("proId", proId);//item  start  count
+        //鏌ヨ绗﹀悎鏉′欢鐨勮褰�
+        return qualityItemsDao.selectSome(params);
+    }
+
+    public List<PltProductTestInspectionItems> getTestItems(String proId) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("proId", proId);
+        return testItemsDao.selectSome(params);
+    }
 }

--
Gitblit v1.8.0