From 50164d95bfe34f532e3f2513a53f62c0864fe1a2 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期三, 07 五月 2025 18:11:31 +0800
Subject: [PATCH] 关闭流

---
 cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java |  259 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 204 insertions(+), 55 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
index 1d58571..e8c52f0 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
@@ -1,9 +1,12 @@
 package com.ruoyi.process.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -14,12 +17,14 @@
 import com.deepoove.poi.config.ConfigureBuilder;
 import com.deepoove.poi.data.PictureRenderData;
 import com.deepoove.poi.data.Pictures;
+import com.ruoyi.common.constant.MenuJumpPathConstants;
 import com.ruoyi.common.core.domain.entity.InformationNotification;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.DateImageUtil;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.device.pojo.DeviceExamineRecord;
 import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
 import com.ruoyi.inspect.util.UserUtils;
@@ -49,6 +54,7 @@
 import java.net.URLEncoder;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -128,7 +134,7 @@
         info.setSenderId(userId);
         // 鎺ユ敹浜�
         info.setConsigneeId(supervise.getRatifyUserId());
-        info.setJumpPath("a7-quality-control-plan");
+        info.setJumpPath(MenuJumpPathConstants.QUALITY_SUPERVISE);
         informationNotificationService.addInformationNotification(info);
 
         // 鍙戦�佷紒涓氬井淇¢�氱煡
@@ -176,6 +182,7 @@
 
                     detailsUploadList.add(superviseDetails);
                 }
+
                 @Override
                 public void doAfterAllAnalysed(AnalysisContext analysisContext) {
 
@@ -238,6 +245,7 @@
      */
     @Override
     public List<Map<String, String>> getRecordUser(Integer superviseDetailsId) {
+        List<Map<String, String>> recordUser = baseMapper.getRecordUser(superviseDetailsId);
         return baseMapper.getRecordUser(superviseDetailsId);
     }
 
@@ -327,6 +335,7 @@
             template.write(os);
             os.flush();
             os.close();
+            inputStream.close();
         } catch (Exception e) {
             e.printStackTrace();
             throw new RuntimeException("瀵煎嚭澶辫触");
@@ -347,12 +356,70 @@
         QualitySuperviseDetailsRecord detailsRecord;
         detailsRecord = qualitySuperviseDetailsRecordMapper.selectOne(Wrappers.<QualitySuperviseDetailsRecord>lambdaQuery()
                 .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsId, superviseDetailsId));
+
+        // 鏌ヨ涓婁竴涓湀绗竴鏉$殑璁板綍淇℃伅, 鍒ゆ柇琚洃鐫d汉鍘诲彟澶栦竴涓�
         if (detailsRecord == null) {
+            // 鏌ヨ璇︽儏淇℃伅
+            QualitySuperviseDetails qualitySuperviseDetails = qualitySuperviseDetailsMapper.selectById(superviseDetailsId);
+            // 鏌ヨ涓婁竴涓湀绗竴鏉$殑璁板綍淇℃伅, 鍒ゆ柇琚洃鐫d汉鍘诲彟澶栦竴涓�
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.M");
+            YearMonth yearMonth = YearMonth.parse(qualitySuperviseDetails.getSuperviseTime(), formatter);
+            YearMonth previousYearMonth = yearMonth.minusMonths(1);
+
+            LocalDate startDate = previousYearMonth.atDay(1);
+            LocalDate endDate = previousYearMonth.atEndOfMonth();
+
+            LocalDateTime startDateTime = startDate.atStartOfDay();
+            LocalDateTime endDateTime = endDate.atTime(23, 59, 59);
+
+            DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+            // 鑾峰彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+            String startDateTimeStr = startDateTime.format(outputFormatter);
+            String endDateTimeStr = endDateTime.format(outputFormatter);
+
+            QualitySuperviseDetailsRecord laseRecord = qualitySuperviseDetailsRecordMapper.selectOne(Wrappers.<QualitySuperviseDetailsRecord>lambdaQuery()
+                    .between(QualitySuperviseDetailsRecord::getCreateTime, startDateTimeStr, endDateTimeStr)
+                    .isNotNull(QualitySuperviseDetailsRecord::getSupervisor)
+                    .last("limit 1"));
+
+            String supervisor = null;
+
+            if (laseRecord != null) {
+                // 鏌ヨ璁″垝鑾峰彇鍙︿竴涓洃鐫e憳
+                QualitySupervise qualitySupervise = baseMapper.selectById(qualitySuperviseDetails.getSuperviseId());
+                if (StringUtils.isNotBlank(qualitySupervise.getRecordUserIds())) {
+                    List<String> recordUserIds = StrUtil.split(qualitySupervise.getRecordUserIds(), ',');
+                    List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery()
+                            .in(User::getId, recordUserIds));
+                    if (CollectionUtils.isNotEmpty(users) && users.size() == 2) {
+                        // 鍒ゆ柇鏄惁涓�鏍�, 涓�鏍疯幏鍙栧彟澶栦竴涓�
+                        if (users.get(0).getName().equals(laseRecord.getSupervisor())) {
+                            supervisor = users.get(1).getName();
+                        } else {
+                            supervisor = users.get(0).getName();
+                        }
+
+                    }
+                }
+            }
+
             detailsRecord = new QualitySuperviseDetailsRecord();
+            detailsRecord.setSuperviseDetailsId(superviseDetailsId);
+            detailsRecord.setTestMember(qualitySuperviseDetails.getSupervisee());
+            detailsRecord.setSupervisor(supervisor);
+
+            detailsRecord.setPersonnel(SecurityUtils.getLoginUser().getUser().getNickName() + "鏈夌浉搴旀娴嬪憳鐨勪笂宀楄瘉");
+            detailsRecord.setEnvironment("娓╁害锛�()鈩� 婀垮害锛�()%");
+            detailsRecord.setInspectionRecord("妫�娴嬩汉鍛�" + SecurityUtils.getLoginUser().getUser().getNickName() + "杩涜妫�娴嬭褰曪紝璁板綍鍐呭鐪熷疄鏈夋晥");
+            detailsRecord.setExaminingReport("鐢�" + SecurityUtils.getLoginUser().getUser().getNickName() + "鍑虹ず鐨勬娴嬫姤鍛婄鍚堣鑼冭姹�");
+            detailsRecord.setSupervisionEvaluation("妫�娴嬫寜鐓ц姹傝繘琛岋紝鍒ゅ畾涓烘弧鎰�");
+            detailsRecord.setHandlingAdvice("/");
+
         }
         // 娣诲姞鎵瑰噯浜哄悕绉�
         if (detailsRecord.getRatifyUserId() != null) {
-            User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
+            User user = userMapper.selectById(detailsRecord.getRatifyUserId());
             detailsRecord.setRatifyUserName(user.getName());
         }
         return detailsRecord;
@@ -368,7 +435,11 @@
         if (qualitySuperviseDetailsRecord.getSuperviseDetailsId() == null) {
             throw new ErrorException("缂哄皯鐩戠潱璇︾粏淇℃伅id");
         }
-        qualitySuperviseDetailsRecordMapper.insert(qualitySuperviseDetailsRecord);
+        if (qualitySuperviseDetailsRecord.getSuperviseDetailsRecordId() == null) {
+            qualitySuperviseDetailsRecordMapper.insert(qualitySuperviseDetailsRecord);
+        } else {
+            qualitySuperviseDetailsRecordMapper.updateById(qualitySuperviseDetailsRecord);
+        }
 
         if (qualitySuperviseDetailsRecord.getRatifyUserId() != null) {
 
@@ -383,11 +454,11 @@
             info.setCreateUser(user.getName());
             info.setMessageType("6");
             info.setTheme("CNAS璐ㄩ噺鐩戠潱璁板綍瀹℃壒閫氱煡");
-            info.setContent("鐩戠潱椤圭洰涓�: " + superviseDetails.getSuperviseProject() + " 鐩戠潱璁板綍甯﹀鎵�");
+            info.setContent("鐩戠潱椤圭洰涓�: " + superviseDetails.getSuperviseProject() + " 鐩戠潱璁板綍寰呭鎵�");
             info.setSenderId(userId);
             // 鎺ユ敹浜�
             info.setConsigneeId(qualitySuperviseDetailsRecord.getRatifyUserId());
-            info.setJumpPath("a7-quality-control-plan");
+            info.setJumpPath(MenuJumpPathConstants.QUALITY_SUPERVISE);
             informationNotificationService.addInformationNotification(info);
 
             // 鍙戦�佷紒涓氬井淇¢�氱煡
@@ -397,7 +468,7 @@
                 String message = "";
                 message += "CNAS璐ㄩ噺鐩戠潱璁板綍瀹℃壒閫氱煡";
                 message += "\n璇峰幓杩囩▼瑕佹眰-璐ㄩ噺鐩戠潱璁″垝";
-                message += "\n" + "鐩戠潱椤圭洰涓�: " + superviseDetails.getSuperviseProject() + " 鐩戠潱璁板綍甯﹀鎵�";
+                message += "\n" + "鐩戠潱椤圭洰涓�: " + superviseDetails.getSuperviseProject() + " 鐩戠潱璁板綍寰呭鎵�";
                 //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
                 try {
                     WxCpUtils.inform(people.getAccount(), message, null);
@@ -406,6 +477,10 @@
                 }
             });
         }
+        // 娓呯┖鐘舵��
+        qualitySuperviseDetailsRecordMapper.update(null, Wrappers.<QualitySuperviseDetailsRecord>lambdaUpdate()
+                .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsRecordId, qualitySuperviseDetailsRecord.getSuperviseDetailsRecordId())
+                .set(QualitySuperviseDetailsRecord::getIsFinish, null));
 
         return true;
     }
@@ -417,16 +492,27 @@
      */
     @Override
     public boolean addSuperviseRecordOpinion(QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord) {
-        if (qualitySuperviseDetailsRecord.getIsAccording() == null) {
-            throw new ErrorException("缂哄皯鏈�缁堢粨鏋�");
+        if (qualitySuperviseDetailsRecord.getIsFinish() == null) {
+            throw new RuntimeException("缂哄皯璁板綍缁撴灉鐘舵��");
         }
 
-        qualitySuperviseDetailsRecordMapper.update(null, Wrappers.<QualitySuperviseDetailsRecord>lambdaUpdate()
+        LambdaUpdateWrapper<QualitySuperviseDetailsRecord> wrapper = Wrappers.<QualitySuperviseDetailsRecord>lambdaUpdate()
                 .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsId, qualitySuperviseDetailsRecord.getSuperviseDetailsId())
                 .set(QualitySuperviseDetailsRecord::getRatifyOpinion, qualitySuperviseDetailsRecord.getRatifyOpinion())
-                .set(QualitySuperviseDetailsRecord::getRatifyTime, LocalDateTime.now())
                 .set(QualitySuperviseDetailsRecord::getIsAccording, qualitySuperviseDetailsRecord.getIsAccording())
-                .set(QualitySuperviseDetailsRecord::getIsFinish, 1));
+                .set(QualitySuperviseDetailsRecord::getIsFinish, qualitySuperviseDetailsRecord.getIsFinish());
+
+        // 涓�0娓呴櫎瀹℃牳浜�
+        if (qualitySuperviseDetailsRecord.getIsFinish().equals(0)) {
+            wrapper.set(QualitySuperviseDetailsRecord::getRatifyUserId, null)
+                    .set(QualitySuperviseDetailsRecord::getRatifyTime, null);
+        } else {
+            wrapper.set(QualitySuperviseDetailsRecord::getRatifyTime, LocalDateTime.now());
+        }
+
+        qualitySuperviseDetailsRecordMapper.update(null, wrapper);
+
+
         return true;
     }
 
@@ -437,27 +523,27 @@
      */
     @Override
     public void exportSuperviseDetailRecord(Integer superviseDetailsId, HttpServletResponse response) {
-        QualitySuperviseDetailsRecord recordDto =  qualitySuperviseDetailsRecordMapper.selectSuperviseDetailRecord(superviseDetailsId);
+        QualitySuperviseDetailsRecord recordDto = qualitySuperviseDetailsRecordMapper.selectSuperviseDetailRecord(superviseDetailsId);
 
-        //鑾峰彇鎶�鏈礋璐d汉鐨勭鍚嶅湴鍧�
-        String ratifyUrl = null;
-        if (recordDto.getRatifyUserId() != null) {
-            ratifyUrl = userMapper.selectById(recordDto.getRatifyUserId()).getSignatureUrl();
-            if (StringUtils.isBlank(ratifyUrl)) {
-                throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�");
-            }
+        // 鏌ヨ妫�娴嬩汉鍛�
+        User tserUser = new User();
+        if (StringUtils.isNotBlank(recordDto.getTestMember())) {
+            tserUser = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+                    .eq(User::getName, recordDto.getTestMember())
+                    .last("limit 1"));
         }
 
         // 鑾峰彇璺緞
         InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-detail-record.docx");
         ConfigureBuilder builder = Configure.builder();
         builder.useSpringEL(true);
-        String finalRatifyUrl = ratifyUrl;
+        User finalTserUser = tserUser;
         XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
                 new HashMap<String, Object>() {{
                     put("supervision", recordDto);
+                    put("testMemberUrl", UserUtils.getFinalUserSignatureUrl(finalTserUser.getId()));
                     put("supervisoruUrl", UserUtils.getFinalUserSignatureUrl(recordDto.getSupervisor()));
-                    put("technicalDirectorUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
+                    put("technicalDirectorUrl", UserUtils.getFinalUserSignatureUrl(recordDto.getRatifyUserId()));
                     put("technicalDirectorDateUrl", recordDto.getRatifyTime() != null ?
                             Pictures.ofStream(DateImageUtil.createDateImage(recordDto.getRatifyTime())).create() : null);
                 }});
@@ -472,6 +558,7 @@
             template.write(os);
             os.flush();
             os.close();
+            inputStream.close();
         } catch (Exception e) {
             e.printStackTrace();
             throw new RuntimeException("瀵煎嚭澶辫触");
@@ -489,10 +576,10 @@
     public boolean addSuperviseDetailAccording(QualitySuperviseDetailsAccording detailsAccording) {
         QualitySuperviseDetailsAccording according = new QualitySuperviseDetailsAccording();
         // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
-        User user = userMapper.selectById( SecurityUtils.getUserId().intValue());
+        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
         String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
         switch (detailsAccording.getFlowType()) {
-                // 涓嶇鍚堝伐浣滄儏鍐佃褰�
+            // 涓嶇鍚堝伐浣滄儏鍐佃褰�
             case 0:
                 if (detailsAccording.getSuperviseDetailsId() == null) {
                     throw new ErrorException("缂哄皯璐ㄩ噺鐩戠潱璇︽儏Id");
@@ -525,7 +612,7 @@
                 qualitySuperviseDetailsAccordingMapper.insert(according);
                 break;
 
-                // 1澶勭悊鎺柦
+            // 1澶勭悊鎺柦
             case 1:
                 according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
                 according.setEliminateMeasure(detailsAccording.getEliminateMeasure());//娓呴櫎涓嶇鍚堟帾鏂�
@@ -540,7 +627,7 @@
                 qualitySuperviseDetailsAccordingMapper.updateById(according);
                 break;
 
-                // 绾犳鎺柦
+            // 绾犳鎺柦
             case 2:
                 according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
                 according.setCorrectContent(detailsAccording.getCorrectContent());//绾犳鎺柦鍐呭
@@ -555,7 +642,7 @@
                 qualitySuperviseDetailsAccordingMapper.updateById(according);
                 break;
 
-                //鏄惁閫氱煡瀹㈡埛鍙仮澶嶅伐浣�
+            //鏄惁閫氱煡瀹㈡埛鍙仮澶嶅伐浣�
             case 3:
                 according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
                 according.setNotifyCustomer(detailsAccording.getNotifyCustomer());//閫氱煡瀹㈡埛
@@ -590,7 +677,12 @@
         // 琚洃鐫d汉
         User supervisedUser = userMapper.selectById(detailsAccording.getSupervisedUserId());
         detailsAccording.setSupervisedUserName(supervisedUser.getName());//琚洃鐫�
-        qualitySuperviseDetailsAccordingMapper.insert(detailsAccording);
+
+        if (detailsAccording.getSuperviseDetailsAccordingId() == null) {
+            qualitySuperviseDetailsAccordingMapper.insert(detailsAccording);
+        } else {
+            qualitySuperviseDetailsAccordingMapper.updateById(detailsAccording);
+        }
 
         if (detailsAccording.getApproverUserId() != null) {
             // 鏌ヨ璇︽儏淇℃伅
@@ -606,7 +698,7 @@
             info.setSenderId(userId);
             // 鎺ユ敹浜�
             info.setConsigneeId(detailsAccording.getApproverUserId());
-            info.setJumpPath("a7-quality-control-plan");
+            info.setJumpPath(MenuJumpPathConstants.QUALITY_SUPERVISE);
             informationNotificationService.addInformationNotification(info);
 
             // 鍙戦�佷紒涓氬井淇¢�氱煡
@@ -626,6 +718,11 @@
             });
         }
 
+        // 娓呯┖鐘舵��
+        qualitySuperviseDetailsAccordingMapper.update(null, Wrappers.<QualitySuperviseDetailsAccording>lambdaUpdate()
+                .eq(QualitySuperviseDetailsAccording::getSuperviseDetailsAccordingId, detailsAccording.getSuperviseDetailsAccordingId())
+                .set(QualitySuperviseDetailsAccording::getIsFinish, null));
+
         return true;
     }
 
@@ -637,22 +734,41 @@
      */
     @Override
     public boolean approverEquipSuperviseDetailAccording(QualitySuperviseDetailsAccording detailsAccording) {
+        if (detailsAccording.getIsFinish() == null) {
+            throw new RuntimeException("缂哄皯鎵瑰噯鐘舵��");
+        }
+
         QualitySuperviseDetailsAccording according = new QualitySuperviseDetailsAccording();
         according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
-        // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
-        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
-        String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
 
-        according.setResponsibleDepartment(departmentLimsName);//璐d换閮ㄩ棬
-        according.setActionsUserId(user.getId());//澶勭悊浜篿d
-        according.setActionsUserName(user.getName());//澶勭悊浜�
+        if (detailsAccording.getIsFinish().equals(1)) {
+            // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
+            User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
+            String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
 
-        according.setCorrectUserId(user.getId());//绾犳璐熻矗浜篿d
-        according.setCorrectUserName(user.getName());//绾犳璐熻矗浜�
+            according.setResponsibleDepartment(departmentLimsName);//璐d换閮ㄩ棬
+            according.setActionsUserId(user.getId());//澶勭悊浜篿d
+            according.setActionsUserName(user.getName());//澶勭悊浜�
 
-        according.setQualityManagerUserId(user.getId());//璐ㄩ噺璐熻矗浜篿d
-        according.setQualityManagerUserName(user.getName());//璐ㄩ噺璐熻矗浜�
-        according.setIsFinish(1);
+            according.setCorrectUserId(user.getId());//绾犳璐熻矗浜篿d
+            according.setCorrectUserName(user.getName());//绾犳璐熻矗浜�
+
+            according.setQualityManagerUserId(user.getId());//璐ㄩ噺璐熻矗浜篿d
+            according.setQualityManagerUserName(user.getName());//璐ㄩ噺璐熻矗浜�
+        } else {
+            qualitySuperviseDetailsAccordingMapper.update(null, Wrappers.<QualitySuperviseDetailsAccording>lambdaUpdate()
+                    .eq(QualitySuperviseDetailsAccording::getSuperviseDetailsAccordingId, detailsAccording.getSuperviseDetailsAccordingId())
+                    .set(QualitySuperviseDetailsAccording::getResponsibleDepartment, null)
+                    .set(QualitySuperviseDetailsAccording::getActionsUserId, null)
+                    .set(QualitySuperviseDetailsAccording::getActionsUserName, null)
+                    .set(QualitySuperviseDetailsAccording::getCorrectUserId, null)
+                    .set(QualitySuperviseDetailsAccording::getCorrectUserName, null)
+                    .set(QualitySuperviseDetailsAccording::getQualityManagerUserId, null)
+                    .set(QualitySuperviseDetailsAccording::getQualityManagerUserName, null)
+                    .set(QualitySuperviseDetailsAccording::getApproverUserId, null));
+        }
+
+        according.setIsFinish(detailsAccording.getIsFinish());
         qualitySuperviseDetailsAccordingMapper.updateById(according);
         return true;
     }
@@ -673,6 +789,7 @@
             detailsAccording = new QualitySuperviseDetailsAccording();
             // 鏌ヨ鐩戠潱璁″垝璇︽儏
             QualitySuperviseDetails superviseDetails = qualitySuperviseDetailsMapper.selectById(superviseDetailsId);
+            superviseDetails.setSuperviseDetailsId(superviseDetailsId);
             detailsAccording.setSupervisedUserId(superviseDetails.getSupervisedUserId());
             detailsAccording.setSupervisedUserName(superviseDetails.getSupervisee());
         }
@@ -760,6 +877,7 @@
             template.write(os);
             os.flush();
             os.close();
+            inputStream.close();
         } catch (Exception e) {
             e.printStackTrace();
             throw new RuntimeException("瀵煎嚭澶辫触");
@@ -777,7 +895,7 @@
         String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
 
         switch (detailsCorrect.getFlowType()) {
-                // 涓嶅悎鏍兼彁鍑�
+            // 涓嶅悎鏍兼彁鍑�
             case 0:
                 if (detailsCorrect.getSuperviseDetailsId() == null) {
                     throw new ErrorException("缂哄皯璐ㄩ噺鐩戠潱璇︽儏Id");
@@ -801,7 +919,7 @@
 
                 break;
 
-                // 鍘熷洜鍒嗘瀽
+            // 鍘熷洜鍒嗘瀽
             case 1:
                 correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
                 correct.setCauseResult(detailsCorrect.getCauseResult());//鍘熷洜鍒嗘瀽
@@ -817,7 +935,7 @@
                 qualitySuperviseDetailsCorrectMapper.updateById(correct);
                 break;
 
-                // 绾犳鎺柦
+            // 绾犳鎺柦
             case 2:
                 correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
                 correct.setCorrectResult(detailsCorrect.getCorrectResult());//2绾犳鎺柦
@@ -834,7 +952,7 @@
                 qualitySuperviseDetailsCorrectMapper.updateById(correct);
                 break;
 
-                // 楠岃瘉缁撴灉
+            // 楠岃瘉缁撴灉
             case 3:
                 correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
                 correct.setValidationResult(detailsCorrect.getValidationResult());//3楠岃瘉缁撴灉
@@ -864,7 +982,11 @@
         detailsCorrect.setRaiseDepartment(departmentLimsName);//鎻愬嚭閮ㄩ棬
         detailsCorrect.setRaiseUserId(user.getId());//鎻愬嚭浜篿d
         detailsCorrect.setRaiseUserName(user.getName());// 鎻愬嚭浜�
-        qualitySuperviseDetailsCorrectMapper.insert(detailsCorrect);
+        if (detailsCorrect.getSuperviseDetailsCorrectId() == null) {
+            qualitySuperviseDetailsCorrectMapper.insert(detailsCorrect);
+        } else {
+            qualitySuperviseDetailsCorrectMapper.updateById(detailsCorrect);
+        }
 
         if (detailsCorrect.getApproverUserId() != null) {
             // 鏌ヨ璇︽儏淇℃伅
@@ -880,7 +1002,7 @@
             info.setSenderId(userId);
             // 鎺ユ敹浜�
             info.setConsigneeId(detailsCorrect.getApproverUserId());
-            info.setJumpPath("a7-quality-control-plan");
+            info.setJumpPath(MenuJumpPathConstants.QUALITY_SUPERVISE);
             informationNotificationService.addInformationNotification(info);
 
             // 鍙戦�佷紒涓氬井淇¢�氱煡
@@ -900,6 +1022,10 @@
             });
         }
 
+        // 娓呯┖鐘舵��
+        qualitySuperviseDetailsCorrectMapper.update(null, Wrappers.<QualitySuperviseDetailsCorrect>lambdaUpdate()
+                .eq(QualitySuperviseDetailsCorrect::getSuperviseDetailsCorrectId, detailsCorrect.getSuperviseDetailsCorrectId())
+                .set(QualitySuperviseDetailsCorrect::getIsFinish, null));
         return true;
     }
 
@@ -909,24 +1035,45 @@
      */
     @Override
     public boolean approveEquipSuperviseDetailCorrect(QualitySuperviseDetailsCorrect detailsCorrect) {
+        if (detailsCorrect.getIsFinish() == null) {
+            throw new RuntimeException("缂哄皯鎵瑰噯鐘舵��");
+        }
+
         QualitySuperviseDetailsCorrect correct = new QualitySuperviseDetailsCorrect();
         // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
         User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
         String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
         correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
 
-        correct.setCauseDepartment(departmentLimsName);//鍘熷洜鍒嗘瀽璐d换閮ㄩ棬
-        correct.setCauseUserId(user.getId());//1鍘熷洜鍒嗘瀽浜篿d
-        correct.setCauseUserName(user.getName());// 1鍘熷洜鍒嗘瀽浜�
+        if (detailsCorrect.getIsFinish().equals(1)) {
+            correct.setCauseDepartment(departmentLimsName);//鍘熷洜鍒嗘瀽璐d换閮ㄩ棬
+            correct.setCauseUserId(user.getId());//1鍘熷洜鍒嗘瀽浜篿d
+            correct.setCauseUserName(user.getName());// 1鍘熷洜鍒嗘瀽浜�
 
-        correct.setCorrectDepartment(departmentLimsName);//2绾犳璐d换閮ㄩ棬
-        correct.setCorrectUserId(user.getId());//2绾犳浜篿d
-        correct.setCorrectUserName(user.getName());// 2绾犳浜�
+            correct.setCorrectDepartment(departmentLimsName);//2绾犳璐d换閮ㄩ棬
+            correct.setCorrectUserId(user.getId());//2绾犳浜篿d
+            correct.setCorrectUserName(user.getName());// 2绾犳浜�
 
-        correct.setValidationDepartment(departmentLimsName);//3楠岃瘉閮ㄩ棬
-        correct.setValidationUserId(user.getId());//3楠岃瘉浜篿d
-        correct.setValidationUserName(user.getName());// 3楠岃瘉浜�
-        correct.setIsFinish(1);
+            correct.setValidationDepartment(departmentLimsName);//3楠岃瘉閮ㄩ棬
+            correct.setValidationUserId(user.getId());//3楠岃瘉浜篿d
+            correct.setValidationUserName(user.getName());// 3楠岃瘉浜�
+        } else {
+            qualitySuperviseDetailsCorrectMapper.update(null, Wrappers.<QualitySuperviseDetailsCorrect>lambdaUpdate()
+                    .eq(QualitySuperviseDetailsCorrect::getSuperviseDetailsCorrectId, detailsCorrect.getSuperviseDetailsCorrectId())
+                    .set(QualitySuperviseDetailsCorrect::getCauseDepartment, null)
+                    .set(QualitySuperviseDetailsCorrect::getCauseUserId, null)
+                    .set(QualitySuperviseDetailsCorrect::getCauseUserName, null)
+                    .set(QualitySuperviseDetailsCorrect::getCorrectDepartment, null)
+                    .set(QualitySuperviseDetailsCorrect::getCorrectUserId, null)
+                    .set(QualitySuperviseDetailsCorrect::getCorrectUserName, null)
+                    .set(QualitySuperviseDetailsCorrect::getValidationDepartment, null)
+                    .set(QualitySuperviseDetailsCorrect::getValidationUserId, null)
+                    .set(QualitySuperviseDetailsCorrect::getValidationUserName, null)
+                    .set(QualitySuperviseDetailsCorrect::getApproverUserId, null)
+            );
+        }
+
+        correct.setIsFinish(detailsCorrect.getIsFinish());
         qualitySuperviseDetailsCorrectMapper.updateById(correct);
 
         return true;
@@ -946,6 +1093,7 @@
 
         if (detailsCorrect == null) {
             detailsCorrect = new QualitySuperviseDetailsCorrect();
+            detailsCorrect.setSuperviseDetailsId(superviseDetailsId);
         }
         return detailsCorrect;
     }
@@ -1108,6 +1256,7 @@
             template.write(os);
             os.flush();
             os.close();
+            inputStream.close();
         } catch (Exception e) {
             e.printStackTrace();
             throw new RuntimeException("瀵煎嚭澶辫触");

--
Gitblit v1.9.3