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 | 118 +++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 90 insertions(+), 28 deletions(-)
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 c9dcdfd..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,15 +2,21 @@
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;
import com.chinaztt.mes.docx.service.DocxService;
-import com.chinaztt.mes.docx.util.R;
+import com.chinaztt.mes.docx.util.XMLFileListener;
+import com.chinaztt.mes.docx.util.Result;
import com.chinaztt.mes.docx.util.TakeWords;
+import lombok.extern.slf4j.Slf4j;
import net.sourceforge.tess4j.TesseractException;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -18,56 +24,77 @@
import java.util.Objects;
@Service
+@Slf4j
public class DocxServiceImpl implements DocxService {
+ @Autowired
+ private SerialPortListener serialPortListener;
+
@Override
- public R<?> getFile(GetFileDto getFileDto) throws IOException, SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, TesseractException {
- File file = getFileStart(getFileDto.getFilePath(), getFileDto.getFileExtension());
+ public Result<?> getFile(GetFileDto getFileDto) throws IOException, SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException, TesseractException {
+ String fileExtension = getFileDto.getFileExtension();
+ if(StringUtils.equals(".pngInExcel",getFileDto.getFileExtension())){
+ fileExtension = ".xls";
+ }
+ 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 R.failed("鏈煡璇㈠埌璇ヨ矾寰勶細" + getFileDto.getFilePath() + "涓嬪瓨鍦細" + getFileDto.getFileExtension() + "缁撳熬鐨勬枃浠讹紒");
+ return Result.failed("鏈煡璇㈠埌璇ヨ矾寰勶細" + getFileDto.getFilePath() + "涓嬪瓨鍦細" + getFileDto.getFileExtension() + "缁撳熬鐨勬枃浠讹紒");
}
switch (getFileDto.getFileExtension()) {
case ".docx":
- return R.ok(TakeWords.readWordFile(file));
- //鍚庣紑涓�.xls鐨勬枃浠�
+ return Result.ok(TakeWords.readWordFile(file));
+ case ".pngInExcel":
+ return Result.ok(TakeWords.readPngContextInExcel(file));
case ".xls":
- return R.ok(TakeWords.readExcelxlsFile(file));
case ".xlsx":
try {
- return R.ok(TakeWords.readExcelFile(file));
- } catch (FileNotFoundException e) {
- return R.failed("鍙︿竴涓▼搴忔鍦ㄤ娇鐢ㄦ鏂囦欢锛屾棤娉曡繘琛屾暟鎹噰闆嗐��");
+ return Result.ok(TakeWords.readExcelFile(file));
+ } catch (Exception e) {
+ return Result.failed("鍙︿竴涓▼搴忔鍦ㄤ娇鐢ㄦ鏂囦欢锛屾棤娉曡繘琛屾暟鎹噰闆嗐��");
}
case ".txt":
- return R.ok(TakeWords.readTxtFile(file));
+ return Result.ok(TakeWords.readTxtFile(file));
case ".csv":
- return R.ok(TakeWords.readCsvFile(file));
+ return Result.ok(TakeWords.readCsvFile(file));
case ".mdb":
if (ObjectUtil.isEmpty(getFileDto.getDbFileName()) || Objects.equals(getFileDto.getDbFileName(), "null")) {
- return R.failed("鏈厤缃�.mdb閲囬泦鏂囦欢鍚嶇О锛�");
+ return Result.failed("鏈厤缃�.mdb閲囬泦鏂囦欢鍚嶇О锛�");
}
- return R.ok(TakeWords.readMdbFile(file, getFileDto));
+ return Result.ok(TakeWords.readMdbFile(file, getFileDto));
case ".db":
if (ObjectUtil.isEmpty(getFileDto.getDbFileName()) || Objects.equals(getFileDto.getDbFileName(), "null")) {
- return R.failed("鏈厤缃�.db閲囬泦鏂囦欢鍚嶇О锛�");
+ return Result.failed("鏈厤缃�.db閲囬泦鏂囦欢鍚嶇О锛�");
}
- return R.ok(TakeWords.readDbFile(file, getFileDto));
+ return Result.ok(TakeWords.readDbFile(file, getFileDto));
case ".mysql":
if (ObjectUtil.isEmpty(getFileDto.getDbFileName()) || Objects.equals(getFileDto.getDbFileName(), "null")) {
- return R.failed("鏈厤缃�.mysql閲囬泦鏂囦欢鍚嶇О锛�");
+ return Result.failed("鏈厤缃�.mysql閲囬泦鏂囦欢鍚嶇О锛�");
}
- return R.ok(TakeWords.getMysqlFile(getFileDto));
+ return Result.ok(TakeWords.getMysqlFile(getFileDto));
case ".png":
- return R.ok(TakeWords.readPngFile(file));
+ return Result.ok(TakeWords.readPngFile(file));
case ".mqtt":
- return R.ok("mqtt---");
+ return Result.ok("mqtt---");
+ case ".serialPort":
+ List<Double> valList = new ArrayList<>(serialPortListener.dataList);
+ serialPortListener.dataList.clear();
+ return Result.ok(valList);
+ case ".sqlserver":
+ if (ObjectUtil.isEmpty(getFileDto.getDbFileName()) || Objects.equals(getFileDto.getDbFileName(), "null")) {
+ return Result.failed("鏈厤缃�.sqlserver閲囬泦鏂囦欢鍚嶇О锛�");
+ }
+ return Result.ok(TakeWords.readSqlServerDataBase(getFileDto));
default:
- return R.failed("鍚庣紑鍚嶉厤缃敊璇紒");
+ return Result.failed("鍚庣紑鍚嶉厤缃敊璇紒");
}
}
@Override
- public R<?> moveFile(String startFilePath, String endFilePath, String fileType) {
+ public Result<?> moveFile(String startFilePath, String endFilePath, String fileType) {
// 婧愭枃浠惰矾寰�
File startFile= getFileStart(startFilePath, fileType);
// 鐩殑鐩綍璺緞
@@ -82,15 +109,14 @@
try {
// 璋冪敤File绫荤殑鏍稿績鏂规硶renameTo
if (startFile.renameTo(endFile)) {
- return R.ok("鏂囦欢绉诲姩鎴愬姛锛�");
+ return Result.ok("鏂囦欢绉诲姩鎴愬姛锛�");
} else {
- return R.failed("鏂囦欢绉诲姩澶辫触锛�");
+ return Result.failed("鏂囦欢绉诲姩澶辫触锛�");
}
}catch(Exception e) {
- return R.failed("鏂囦欢绉诲姩鍑虹幇寮傚父锛�");
+ return Result.failed("鏂囦欢绉诲姩鍑虹幇寮傚父锛�");
}
}
-
public static File getLatestFile(List<File> files) {
File latestFile = null;
@@ -107,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 -> {
@@ -124,10 +154,42 @@
b = i.getName().endsWith(fileExtension);
break;
}
+ if(isMatchFileName){
+ b = matchFileName(i.getName(),matchRule,entrustCode,sampleCode);
+ }
if (b) {
list.add(i);
}
});
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();
+ List<TestBatch> testBatches = fileListener.explainXml(new File("C:\\Users\\27233\\Desktop\\251117鏁伴噰鏂囦欢\\鏁伴噰鏂囦欢\\鍏夎氨浠猂esults_20251018133246.xml"));
+ testBatches.forEach(System.out::println);
+ }
+
}
--
Gitblit v1.9.3