From b1e37337ac05917ad6989177bc639acc2c065600 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 09 九月 2025 16:14:04 +0800
Subject: [PATCH] 航宇两网交互新增其他文档

---
 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