lyh
2 天以前 bc8cd378fd72f43e66120c540f57f630580aa093
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java
@@ -3,6 +3,7 @@
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.*;
@@ -27,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;
@@ -36,6 +38,7 @@
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
public class FileFerryService {
@@ -51,7 +54,7 @@
    @Value("${jeecg.path.upload}")
    private String upLoadPath;
    @Autowired
    @Resource
    private MdcEquipmentMapper mdcEquipmentMapper;
    @Autowired
@@ -94,8 +97,6 @@
            throw new RuntimeException("文件写入失败", e);
        }
    }
    public TransferPackage importData(String filePath) {
        try {
@@ -142,18 +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();
@@ -183,12 +194,12 @@
                    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);
                    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(),
@@ -203,37 +214,35 @@
            } else {
                throw new RuntimeException("文件传输路径获取失败");
            }
            // 计算后一个文件名
            long nextNumber = Long.parseLong(numericPart);
            nextNumber++;
            //获取序列化的程序确认表数据
            GuideCardBatch guideCardBatch=pkg.getTraceChain().getGuideCardBatch();
            if (guideCardBatch!=null){
                // 计算后一个文件名
                long nextNumber = Long.parseLong(numericPart);
                nextNumber++;
                //获取文件路径
                String pictureUrl=guideCardBatch.getPicture();
            //获取文件路径
            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 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;
            //拼接现有路径
            String picturePtah=upLoadPath+"/"+pictureUrl;
            // 9. 复制文件并重命名
            logger.info("复制文件: {} → {}", nextFilePath,picturePtah);
            Path PicSource= Paths.get(nextFilePath);
            Files.copy(PicSource, Paths.get(picturePtah), StandardCopyOption.REPLACE_EXISTING);
                // 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);
            Files.delete(PicSource);
            return JsonUtils.fromJson(json, TransferPackage.class);
            return pkg;
        } catch (NumberFormatException e) {
            throw new RuntimeException("文件名中的数字格式无效: " + e.getMessage(), e);
@@ -251,7 +260,6 @@
                pkg.getTraceChain().getComponentHierarchy().getComponents().size() < 4) {
            return;
        }
        ComponentHierarchy hierarchy = pkg.getTraceChain().getComponentHierarchy();
        List<ComponentInfo> compressed = new ArrayList<>();