zouyu
9 天以前 bf95078dab81dcd0639fdb1a41e998b31c940fb1
src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
@@ -3,14 +3,19 @@
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
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 +23,73 @@
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";
        }
        File file = getFileStart(getFileDto.getFilePath(), fileExtension);
        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 +104,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;
@@ -130,4 +151,12 @@
        });
        return getLatestFile(list);
    }
    @Override
    public void readXml() {
        XMLFileListener fileListener = new XMLFileListener();
        List<TestBatch> testBatches = fileListener.explainXml(new File("C:\\Users\\27233\\Desktop\\251117数采文件\\数采文件\\光谱仪Results_20251018133246.xml"));
        testBatches.forEach(System.out::println);
    }
}