|
@@ -5,17 +5,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.apache.pdfbox.pdmodel.PDDocument;
|
|
import org.springblade.archive.entity.ArchiveProjectConfig;
|
|
import org.springblade.archive.entity.ArchiveProjectConfig;
|
|
import org.springblade.archive.feign.ArchiveAutoClient;
|
|
import org.springblade.archive.feign.ArchiveAutoClient;
|
|
import org.springblade.business.dto.ImageClassificationFileDTO;
|
|
import org.springblade.business.dto.ImageClassificationFileDTO;
|
|
-import org.springblade.business.entity.ArchiveFile;
|
|
|
|
-import org.springblade.business.entity.InformationQuery;
|
|
|
|
-import org.springblade.business.entity.TrialDetectionData;
|
|
|
|
-import org.springblade.business.entity.TrialSelfInspectionRecord;
|
|
|
|
|
|
+import org.springblade.business.entity.*;
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
import org.springblade.business.feign.ImageClassificationFileClient;
|
|
import org.springblade.business.feign.ImageClassificationFileClient;
|
|
import org.springblade.business.feign.InformationQueryClient;
|
|
import org.springblade.business.feign.InformationQueryClient;
|
|
-import org.springblade.business.vo.TreeVoTwo;
|
|
|
|
import org.springblade.business.vo.TrialSelfInspectionRecordFileVO;
|
|
import org.springblade.business.vo.TrialSelfInspectionRecordFileVO;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.CommonUtil;
|
|
import org.springblade.common.utils.ForestNodeMergerEx;
|
|
import org.springblade.common.utils.ForestNodeMergerEx;
|
|
@@ -24,6 +21,7 @@ import org.springblade.core.log.exception.ServiceException;
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
|
+import org.springblade.core.tool.utils.StringUtil;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.enums.AssociationTypeEnum;
|
|
import org.springblade.manager.enums.AssociationTypeEnum;
|
|
import org.springblade.manager.enums.StorageTypeEnum;
|
|
import org.springblade.manager.enums.StorageTypeEnum;
|
|
@@ -42,6 +40,7 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.io.InputStream;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
@@ -1169,10 +1168,36 @@ public class ArchiveTreeContractSyncImpl {
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
//获取合同段所有的日志,并且附带类型
|
|
//获取合同段所有的日志,并且附带类型
|
|
|
|
+ //先查询所有当前合同段下所有日志数据的父级节点
|
|
|
|
+ List<Long> wbsNodeIds = wbsTreePrivateService.getContractAllLogWbsNodeIds(contractId);
|
|
|
|
+ if(CollectionUtil.isEmpty(wbsNodeIds)){
|
|
|
|
+ throw new ServiceException("当前合同段下没有日志资料");
|
|
|
|
+ }
|
|
List<ArchiveSyncLogVO> logs = wbsTreePrivateService.getContractAllLogMonthPack(contractId);
|
|
List<ArchiveSyncLogVO> logs = wbsTreePrivateService.getContractAllLogMonthPack(contractId);
|
|
//先查按月封装 没有再查日志
|
|
//先查按月封装 没有再查日志
|
|
if(CollectionUtil.isEmpty(logs)){
|
|
if(CollectionUtil.isEmpty(logs)){
|
|
- logs = wbsTreePrivateService.getContractAllLog(contractId);
|
|
|
|
|
|
+ logs = wbsTreePrivateService.getContractAllLog(contractId, null);
|
|
|
|
+ } else {
|
|
|
|
+ Map<Long, List<ArchiveSyncLogVO>> collect = logs.stream().collect(Collectors.groupingBy(ArchiveSyncLogVO::getWbsNodeId));
|
|
|
|
+ for (Long f : wbsNodeIds) {
|
|
|
|
+ List<ArchiveSyncLogVO> list = collect.get(f);
|
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
|
+ List<ArchiveSyncLogVO> contractAllLog = wbsTreePrivateService.getContractAllLog(contractId, f);
|
|
|
|
+ //生成页数
|
|
|
|
+ contractAllLog.forEach(x -> {
|
|
|
|
+ InputStream inputStream = CommonUtil.getOSSInputStream(x.getPdfUrl());
|
|
|
|
+ try (PDDocument document = PDDocument.load(inputStream)) {
|
|
|
|
+ int numberOfPages = document.getNumberOfPages();
|
|
|
|
+ x.setPage(numberOfPages);
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ System.err.println("文件读取错误: " + e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ if(CollectionUtil.isNotEmpty(contractAllLog)){
|
|
|
|
+ logs.addAll(contractAllLog);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (CollectionUtil.isEmpty(logs)){
|
|
if (CollectionUtil.isEmpty(logs)){
|
|
throw new ServiceException("当前合同段下没有日志资料");
|
|
throw new ServiceException("当前合同段下没有日志资料");
|
|
@@ -1375,7 +1400,27 @@ public class ArchiveTreeContractSyncImpl {
|
|
archiveFile.setFileUrl(file.getImagesPdf());
|
|
archiveFile.setFileUrl(file.getImagesPdf());
|
|
archiveFile.setPdfFileUrl(file.getImagesPdf());
|
|
archiveFile.setPdfFileUrl(file.getImagesPdf());
|
|
//文件页数 根据关联照片判断
|
|
//文件页数 根据关联照片判断
|
|
- long count = albumImagesService.count(Wrappers.<AlbumImages>lambdaQuery().eq(AlbumImages::getAlbumId, file.getId()));
|
|
|
|
|
|
+ List<AlbumImages> list = albumImagesService.list(Wrappers.<AlbumImages>lambdaQuery().eq(AlbumImages::getAlbumId, file.getId()));
|
|
|
|
+ int count = 0;
|
|
|
|
+ if(CollectionUtil.isNotEmpty(list)){
|
|
|
|
+ List<Long> imageIds = list.stream().map(AlbumImages::getImageId).collect(Collectors.toList());
|
|
|
|
+ if(CollectionUtil.isNotEmpty(imageIds)){
|
|
|
|
+ //可能存在一条关联记录 多张照片
|
|
|
|
+ List<ImageClassificationFile> imageClassificationFileByIds = imageClassificationFileClient.getImageClassificationFileByIds(imageIds);
|
|
|
|
+ if(CollectionUtil.isNotEmpty(imageClassificationFileByIds)){
|
|
|
|
+ for (ImageClassificationFile f : imageClassificationFileByIds) {
|
|
|
|
+ if(StringUtils.isNotBlank(f.getImageUrl())){
|
|
|
|
+ if(f.getImageUrl().contains(",")){
|
|
|
|
+ List<String> collect = Arrays.stream(f.getImageUrl().split(",")).filter(StringUtil::isNotBlank).collect(Collectors.toList());
|
|
|
|
+ count += collect.size();
|
|
|
|
+ }else{
|
|
|
|
+ count++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//2张照片为一页
|
|
//2张照片为一页
|
|
archiveFile.setFilePage((int) Math.ceil((double) count / 2));
|
|
archiveFile.setFilePage((int) Math.ceil((double) count / 2));
|
|
archiveFile.setIsApproval(0);
|
|
archiveFile.setIsApproval(0);
|
|
@@ -1613,8 +1658,8 @@ public class ArchiveTreeContractSyncImpl {
|
|
archiveFile.setFileName(vo.getFileName());
|
|
archiveFile.setFileName(vo.getFileName());
|
|
archiveFile.setFileTime(vo.getRecordTime());
|
|
archiveFile.setFileTime(vo.getRecordTime());
|
|
archiveFile.setFileUrl(vo.getPdfUrl());
|
|
archiveFile.setFileUrl(vo.getPdfUrl());
|
|
- archiveFile.setPdfFileUrl(vo.getEVisaPdfUrl());
|
|
|
|
- archiveFile.setFilePage(1);
|
|
|
|
|
|
+ archiveFile.setPdfFileUrl(StringUtil.isNotBlank(vo.getEVisaPdfUrl()) ? vo.getEVisaPdfUrl() : vo.getPdfUrl());
|
|
|
|
+ archiveFile.setFilePage(vo.getPage() == null ? 0 : vo.getPage());
|
|
archiveFile.setIsApproval(0);
|
|
archiveFile.setIsApproval(0);
|
|
archiveFile.setIsCertification(1);
|
|
archiveFile.setIsCertification(1);
|
|
archiveFile.setIsNeedCertification(0);
|
|
archiveFile.setIsNeedCertification(0);
|