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/WorksheetLinkService.java | 182 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 165 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/whyc/service/WorksheetLinkService.java b/src/main/java/com/whyc/service/WorksheetLinkService.java index dc08c90..a93f1d8 100644 --- a/src/main/java/com/whyc/service/WorksheetLinkService.java +++ b/src/main/java/com/whyc/service/WorksheetLinkService.java @@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.whyc.config.EnumWorksheetType; +import com.whyc.dto.Response; import com.whyc.mapper.ProductBomApprovingMapper; import com.whyc.mapper.WorksheetLinkMapper; import com.whyc.pojo.*; import com.whyc.util.CommonUtil; import com.whyc.util.FileUtil; +import com.whyc.util.WordUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -15,6 +17,7 @@ import javax.annotation.Resource; import java.io.File; +import java.io.FilenameFilter; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -66,6 +69,12 @@ @Autowired private ProductHistoryService phService; + + @Autowired + private ProcedureDocApprovingService procedureDocApprovingService; + + @Autowired + private ProcedureDocService procedureDocService; @Transactional public void audit(WorksheetLink link) { @@ -145,11 +154,29 @@ String parentCode = productApproving.getParentCode(); String customCode = productApproving.getCustomCode(); ProductHistory latestProduct = phService.getLatestVersion(parentCode, customCode); + ProductHistory enabledProduct = phService.getEnabledByParentCodeAndCustomCode(parentCode, customCode); int currentVersion = 0; if (latestProduct != null) { currentVersion = latestProduct.getVersion(); } Integer nextVersion = currentVersion + 1; + //浜у搧鐗╂枡鍏崇郴杩佺Щ + //鏌ヨ鐢熸晥鐗堟湰鐨勫叧鑱斿叧绯� + if(latestProduct!=null &&enabledProduct!=null) { + List<MaterialProductHistory> mpList = mphService.getListByParentCodeAndCustomCodeAndVersion(parentCode, customCode, enabledProduct.getVersion()); + if (latestProduct.getVersion().intValue() == enabledProduct.getVersion()) { + //鏈�鏂扮増鏈敓鏁�,鍏宠仈鍏崇郴鐗堟湰杩炵潃鐨� + mphService.updateVersionBatch(mpList); + } else { + //鏃х増鏈敓鏁�,鍏宠仈鍏崇郴鐗堟湰涓嶈繛鐫� + mpList.forEach(mp -> { + mp.setSVersion(nextVersion); + mp.setEVersion(nextVersion); + }); + mphService.insertBatch(mpList); + } + } + //灏嗕骇鍝佹枃浠跺鍒惰嚦姝e紡璺緞 //鏂囦欢杞Щ,鏈窡瀛愪欢鎸傞挬鐨勬墍鏈夊浘绾稿浘鐗囪浆绉诲埌浜у搧鐗堟湰涓�:doc_file/product/{浜у搧鍨嬪彿}/standard鎴栬�厈customCode}}/{version}/ //璺熷瓙浠舵寕閽╃殑杞Щ鍒板瓙浠跺浘绾镐笅:doc_file/material/ @@ -182,7 +209,7 @@ Material temp = new Material(); temp.setSubModel(approving.getSubModel()); - temp.setNotes(CommonUtil.getProjectDir() + File.separator + "doc_file" + File.separator + "material" + temp.setNotes("doc_file" + File.separator + "material" + File.separator + fileFullName); materialDwgUrlNameList.add(temp); break; @@ -199,7 +226,7 @@ String filename = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1, picUrl.length() - 4); String fileFullName = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1); if(approving.getSubModel().toUpperCase().equals(filename.toUpperCase())){ - approving.setPictureUrl(CommonUtil.getProjectDir() + File.separator + "doc_file" + File.separator + "material" + approving.setPictureUrl("doc_file" + File.separator + "material" + File.separator + fileFullName); break; } @@ -241,6 +268,15 @@ String dwgName = materialUrl.substring(materialUrl.lastIndexOf(File.separator) + 1, materialUrl.length() - 4); try { FileCopyUtils.copy(new File(materialUrl),new File(materialDir+File.separator+dwgName+".dwg")); + } catch (IOException e) { + e.printStackTrace(); + } + }); + + picUrlList.forEach(picUrl->{ + String picFullName = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1); + try { + FileCopyUtils.copy(new File(picUrl),new File(materialDir+File.separator+picFullName)); } catch (IOException e) { e.printStackTrace(); } @@ -295,7 +331,7 @@ bom.setThickness(approving.getThickness()); bom.setType(approving.getType()); bom.setUnit(approving.getUnit()); - bom.setUpUserId(approving.getUpUserId()); + //bom.setUpUserId(approving.getUpUserId()); bom.setVersion(nextVersion); bomHistory.setProductId(productHistory.getId()); @@ -315,7 +351,7 @@ bomHistory.setThickness(approving.getThickness()); bomHistory.setType(approving.getType()); bomHistory.setUnit(approving.getUnit()); - bomHistory.setUpUserId(approving.getUpUserId()); + //bomHistory.setUpUserId(approving.getUpUserId()); bomHistory.setVersion(nextVersion); productBomHistoryList.add(bomHistory); @@ -331,21 +367,22 @@ approvingList.forEach(approving->{ if(!existCodeList.contains(approving.getSubCode())){ //杩欎釜瀹℃壒bom涓殑鐗╂枡涓嶅湪鐗╂枡绠$悊鍐� Material temp = new Material(); - temp.setCategory(approving.getCategory()); + //temp.setCategory(approving.getCategory()); temp.setCreateDate(new Date()); temp.setDwgUrl(approving.getDwgUrl()); temp.setFileUrl(approving.getFileUrl()); - temp.setMaterial(approving.getMaterial()); + //temp.setMaterial(approving.getMaterial()); temp.setNotes(approving.getNotes()); temp.setPictureUrl(approving.getPictureUrl()); - temp.setProducer(approving.getProducer()); - temp.setQuantity(approving.getQuantity()); + //temp.setProducer(approving.getProducer()); + //TODO quantity + //temp.setQuantity(approving.getQuantity()); temp.setStatus(1); temp.setSubCode(approving.getSubCode()); temp.setSubModel(approving.getSubModel()); temp.setSubName(approving.getSubName()); - temp.setSurfaceDetail(approving.getSurfaceDetail()); - temp.setThickness(approving.getThickness()); + //temp.setSurfaceDetail(approving.getSurfaceDetail()); + //temp.setThickness(approving.getThickness()); temp.setType(approving.getType()); temp.setUnit(approving.getUnit()); materialList.add(temp); @@ -355,7 +392,9 @@ mService.insertBatch(materialList); } //灏哾wg鍥剧焊,鍏ㄩ儴鏇存柊鍒板搴旂殑璁板綍url涓� - mService.updateDwgUrl(materialDwgUrlNameList); + if(materialDwgUrlNameList.size()!=0) { + mService.updateDwgUrl(materialDwgUrlNameList); + } /*List<ProductBomApproving> fileBomApprovingList = approvingList.stream() .filter(productBomApproving -> productBomApproving.getPictureUrl() != null || productBomApproving.getDwgUrl() != null @@ -398,19 +437,67 @@ //鍖哄垎鏄柊澧炶繕鏄垹闄� Integer materialId = approvingList.get(0).getMaterialId(); if(materialId==null) { //鏂板 + String fileUrl = approvingList.get(0).getFileUrl(); + File file = new File(fileUrl); + + List<String> fileUrlList = new LinkedList<>(); + List<String> dwgUrlList = null; + List<String> materialUrlList = new LinkedList<>(); + List<Material> materialDwgUrlNameList = new LinkedList<>(); + + fileUrlList = FileUtil.getStaticFilePath(file,fileUrlList); + dwgUrlList = fileUrlList.stream().filter(url->url.contains(".dwg")).collect(Collectors.toList()); + //鍥剧焊涓庣墿鏂檓odel瀵瑰簲,鍒欏浘绾搁渶瑕佷繚鐣欏苟杞Щ鍒版寮忔枃浠跺す + //鍚屾椂,淇濈暀鍥剧焊瀵瑰簲鐨勭墿鏂檓odel鍜屾寮忔枃浠跺す涓殑http url + dwgUrlList.forEach(dwgUrl-> { + approvingList.forEach(approving -> { + String filename = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1, dwgUrl.length() - 4); + String fileFullName = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1); + if (approving.getSubModel().toUpperCase().equals(filename.toUpperCase())) { + materialUrlList.add(dwgUrl); + + Material temp = new Material(); + temp.setSubModel(approving.getSubModel()); + temp.setNotes("doc_file" + File.separator + "material" + + File.separator + fileFullName); + materialDwgUrlNameList.add(temp); + } + }); + }); + String projectDir = CommonUtil.getProjectDir(); + String materialDir = projectDir + File.separator + "doc_file" + File.separator + "material"; + File materialFile = new File(materialDir); + if(!materialFile.exists()){ + materialFile.mkdirs(); + } + + materialUrlList.forEach(materialUrl->{ + String dwgName = materialUrl.substring(materialUrl.lastIndexOf(File.separator) + 1, materialUrl.length() - 4); + try { + FileCopyUtils.copy(new File(materialUrl),new File(materialDir+File.separator+dwgName+".dwg")); + } catch (IOException e) { + e.printStackTrace(); + } + }); //灏嗙墿鏂欎粠瀹℃壒琛ㄤ腑杞Щ鍒版寮忚〃 approvingList.forEach(approve -> { Material material = new Material(); - material.setCategory(approve.getCategory()); + //material.setCategory(approve.getCategory()); material.setSubCode(approve.getSubCode()); material.setSubName(approve.getSubName()); material.setSubModel(approve.getSubModel()); material.setUnit(approve.getUnit()); - material.setQuantity(approve.getQuantity()); - material.setProducer(approve.getProducer()); + //TODO quantity + //material.setQuantity(approve.getQuantity()); + //material.setProducer(approve.getProducer()); material.setNotes(approve.getNotes()); material.setCreateDate(new Date()); material.setStatus(1); + materialDwgUrlNameList.forEach(materialDwgUrlName->{ + if(materialDwgUrlName.getSubModel().equals(approve.getSubModel())){ + material.setDwgUrl(materialDwgUrlName.getDwgUrl()); + } + }); materialList.add(material); }); mService.insertBatch(materialList); @@ -438,7 +525,7 @@ his.setCustomCode(approving.getCustomCode()); his.setSVersion(approving.getVersion()); his.setEVersion(approving.getVersion()); - his.setSubCode(approving.getSubCode()); + his.setSubMaterialId(approving.getSubMaterialId()); his.setQuantity(approving.getQuantity()); his.setMaterialId(approving.getMaterialId()); his.setCreateTime(new Date()); @@ -450,9 +537,13 @@ } }); //鏂板鍏宠仈 - mphService.insertBatch(addedList); + if(addedList.size()!=0) { + mphService.insertBatch(addedList); + } //绉婚櫎鍏宠仈 - mphService.updateVersionSubtractBatch(removedList); + if(removedList.size()!=0) { + mphService.updateVersionSubtractBatch(removedList); + } } else if(type.intValue() == EnumWorksheetType.ProductSoftware.getType()){ //杞欢涓嬭浇 //杞Щ璁板綍鍒版寮忚〃 @@ -501,4 +592,61 @@ public DocUser getApprovingUser(Integer mainId) { return linkMapper.getApprovingUser(mainId); } + + @Transactional + public Response confirmProductProcedureAndSOP(WorksheetLink link) throws IOException { + Integer mainId = linkMapper.selectById(link.getId()).getMainId(); + //鏇存柊瀛愯〃 + linkMapper.updateById(link); + if(link.getLinkStatus() ==1){ + //鏌ヨ褰撳墠鍗曟嵁瀛愯〃鏄惁宸茬粡鍏ㄩ儴鍚屾剰 + QueryWrapper<WorksheetLink> query = Wrappers.query(); + query.eq("main_id",mainId); + List<WorksheetLink> linkList = linkMapper.selectList(query); + List<WorksheetLink> rejectList = linkList.stream().filter(linkFilter -> linkFilter.getLinkStatus() != 1).collect(Collectors.toList()); + if(rejectList == null){ + //閮戒负1,宸茬‘璁� + mainService.updateEndStatusById(mainId,"宸茬‘璁�",5); + //鏂囦欢杞Щ鍒板鎵瑰畬鎴愬悗鐨勬寮忚矾寰� 鏂囦欢淇濆瓨鍦�/doc_file/procedure/xxx.doc + ProcedureDocApproving approving = procedureDocApprovingService.getByMainId(mainId); + String fileRelativePath = approving.getFile(); + String projectDir = CommonUtil.getProjectDir(); + String inFilePath = projectDir + File.separator + fileRelativePath; + String outFilePath = (projectDir + File.separator + fileRelativePath).replace("_approving",""); + WordUtil.fillValue(inFilePath,outFilePath,Arrays.asList(approving.getFzr(),approving.getBz(),approving.getZz(),approving.getPb())); + //鍒犻櫎涔嬪墠棰勮浜х敓鐨勪腑闂存枃浠� + String filename = fileRelativePath.substring(fileRelativePath.lastIndexOf(File.separator)+1,fileRelativePath.lastIndexOf(".")); + File approvingDir = new File(projectDir + File.separator + "procedure_approving"); + FilenameFilter filenameFilter = new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + name = name.substring(0,name.lastIndexOf(".")); + if(name.contains(filename) && !name.equals(filename)){ + return true; + } + return false; + } + }; + File[] files = approvingDir.listFiles(filenameFilter); + for (File file : files) { + file.delete(); + } + + //娴佺▼鏂囦欢鏁版嵁杞Щ + ProcedureDoc procedureDoc = new ProcedureDoc(); + procedureDoc.setName(approving.getName()); + procedureDoc.setDescription(approving.getDescription()); + procedureDoc.setVersion(approving.getVersion()); + procedureDoc.setFzr(approving.getFzr()); + procedureDoc.setBz(approving.getBz()); + procedureDoc.setType(approving.getType()); + procedureDoc.setCreateTime(new Date()); + procedureDoc.setFile(fileRelativePath.replace("_approving","")); + procedureDocService.insert(procedureDoc); + } + }else{ + mainService.updateEndStatusById(mainId,"宸查┏鍥�",0); + } + return new Response().set(1); + } } -- Gitblit v1.9.1