From 5058481100d938bc4680725c3659757a09a2dd8a Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 03 六月 2026 17:50:39 +0800
Subject: [PATCH] 采集器调整:支持文件名匹配查找

---
 src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java     |   37 +++++++++++++++++-
 src/main/java/com/chinaztt/mes/docx/constant/FieldMatchRuleConstants.java |   30 +++++++++++++++
 pom.xml                                                                   |    2 
 src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java                   |   15 +++++++
 src/main/java/com/chinaztt/mes/docx/util/TakeWords.java                   |   11 +++--
 5 files changed, 87 insertions(+), 8 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8ae6c48..2a51f47 100644
--- a/pom.xml
+++ b/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>
diff --git a/src/main/java/com/chinaztt/mes/docx/constant/FieldMatchRuleConstants.java b/src/main/java/com/chinaztt/mes/docx/constant/FieldMatchRuleConstants.java
new file mode 100644
index 0000000..652499c
--- /dev/null
+++ b/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";
+}
diff --git a/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java b/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java
index 166b465..30fa2b0 100644
--- a/src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java
+++ b/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;
+
 }
diff --git a/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java b/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
index 8a55cec..fffe1ad 100644
--- a/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
+++ b/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();
diff --git a/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java b/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java
index 4987848..284072e 100644
--- a/src/main/java/com/chinaztt/mes/docx/util/TakeWords.java
+++ b/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;
     }
+
 }

--
Gitblit v1.9.3