From cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期三, 25 六月 2025 11:18:22 +0800
Subject: [PATCH] 验收报告修改

---
 src/main/java/com/whyc/service/SOPService.java |   88 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 79 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/whyc/service/SOPService.java b/src/main/java/com/whyc/service/SOPService.java
index ae389ed..9c6eed5 100644
--- a/src/main/java/com/whyc/service/SOPService.java
+++ b/src/main/java/com/whyc/service/SOPService.java
@@ -1,11 +1,15 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageInfo;
 import com.whyc.dto.Response;
 import com.whyc.dto.SopDto;
 import com.whyc.mapper.SOPMapper;
 import com.whyc.pojo.SOP;
 import com.whyc.pojo.SOPFileType;
+import com.whyc.pojo.SOPLockLog;
 import com.whyc.pojo.SOPProduct;
 import com.whyc.util.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -37,6 +41,9 @@
     @Autowired
     private SOPFileTypeService fileTypeService;
 
+    @Autowired
+    private SOPLockLogService sopLockLogService;
+
 
     @Transactional
     public Response<Object> excelParse(MultipartFile multipartFile) throws IOException, InvalidFormatException {
@@ -54,7 +61,8 @@
         Sheet sheet = workbook.getSheetAt(0);
         int lastRowNum = sheet.getLastRowNum();
         //鏂囦欢鍚�
-        sop.setFileName(sheet.getRow(2).getCell(2).getStringCellValue());
+        String fileName = sheet.getRow(2).getCell(2).getStringCellValue().trim();
+        sop.setFileName(fileName);
         //涓嬮潰鐨剅ow鏄姩鎬佺殑,鍥犱负鏂囦欢绫诲瀷鐨勮鏁版槸鍔ㄦ�佹嫇灞曠殑
         //閿氱偣:鏂囦欢鐗堟湰
         int fileVersionIndex = 0;
@@ -231,8 +239,18 @@
         sop.setFileTypeList(fileTypeList);
 
         sop.setFileType(fileTypeSb.toString());
-
-        sop.setFileVersion(sheet.getRow(fileVersionIndex).getCell(2).getStringCellValue());
+        //鏍¢獙鏂囦欢鐗堟湰鏄惁宸茬粡瀛樺湪
+        String fileVersion = sheet.getRow(fileVersionIndex).getCell(2).getStringCellValue().trim();
+        QueryWrapper<SOP> query = Wrappers.query();
+        query.select("file_version").eq("file_name",fileName);
+        List<SOP> sopListExists = mapper.selectList(query);
+        for (int i = 0; i < sopListExists.size(); i++) {
+            SOP sopExists = sopListExists.get(i);
+            if(sopExists.getFileVersion().equals(fileVersion)){
+                return new Response().set(1,false,"鏂囦欢鐗堟湰宸插瓨鍦�,璇风‘璁OP鐗堟湰鏄惁姝g‘!");
+            }
+        }
+        sop.setFileVersion(fileVersion);
         sop.setFileRelatedVersion(sheet.getRow(fileVersionIndex).getCell(7).getStringCellValue());
 
         sop.setEditor(sheet.getRow(fileVersionIndex+1).getCell(2).getStringCellValue());
@@ -259,6 +277,7 @@
         sop.setReleaseNotes(releaseNotes);
 
         //绗�10琛屽紑濮�,鍊掓暟绗�2琛屾埅姝�
+        int currentFlag=0;  //閫氱敤琛ㄧず(0:闈為�氱敤,1:閫氱敤)
         for (int i = fileSuitableProductIndex+1; i < lastRowNum; i++) {
             SOPProduct product = new SOPProduct();
             //鍙栫3鍒�,绗�5鍒�
@@ -279,12 +298,12 @@
             }else{
                 product.setModel(model);
             }
-            if((code.equals("") && model.equals(""))){
-                sop.setCurrentFlag(1);//閫氱敤
+            if((!code.equals("") && !model.equals(""))){
+                currentFlag+=1;
             }
             sopProductList.add(product);
         }
-
+        sop.setCurrentFlag(currentFlag>0?0:1);//閫氱敤
         //瀛樺偍excel鏂囦欢,/sop_submit/xxx_202306250506.xlsx(鏀癸紝涓嶅瓨绮梕xcel浜�)
         /*String originalFilename = multipartFile.getOriginalFilename();
         String[] fileNameSplit = originalFilename.split("\\.");
@@ -302,15 +321,37 @@
 
     @Transactional
     public Response add(SOP sop,MultipartFile multipartFile) throws IOException {
+        //鏄惁瀛樺湪鏃х増鏈�,瀛樺湪鍒欐妸鎵�鏈夋棫鐗堟湰鐘舵�佹洿鏂颁负0
+        String userName = ActionUtil.getUser().getName();
+        Date now = new Date();
+        QueryWrapper<SOP> query = Wrappers.query();
+        query.eq("file_name",sop.getFileName()).eq("status",1);
+        List<SOP> sopListExists = mapper.selectList(query);
+        if(sopListExists.size()>0){
+            for (SOP sopExists : sopListExists) {
+                sopExists.setStatus(0);
+                mapper.updateById(sopExists);
+
+                SOPLockLog lockLog = new SOPLockLog();
+                lockLog.setSopId(sopExists.getId());
+                lockLog.setReason("鏂扮増鏈笂浼�,绯荤粺鑷姩閿佸畾鏃х増鏈�");
+                lockLog.setUserName(userName);
+                lockLog.setCreateTime(now);
+                lockLog.setStatus(0);
+                sopLockLogService.insert(lockLog);
+            }
+        }
+
         List<SOPProduct> sopProductList = sop.getSopProductList();
          String originalFilename = multipartFile.getOriginalFilename();
         String[] fileNameSplit = originalFilename.split("\\.");
-        String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(new Date());
+        String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now);
         String newFileName = fileNameSplit[0]+"_"+dateFormat+"."+fileNameSplit[1];
         String fileUrlTemp = FileUtil.saveFile(multipartFile,"/sop/"+newFileName);
         //String fileUrlTemp = sop.getFileUrl();
         //fileUrlTemp = fileUrlTemp.replace("sop_submit", "sop");
         sop.setFileUrl(fileUrlTemp);
+        sop.setStatus(1);
         mapper.insert(sop);
         if(sopProductList.size()>0) {
             sopProductList.forEach(product -> product.setSopId(sop.getId()));
@@ -350,7 +391,6 @@
 
             List<String> uploadTypeStrList = typeList.stream().map(type -> type.getType1() + ";" + type.getType2()).collect(Collectors.toList());
             List<String> dbTypeStrList = recordListInDB.stream().map(type -> type.getType1() + ";" + type.getType2()).collect(Collectors.toList());
-            Date now = new Date();
             for (int i = 0; i < uploadTypeStrList.size(); i++) {
                 String uploadTypeStr = uploadTypeStrList.get(i);
                 if (!dbTypeStrList.contains(uploadTypeStr)) {
@@ -370,7 +410,7 @@
     }
 
     //鏌ヨsop淇℃伅
-    public Response getSopInfo(List<SopDto> sqlList, String code, String model,int pageCurr,int pageSize) {
+    public Response getSopInfo(List<SopDto> sqlList, String code, String model, Integer status,String fileName, int pageCurr, int pageSize) {
         String sqlStr="  ";
         if(sqlList!=null&&sqlList.size()>0){
             for (SopDto dto:sqlList) {
@@ -378,8 +418,16 @@
                     for (int i=0;i<dto.getChileType().size();i++){
                         sqlStr+=" and file_type like "+"'%"+dto.getParentType()+"-"+dto.getChileType().get(i)+"%' ";
                     }
+                }else{
+                    sqlStr+=" and file_type like "+"'%"+dto.getParentType()+"%' ";
                 }
             }
+        }
+        if(status!=null) {
+            sqlStr += " and status = "+status;
+        }
+        if(fileName!=null) {
+            sqlStr += " and file_name like "+"'%"+fileName+"%' ";
         }
         List<SOP> list=mapper.getSopInfo(sqlStr,code,model);
         PageInfo pageInfo= PageInfoUtils.list2PageInfo(list,pageCurr,pageSize);
@@ -398,4 +446,26 @@
         }
         return new Response().setII(1,"鏇存柊sop璇存槑瀹屾垚");
     }
+
+    @Transactional
+    public Response updateStatusById(SOPLockLog lockLog) {
+        Integer id = lockLog.getSopId();
+        Integer status = lockLog.getStatus();
+        UpdateWrapper<SOP> update = Wrappers.update();
+        update.set("status",status).eq("id",id);
+        mapper.update(null,update);
+
+        //娣诲姞鏃ュ織
+        String name = ActionUtil.getUser().getName();
+        lockLog.setUserName(name);
+        lockLog.setCreateTime(new Date());
+        sopLockLogService.insert(lockLog);
+
+        return new Response().setII(1,"璁剧疆瀹屾垚");
+    }
+    //鏌ヨsop鍘嗗彶
+    public Response getSopHis(String fileName) {
+        List<SOP> list=mapper.getSopHis(fileName);
+        return new Response().setII(1,list.size()>0,list,"鏌ヨsop鍘嗗彶");
+    }
 }

--
Gitblit v1.9.1