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 | 130 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 109 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/whyc/service/SOPService.java b/src/main/java/com/whyc/service/SOPService.java index 930cd46..9c6eed5 100644 --- a/src/main/java/com/whyc/service/SOPService.java +++ b/src/main/java/com/whyc/service/SOPService.java @@ -1,15 +1,17 @@ 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.ActionUtil; -import com.whyc.util.CommonUtil; -import com.whyc.util.DateUtil; -import com.whyc.util.FileUtil; +import com.whyc.util.*; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Sheet; @@ -18,11 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; @@ -41,6 +41,9 @@ @Autowired private SOPFileTypeService fileTypeService; + @Autowired + private SOPLockLogService sopLockLogService; + @Transactional public Response<Object> excelParse(MultipartFile multipartFile) throws IOException, InvalidFormatException { @@ -58,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; @@ -235,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()); @@ -263,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鍒� @@ -283,17 +298,20 @@ }else{ product.setModel(model); } - + if((!code.equals("") && !model.equals(""))){ + currentFlag+=1; + } sopProductList.add(product); } - //瀛樺偍excel鏂囦欢,/sop_submit/xxx_202306250506.xlsx - String originalFilename = multipartFile.getOriginalFilename(); + sop.setCurrentFlag(currentFlag>0?0:1);//閫氱敤 + //瀛樺偍excel鏂囦欢,/sop_submit/xxx_202306250506.xlsx(鏀癸紝涓嶅瓨绮梕xcel浜�) + /*String originalFilename = multipartFile.getOriginalFilename(); String[] fileNameSplit = originalFilename.split("\\."); String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(new Date()); String newFileName = fileNameSplit[0]+"_"+dateFormat+"."+fileNameSplit[1]; String fileUrl = FileUtil.saveFile(multipartFile,"/sop_submit/"+newFileName); - sop.setFileUrl(fileUrl); + sop.setFileUrl(fileUrl);*/ sopProductList = sopProductList.stream().filter(product -> !product.getCode().equals("")).collect(Collectors.toList()); sop.setSopProductList(sopProductList); @@ -302,18 +320,45 @@ } @Transactional - public Response add(SOP sop) throws IOException { + 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 fileUrlTemp = sop.getFileUrl(); - fileUrlTemp = fileUrlTemp.replace("sop_submit", "sop"); + String originalFilename = multipartFile.getOriginalFilename(); + String[] fileNameSplit = originalFilename.split("\\."); + 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())); productService.insertBatch(sopProductList); } //鏂囦欢杞Щ - String fileUrl = sop.getFileUrl(); + /*String fileUrl = sop.getFileUrl(); String projectDir = CommonUtil.getProjectDir(); String filePathFrom = projectDir + File.separator + fileUrl.replace("sop","sop_submit"); File fileFrom = new File(filePathFrom); @@ -322,7 +367,7 @@ if(!fileTo.getParentFile().exists()){ fileTo.getParentFile().mkdirs(); } - FileCopyUtils.copy(fileFrom,fileTo); + FileCopyUtils.copy(fileFrom,fileTo);*/ //鏂板鐨勬枃浠剁被鍨�,杩藉姞鍒拌〃涓� List<SOPFileType> typeList = new LinkedList<>(); @@ -346,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)) { @@ -366,7 +410,7 @@ } //鏌ヨsop淇℃伅 - public Response getSopInfo(List<SopDto> sqlList, String code, String model) { + 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) { @@ -374,10 +418,54 @@ 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); - return new Response().setII(1,list.size()>0,list,"鏌ヨsop淇℃伅"); + PageInfo pageInfo= PageInfoUtils.list2PageInfo(list,pageCurr,pageSize); + + return new Response().setII(1,list.size()>0,pageInfo,"鏌ヨsop淇℃伅"); + } + + //鏇存柊sop璇存槑锛堜笉鍚攣淇℃伅锛� + @Transactional + public Response updateSop(SOP sop) { + List<SOPProduct> sopProductList = sop.getSopProductList(); + mapper.updateById(sop); + if(sopProductList.size()>0) { + sopProductList.forEach(product -> product.setSopId(sop.getId())); + productService.updateBySid(sopProductList,sop.getId()); + } + 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