zouyu
2026-06-03 5058481100d938bc4680725c3659757a09a2dd8a
采集器调整:支持文件名匹配查找
已添加1个文件
已修改4个文件
93 ■■■■■ 文件已修改
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/constant/FieldMatchRuleConstants.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/util/TakeWords.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -75,7 +75,7 @@
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>12.4.1.jre8</version> <!-- é€‚配 Java 8,其他版本可调整 -->
            <version>12.4.0.jre8</version> <!-- é€‚配 Java 8,其他版本可调整 -->
            <scope>runtime</scope>
        </dependency>
        <dependency>
src/main/java/com/chinaztt/mes/docx/constant/FieldMatchRuleConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.chinaztt.mes.docx.constant;
/**
 * é‡‡é›†åœ°å€æ–‡ä»¶ååŒ¹é…è§„则
 */
public class FieldMatchRuleConstants {
    public FieldMatchRuleConstants() {
    }
    /**
     * å§”托编号(等于)
     */
    public final static String ENTRUST_CODE_EQUAL = "entrustCodeEqual";
    /**
     * å§”托编号(包含于)
     */
    public final static String ENTRUST_CODE_LIKE = "entrustCodeLike";
    /**
     * æ ·å“ç¼–号(等于)
     */
    public final static String SAMPLE_CODE_EQUAL = "sampleCodeEqual";
    /**
     * æ ·å“ç¼–号(包含于)
     */
    public final static String SAMPLE_CODE_LIKE = "sampleCodeLike";
}
src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java
@@ -39,4 +39,19 @@
    //电缆颜色标识
    private String cableTag;
    /**
     * è¿½åŠ æœ«å°¾sql
     */
    private String lastSql;
    /**
     * æ˜¯å¦åŒ¹é…æ–‡ä»¶åç§°
     */
    private Boolean isMatchFileName;
    /**
     * åŒ¹é…è§„则:等于/包含
     */
    private String fieldMatchRule;
}
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() + "结尾的文件!");
        }
@@ -129,6 +134,10 @@
    }
    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();
src/main/java/com/chinaztt/mes/docx/util/TakeWords.java
@@ -490,7 +490,7 @@
            return Result.failed("数据库名或表名不能为空");
        }
        // æ•°æ®åº“连接信息
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName="+dbName+";encrypt=true;trustServerCertificate=true";
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName="+dbName+";encrypt=false;trustServerCertificate=true";
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
@@ -502,17 +502,17 @@
            String sql = "SELECT * FROM "+table+" WHERE 1=1";
            if(StringUtils.isNotBlank(getFileDto.getMdbEntrustCode()) ){
                sql+=" AND (" + getFileDto.getMdbEntrustCode() + " = TRIM('" + getFileDto.getEntrustCode()+ "')";
                sql+=" AND (" + getFileDto.getMdbEntrustCode() + " = LTRIM(RTRIM('" + getFileDto.getEntrustCode()+ "'))";
                if(StringUtils.isNotBlank(getFileDto.getLotBatchNo())){
                    sql+=" OR "+ getFileDto.getMdbEntrustCode() + " = TRIM('" + getFileDto.getLotBatchNo()+ "')";
                    sql+=" OR "+ getFileDto.getMdbEntrustCode() + " = LTRIM(RTRIM('" + getFileDto.getLotBatchNo()+ "'))";
                }
                sql+=")";
            }
            if(StringUtils.isNotBlank(getFileDto.getMdbSampleCode())){
                sql+=" AND " + getFileDto.getMdbSampleCode() + " = '" + getFileDto.getSampleCode() + "'";
            }
            if(StringUtils.isNotBlank(getFileDto.getCableTag())){
                sql+=" AND Color = '" + getFileDto.getCableTag() + "'";
            if(StringUtils.isNotBlank(getFileDto.getLastSql())){
                sql+=getFileDto.getLastSql();
            }
            // åˆ›å»º PreparedStatement å¯¹è±¡æ‰§è¡Œ SQL
            preparedStatement = connection.prepareStatement(sql);
@@ -550,4 +550,5 @@
        }
        return tableMap;
    }
}