From 6d3c8e9c8800becec33e714c2ec42703bb1cef50 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 25 八月 2025 17:42:08 +0800
Subject: [PATCH] 两网交互添加图片

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java |   97 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 83 insertions(+), 14 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..85e3df8 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,24 @@
 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.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;
@@ -29,9 +40,6 @@
 @Service
 public class FileFerryService {
 
-    private final DataPackageService dataPackageService;
-    private final SecurityService securityService;
-
     private static final Logger logger = LoggerFactory.getLogger(FileFerryService.class);
 
     @Value("${deploy.secretFolder}")
@@ -40,6 +48,9 @@
     @Value("${fileHomePath}")
     private String fileHomePath;
 
+    @Value("${jeecg.path.upload}")
+    private String upLoadPath;
+
     @Autowired
     private MdcEquipmentMapper mdcEquipmentMapper;
 
@@ -47,19 +58,15 @@
     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. 鑾峰彇灏佽鏁版嵁
@@ -87,6 +94,8 @@
             throw new RuntimeException("鏂囦欢鍐欏叆澶辫触", e);
         }
     }
+
+
 
     public TransferPackage importData(String filePath) {
         try {
@@ -140,6 +149,7 @@
 
             // 6. 鑾峰彇鏂囦欢澶嶅埗鐩爣璺緞
             DocFile docFile = pkg.getTraceChain().getDocFile();
+            DocInfo docInfo = pkg.getTraceChain().getDocInfo();
             if (docFile == null) {
                 throw new IllegalStateException("浼犺緭鍖呬腑缂哄皯鏂囨。鏂囦欢淇℃伅");
             }
@@ -159,10 +169,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 docRelative = new DocRelative();
+                    docRelative.setDocId(docInfo.getDocId());
+                    docRelative.setClassificationId(classification.getClassificationId());
+                    docRelative.setAttributionType(7);
+                    docRelative.setAttributionId(mdcEquipment.getId());
+                    docRelativeService.save(docRelative);
+                }
+                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("鏂囦欢浼犺緭璺緞鑾峰彇澶辫触");
+            }
+
+            // 璁$畻鍚庝竴涓枃浠跺悕
+            long nextNumber = Long.parseLong(numericPart);
+            nextNumber++;
+
+            //鑾峰彇搴忓垪鍖栫殑绋嬪簭纭琛ㄦ暟鎹�
+            GuideCardBatch guideCardBatch=pkg.getTraceChain().getGuideCardBatch();
+
+            //鑾峰彇鏂囦欢璺緞
+            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);
+
+            // 鍒犻櫎鏂囦欢
             logger.info("鍒犻櫎涓存椂鏂囦欢: {}", ncFilePath);
             Files.delete(source);
             Files.delete(path);
+            Files.delete(PicSource);
 
             return JsonUtils.fromJson(json, TransferPackage.class);
 

--
Gitblit v1.9.3