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