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