From bc8cd378fd72f43e66120c540f57f630580aa093 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 11 九月 2025 10:57:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java | 123 +++++++++++++++++++++++++++++++++------- 1 files changed, 100 insertions(+), 23 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java index 4661dcd..27cce40 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java @@ -1,13 +1,25 @@ package org.jeecg.modules.dnc.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import liquibase.pro.packaged.S; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.modules.dnc.constant.DocAttributionTypeEnum; import org.jeecg.modules.dnc.dto.ComponentHierarchy; import org.jeecg.modules.dnc.dto.TransferPackage; -import org.jeecg.modules.dnc.entity.ComponentInfo; -import org.jeecg.modules.dnc.entity.DocFile; +import org.jeecg.modules.dnc.entity.*; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.mapper.DocRelativeMapper; +import org.jeecg.modules.dnc.response.ActivitiCode; +import org.jeecg.modules.dnc.response.DocumentCode; import org.jeecg.modules.dnc.service.IDocClassificationService; +import org.jeecg.modules.dnc.service.IDocFileService; import org.jeecg.modules.dnc.service.IDocInfoService; import org.jeecg.modules.dnc.service.IDocRelativeService; +import org.jeecg.modules.dnc.utils.CompressionUtils; import org.jeecg.modules.dnc.utils.JsonUtils; +import org.jeecg.modules.dnc.utils.file.FileUtilS; +import org.jeecg.modules.dncFlow.service.IAssignFileStreamService; +import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper; import org.jeecg.modules.system.service.IMdcProductionService; import org.slf4j.Logger; @@ -16,6 +28,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -25,12 +38,10 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Service public class FileFerryService { - - private final DataPackageService dataPackageService; - private final SecurityService securityService; private static final Logger logger = LoggerFactory.getLogger(FileFerryService.class); @@ -40,26 +51,25 @@ @Value("${fileHomePath}") private String fileHomePath; - @Autowired + @Value("${jeecg.path.upload}") + private String upLoadPath; + + @Resource private MdcEquipmentMapper mdcEquipmentMapper; @Autowired private IMdcProductionService mdcProductionService; @Autowired + private IDocInfoService docInfoService; + + @Autowired private IDocClassificationService classificationService; @Autowired private IDocRelativeService docRelativeService; - @Autowired - private IDocInfoService docInfoService; - - @Autowired - public FileFerryService(DataPackageService dataPackageService, SecurityService securityService) { - this.dataPackageService = dataPackageService; - this.securityService = securityService; - } + private DataPackageService dataPackageService; public String exportData(TransferPackage.DataType type, String id,String fileName) { // 1. 鑾峰彇灏佽鏁版嵁 @@ -133,17 +143,28 @@ long number = Long.parseLong(numericPart); number--; // 鑾峰彇鍓嶄竴涓簭鍒楀彿 - // 淇濇寔鐩稿悓浣嶆暟鏍煎紡 - String newNumeric = String.format("%0" + numericPart.length() + "d", number); - String ncFileName = prefix + newNumeric + "_" + equipmentId+".NC"; - String ncFilePath = path.getParent().resolve(ncFileName).toString(); - // 6. 鑾峰彇鏂囦欢澶嶅埗鐩爣璺緞 + DocRelative docRelative=pkg.getDocRelative(); DocFile docFile = pkg.getTraceChain().getDocFile(); + DocInfo docInfo = pkg.getTraceChain().getDocInfo(); if (docFile == null) { throw new IllegalStateException("浼犺緭鍖呬腑缂哄皯鏂囨。鏂囦欢淇℃伅"); } + // 淇濇寔鐩稿悓浣嶆暟鏍煎紡 + String newNumeric = String.format("%0" + numericPart.length() + "d", number); + String ncFileName = ""; + if (Objects.equals(docRelative.getAttributionType(), DocAttributionTypeEnum.PROCESS.getCode()) || + Objects.equals(docRelative.getAttributionType(), DocAttributionTypeEnum.WORKSITE.getCode())) { + //NC鏂囦欢鐨勬嫹璐� + ncFileName = prefix + newNumeric + "_" + equipmentId+".NC"; + }else { + //鍏朵粬鏂囨。鐨勬嫹璐� + ncFileName = prefix + newNumeric + "_" + equipmentId+"."+docFile.getFileSuffix(); + docInfo.setDocDispatchStatus(3); + pkg.getTraceChain().setDocInfo(docInfo); + } + String ncFilePath = path.getParent().resolve(ncFileName).toString(); // 鏋勫缓鐩爣璺緞 String targetDirectory = fileHomePath + docFile.getFilePath(); String targetPath = Paths.get(targetDirectory, docFile.getFileEncodeName()).toString(); @@ -159,12 +180,69 @@ Path source = Paths.get(ncFilePath); Files.copy(source, Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING); - // 10.鍒犻櫎涓存椂NC鏂囦欢涓巎son鏂囦欢 + // 8. 鏌ヨ璁惧id + MdcEquipment mdcEquipment=mdcEquipmentMapper.selectOne(new QueryWrapper<MdcEquipment>().eq("equipment_id",equipmentId)); + if (mdcEquipment == null) { + throw new IllegalArgumentException("鏃犳晥鐨勮澶嘔D: " + equipmentId); + } + + // 9.浼犺緭鏂囦欢鍒拌澶囦笅 + List<String> strings = mdcProductionService.findListParentTreeAll(mdcEquipment.getId()); + if (strings != null && !strings.isEmpty()) { + DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(docInfo.getDocId(), 7, mdcEquipment.getId()); + if (deviceDoc == null) { + DocClassification classification = classificationService.getByCode("send"); + if(classification == null) + ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); + DocRelative newDocRelative = new DocRelative(); + newDocRelative.setDocId(docInfo.getDocId()); + newDocRelative.setClassificationId(classification.getClassificationId()); + newDocRelative.setAttributionType(7); + newDocRelative.setAttributionId(mdcEquipment.getId()); + docRelativeService.save(newDocRelative); + } + String sendPath = StringUtils.join(strings.toArray(), "/"); + boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(), sendPath + "/" + mdcEquipment.getEquipmentId(), + docFile.getFileEncodeName(), + docFile.getFileName(), docFile.getFileSuffix()); + if (!copyFileNc) { + ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + } else { + FileUtilS.deleteZipFromToSend(sendPath + "/" + mdcEquipment.getEquipmentId(), + docFile.getFileName(), docFile.getFileSuffix()); + } + } else { + throw new RuntimeException("鏂囦欢浼犺緭璺緞鑾峰彇澶辫触"); + } + //鑾峰彇搴忓垪鍖栫殑绋嬪簭纭琛ㄦ暟鎹� + GuideCardBatch guideCardBatch=pkg.getTraceChain().getGuideCardBatch(); + if (guideCardBatch!=null){ + // 璁$畻鍚庝竴涓枃浠跺悕 + long nextNumber = Long.parseLong(numericPart); + nextNumber++; + //鑾峰彇鏂囦欢璺緞 + String pictureUrl=guideCardBatch.getPicture(); + + // 淇濇寔鐩稿悓浣嶆暟鏍煎紡 + String nextNumeric = String.format("%0" + numericPart.length() + "d", nextNumber); + String nextFileName = prefix + nextNumeric + "_" + equipmentId+"."+pictureUrl.split("\\.")[1]; + String nextFilePath = path.getParent().resolve(nextFileName).toString(); + + //鎷兼帴鐜版湁璺緞 + String picturePtah=upLoadPath+"/"+pictureUrl; + + // 9. 澶嶅埗鏂囦欢骞堕噸鍛藉悕 + logger.info("澶嶅埗鏂囦欢: {} 鈫� {}", nextFilePath,picturePtah); + Path PicSource= Paths.get(nextFilePath); + Files.copy(PicSource, Paths.get(picturePtah), StandardCopyOption.REPLACE_EXISTING); + Files.delete(PicSource); + } + + // 鍒犻櫎鏂囦欢 logger.info("鍒犻櫎涓存椂鏂囦欢: {}", ncFilePath); Files.delete(source); Files.delete(path); - - return JsonUtils.fromJson(json, TransferPackage.class); + return pkg; } catch (NumberFormatException e) { throw new RuntimeException("鏂囦欢鍚嶄腑鐨勬暟瀛楁牸寮忔棤鏁�: " + e.getMessage(), e); @@ -182,7 +260,6 @@ pkg.getTraceChain().getComponentHierarchy().getComponents().size() < 4) { return; } - ComponentHierarchy hierarchy = pkg.getTraceChain().getComponentHierarchy(); List<ComponentInfo> compressed = new ArrayList<>(); -- Gitblit v1.9.3