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;
|
}
|
}
|