From 2166c1a14f9629aa49a5f3bb849ce878df4c4892 Mon Sep 17 00:00:00 2001 From: yangbin <yangbin@qq.com> Date: 星期三, 28 八月 2024 17:23:25 +0800 Subject: [PATCH] 2 --- lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/FilePdfInfoServiceImp.java | 133 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 133 insertions(+), 0 deletions(-) diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/FilePdfInfoServiceImp.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/FilePdfInfoServiceImp.java new file mode 100644 index 0000000..a866ee2 --- /dev/null +++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/FilePdfInfoServiceImp.java @@ -0,0 +1,133 @@ +package org.jeecg.modules.ai.service.imp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.api.vo.FileUploadResult; +import org.jeecg.modules.ai.entity.FileImgInfo; +import org.jeecg.modules.ai.entity.FilePdfInfo; +import org.jeecg.modules.ai.mapper.FilePdfInfoMapper; +import org.jeecg.modules.ai.service.IFileImgInfoService; +import org.jeecg.modules.ai.service.IFilePdfInfoService; +import org.jeecg.modules.ai.vo.FilePdfSelectVo; +import org.jeecg.modules.ai.vo.KeyWordPositionVo; +import org.jeecg.modules.ai.vo.PhotoListVo; +import org.jeecg.modules.utils.BeanMapper; +import org.jeecg.modules.utils.DateUtil; +import org.jeecg.modules.utils.PdfTurnPngUtils; +import org.jeecg.modules.utils.PdfUtils; +import org.jeecg.modules.utils.file.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.crypto.KeyGenerator; +import java.io.File; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + * @author clown + * * @date 2024/8/5 + */ +@Service +public class FilePdfInfoServiceImp extends ServiceImpl<FilePdfInfoMapper,FilePdfInfo> implements IFilePdfInfoService { + + @Autowired + private IFileImgInfoService fileImgInfoService; + + @Value("${jeecg.path.upload}") + public String fileUploadFolder; + + + + @Override + public boolean uploadFilePdf(File file) { + FileUploadResult result = FileUtils.uploadFileInFile(file); + FilePdfInfo info = new FilePdfInfo(); + info.setFileName(result.getFileName()); + info.setFileEncodeName(result.getFileEncodeName()); + info.setFilePath(result.getFilePath()); + info.setFileSize(result.getFileSize()); + info.setFileSuffix(result.getFileSuffix()); + boolean b = save(info); + if (!b) { + return false; + } + try { + List<PhotoListVo> pngList = PdfTurnPngUtils.pdf2pngList(file,"png",info.getId()); + if (pngList == null || pngList.isEmpty() ) { + return false; + } + List<FileImgInfo> fileImgs = new ArrayList<>(); + for (PhotoListVo vo : pngList) { + FileImgInfo img = new FileImgInfo(); + BeanMapper.copy(vo,img); + img.setFileId(info.getId()); + fileImgs.add(img); + } + + boolean c = fileImgInfoService.saveBatch(fileImgs); + if (c) { + return true; + } else { + removeById(info.getId()); + return false; + } + + } catch (Exception e) { + removeById(info.getId()); + return false; + } + + } + + @Override + public List<FileImgInfo> findImgPathList(FilePdfSelectVo fileVo) { + FilePdfInfo info = new FilePdfInfo(); + if (StringUtils.isNotBlank(fileVo.getPdfFileId())) { + info = super.getById(fileVo.getPdfFileId()); + } else { + //寰呬紭鍖� + List<FilePdfInfo> list = super.list(new LambdaQueryWrapper<FilePdfInfo>(). + eq(FilePdfInfo::getFileName, fileVo.getPdfName()). + orderByDesc(FilePdfInfo::getCreateTime) + ); + if (list == null || list.isEmpty()) { + return null; + } + BeanMapper.copy(list.get(0),info); + } + if (info == null ) { + return null; + } + List<KeyWordPositionVo> workVo = PdfUtils.findListWord(fileUploadFolder + "/" + info.getFilePath() + "/" + info.getFileEncodeName(),fileVo.getPdfContent()); + if (workVo == null || workVo.isEmpty()) { + return null; + } + List<Integer> sb = new ArrayList<>(); + for (KeyWordPositionVo key : workVo) { + sb.add(key.getPage()); + } + List<FileImgInfo> list = fileImgInfoService.findFileImgInfos(fileVo.getPdfFileId(),sb); + return list; + } + + @Override + public FilePdfInfo findNewFilePDF(String fileName) { + FilePdfInfo info = new FilePdfInfo(); + List<FilePdfInfo> list = super.list(new LambdaQueryWrapper<FilePdfInfo>(). + eq(FilePdfInfo::getFileName, fileName). + orderByDesc(FilePdfInfo::getCreateTime) + ); + if (list == null || list.isEmpty()) { + return null; + } + BeanMapper.copy(list.get(0),info); + return info; + } +} -- Gitblit v1.9.3