| | |
| | | import cn.hutool.core.io.FileUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.chinaztt.mes.docx.dto.GetFileDto; |
| | | import com.chinaztt.mes.docx.dto.ThicknessData; |
| | | 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.ObjectUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.*; |
| | | import java.sql.*; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.sql.SQLException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | 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()); |
| | | if (!file.exists()) { |
| | | return R.failed("未查询到该路径:" + 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 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.getmysqlFile(getFileDto)); |
| | | return Result.ok(TakeWords.readDbFile(file, getFileDto)); |
| | | case ".mysql": |
| | | if (ObjectUtil.isEmpty(getFileDto.getDbFileName()) || Objects.equals(getFileDto.getDbFileName(), "null")) { |
| | | return Result.failed("未配置.mysql采集文件名称!"); |
| | | } |
| | | return Result.ok(TakeWords.getMysqlFile(getFileDto)); |
| | | case ".png": |
| | | return R.ok(TakeWords.readPngFile(file)); |
| | | return Result.ok(TakeWords.readPngFile(file)); |
| | | case ".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); |
| | | // 目的目录路径 |
| | |
| | | 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; |
| | |
| | | boolean b; |
| | | switch (fileExtension) { |
| | | case ".docx": |
| | | b = i.getName().endsWith(".docx") || i.getName().endsWith(".doc"); |
| | | b = i.getName().endsWith(".docx") || i.getName().endsWith(".doc") || i.getName().endsWith(".DOCX") || i.getName().endsWith(".DOC"); |
| | | break; |
| | | case ".xlsx": |
| | | b = i.getName().endsWith(".xlsx") || i.getName().endsWith(".xls"); |
| | | |
| | | b = i.getName().endsWith(".xlsx") || i.getName().endsWith(".xls") || i.getName().endsWith(".XLSX") || i.getName().endsWith(".XLS"); |
| | | break; |
| | | default: |
| | | b = i.getName().endsWith(fileExtension); |
| | |
| | | }); |
| | | 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); |
| | | } |
| | | |
| | | } |