zouyu
2025-07-21 d1df2c7db4331a760303294cfdc5bae1d810867f
Merge branch 'master' into ywx

# Conflicts:
# src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java
# src/main/java/com/chinaztt/mes/docx/util/TakeWords.java
已修改3个文件
72 ■■■■ 文件已修改
pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/chinaztt/mes/docx/util/TakeWords.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -107,6 +107,11 @@
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>5.7.1</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
src/main/java/com/chinaztt/mes/docx/dto/GetFileDto.java
@@ -16,7 +16,7 @@
    private String mdbEntrustCode;
    // 样品编号字段
    private String mdbSampleCode;
    // db文件名称数据库名称
    // db文件名称
    private String dbFileName;
    // 光纤带字段
    private String fiberOpticRibbonCode;
src/main/java/com/chinaztt/mes/docx/util/TakeWords.java
@@ -2,6 +2,9 @@
import cn.hutool.core.io.FileUtil;
import com.chinaztt.mes.docx.dto.GetFileDto;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.exceptions.CsvValidationException;
import com.chinaztt.mes.docx.dto.ThicknessData;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
@@ -25,15 +28,20 @@
import javax.imageio.ImageIO;
import java.io.*;
import java.nio.file.Files;
import java.sql.*;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TakeWords {
    private static final String splitIdentifier = "@-@"; // 自定义唯一标识符
    // 科学计数法正则模式
    private static final Pattern SCIENTIFIC_PATTERN = Pattern.compile(
            "^[+-]?\\d+(\\.\\d+)?[eE][+-]?\\d+$"
    );
    public static Object readWordFile(File file) {
        String result = "";
@@ -220,23 +228,54 @@
        StringBuilder stringBuilder = new StringBuilder();
        // 创建 reader
        try (BufferedReader br = Files.newBufferedReader(file.toPath())) {
            // CSV文件的分隔符
            String DELIMITER = ",";
            // 按行读取
            String line;
            while ((line = br.readLine()) != null) {
                // 分割
                String[] columns = line.split(DELIMITER);
                // 打印行
                stringBuilder.append(String.join(splitIdentifier, columns)).append("\n");
//        try (BufferedReader br = Files.newBufferedReader(file.toPath())) {
//            // CSV文件的分隔符
//            String DELIMITER = ",";
//            // 按行读取
//            String line;
//            System.out.println(br.readLine());
//            while ((line = br.readLine()) != null) {
//                // 分割
//                String[] columns = line.split(DELIMITER);
//                // 打印行
//                stringBuilder.append(String.join(splitIdentifier, columns)).append("\n");
//            }
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
        try (FileReader fileReader = new FileReader(file);
             CSVReader csvReader = new CSVReaderBuilder(fileReader).build()) {
            String[] nextLine;
            while ((nextLine = csvReader.readNext()) != null) {
                // 处理每一行数据
                for (String cell : nextLine) {
                    if(StringUtils.isNotBlank(cell)){
                        stringBuilder.append(scientificToNumber(cell)).append(splitIdentifier);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
                }
                stringBuilder.append("\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (CsvValidationException e) {
            throw new RuntimeException(e);
        }
        return stringBuilder.toString();
    }
    /**
     * 将科学计数法转换为数字
     * @param cell
     * @return
     */
    public static String scientificToNumber(String cell){
        if(SCIENTIFIC_PATTERN.matcher(cell).matches()){
            return String.valueOf(Double.parseDouble(cell));
        }
        return cell;
    }
    public static Object readMdbFile(File file, GetFileDto getFileDto) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        Map<String, Object> tableMap = new HashMap<>(16);
        Properties prop = new Properties();