zouyu
2026-06-03 5058481100d938bc4680725c3659757a09a2dd8a
src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import com.chinaztt.mes.docx.constant.FieldMatchRuleConstants;
import com.chinaztt.mes.docx.dto.GetFileDto;
import com.chinaztt.mes.docx.handler.SerialPortListener;
import com.chinaztt.mes.docx.pojo.TestBatch;
@@ -35,7 +36,11 @@
        if(StringUtils.equals(".pngInExcel",getFileDto.getFileExtension())){
            fileExtension = ".xls";
        }
        File file = getFileStart(getFileDto.getFilePath(), fileExtension);
        String entrustCode = "";
        if(StringUtils.isNotBlank(getFileDto.getEntrustCode()) && getFileDto.getIsMatchFileName()){
            entrustCode = getFileDto.getEntrustCode().substring(8);
        }
        File file = getFileStart(getFileDto.getFilePath(), fileExtension,getFileDto.getIsMatchFileName(),getFileDto.getFieldMatchRule(),entrustCode,getFileDto.getSampleCode());
        if (file != null && !file.exists()) {
            return Result.failed("未查询到该路径:" + getFileDto.getFilePath() + "下存在:" + getFileDto.getFileExtension() + "结尾的文件!");
        }
@@ -128,7 +133,11 @@
        return latestFile;
    }
    public static File getFileStart(String filePath, String fileExtension) {
    public static File getFileStart(String filePath, String fileExtension){
        return getFileStart(filePath,fileExtension,false,null,null,null);
    }
    public static File getFileStart(String filePath, String fileExtension,Boolean isMatchFileName,String matchRule,String entrustCode,String sampleCode) {
        List<File> files = FileUtil.loopFiles(filePath);
        List<File> list = new ArrayList<>();
        files.forEach(i -> {
@@ -145,6 +154,9 @@
                    b = i.getName().endsWith(fileExtension);
                    break;
            }
            if(isMatchFileName){
                b = matchFileName(i.getName(),matchRule,entrustCode,sampleCode);
            }
            if (b) {
                list.add(i);
            }
@@ -152,6 +164,27 @@
        return getLatestFile(list);
    }
    /**
     * 匹配文件名称
     * @param fileName    文件名称
     * @param matchRule   匹配规则
     * @param entrustCode 委托编号
     * @param sampleCode  样品名称
     * @return
     */
    private static Boolean matchFileName(String fileName,String matchRule,String entrustCode,String sampleCode){
        if(FieldMatchRuleConstants.ENTRUST_CODE_EQUAL.equals(matchRule)){
            return fileName.equals(entrustCode);
        }else if(FieldMatchRuleConstants.ENTRUST_CODE_LIKE.equals(matchRule)){
            return fileName.contains(entrustCode);
        }else if(FieldMatchRuleConstants.SAMPLE_CODE_EQUAL.equals(matchRule)){
            return fileName.equals(sampleCode);
        }else if(FieldMatchRuleConstants.SAMPLE_CODE_LIKE.equals(matchRule)){
            return fileName.contains(sampleCode);
        }
        return false;
    }
    @Override
    public void readXml() {
        XMLFileListener fileListener = new XMLFileListener();