Browse Source

Merge branch 'refs/heads/dev' into test-merge

LHB 1 month ago
parent
commit
92d1177f3a

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ImageClassificationFileClient.java

@@ -4,8 +4,10 @@ import org.springblade.business.dto.ImageClassificationFileDTO;
 import org.springblade.business.entity.ImageClassificationFile;
 import org.springblade.common.constant.BusinessConstant;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -28,4 +30,7 @@ public interface ImageClassificationFileClient {
 
     @PostMapping(API_PREFIX + "/getImageClassificationFileById")
     ImageClassificationFile getImageClassificationFileById(@RequestBody Long id);
+
+    @PostMapping(API_PREFIX + "/getImageClassificationFileByIds")
+    List<ImageClassificationFile> getImageClassificationFileByIds(@RequestBody List<Long> imageIds);
 }

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveSyncLogVO.java

@@ -36,4 +36,6 @@ public class ArchiveSyncLogVO {
 
     @ApiModelProperty("电签文件路径")
     private String eVisaPdfUrl;
+    @ApiModelProperty("电签文件路径")
+    private Long wbsNodeId;
 }

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -578,7 +578,7 @@ public class FileUtils {
                             } else {
                                 if (rotate!= null && rotate.intValue() == 270) {
                                     //交换width和height
-                                    pdfReader.getPageN(index).put(PdfName.ROTATE, new PdfNumber(0)); // 顺时针旋转270°
+                                    pdfReader.getPageN(index).put(PdfName.ROTATE, new PdfNumber(180)); // 顺时针旋转270°
                                     //横表旋转后打页码坐标不一样
                                     over.showTextAligned(Element.ALIGN_LEFT, pageNumber, width - 35, 20, 0);
                                 }else {

+ 24 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -68,6 +68,7 @@ import org.springblade.manager.vo.WbsTreeContractVO8;
 import org.springblade.manager.vo.WbsTreePrivateAddVO;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
+import org.springblade.system.entity.Dept;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.user.feign.IUserClient;
@@ -2285,6 +2286,29 @@ public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
                 if (StringUtils.isEmpty(contractId)) {
                     contractId = toCopyNode.getContractId();
                 }
+                String userRole = AuthUtil.getUserRole();
+                if(!"administrator".equals(userRole) && vo.getIsCopyData() == 1){
+                    // 查询当前节点有没有数据,有数据则不能复制
+                    if(vo.getClassifyType() != null && !vo.getClassifyType().isEmpty()) {
+                        List<InformationQuery> queries = informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().eq(InformationQuery::getContractId, contractId)
+                                .in(InformationQuery::getClassify, vo.getClassifyType()).eq(InformationQuery::getWbsId, toCopyNode.getPKeyId()).in(InformationQuery::getStatus, 1, 2));
+                        if (!queries.isEmpty()) {
+                            Map<Integer, List<InformationQuery>> map = queries.stream().collect(Collectors.groupingBy(InformationQuery::getClassify));
+                            if (vo.getClassifyType().contains("1")) {
+                                List<InformationQuery> queryList = map.get(1);
+                                if (queryList != null && !queryList.isEmpty()) {
+                                    throw new ServiceException(toCopyNode.getFullName() + "节点有施工上报数据,不允许复制");
+                                }
+                            }
+                            if (vo.getClassifyType().contains("2")) {
+                                List<InformationQuery> queryList = map.get(2);
+                                if (queryList != null && !queryList.isEmpty()) {
+                                    throw new ServiceException(toCopyNode.getFullName() + "节点有监理上报数据,不允许复制");
+                                }
+                            }
+                        }
+                    }
+                }
             }
 
             WbsTreeContract needCopyNodeRoot = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(vo.getNeedCopyPrimaryKeyId());

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ImageClassificationFileClientImpl.java

@@ -8,6 +8,7 @@ import org.springblade.business.mapper.ImageClassificationFileMapper;
 import org.springblade.business.service.IImageClassificationFileService;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Collections;
 import java.util.List;
 
 @RestController
@@ -27,4 +28,8 @@ public class ImageClassificationFileClientImpl implements ImageClassificationFil
         return imageClassificationFileService.getById(id);
     }
 
+    @Override
+    public List<ImageClassificationFile> getImageClassificationFileByIds(List<Long> imageIds) {
+        return imageClassificationFileService.listByIds(imageIds);
+    }
 }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -1404,7 +1404,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
     }
 
     public void submitTrialData(TrialSelfInspectionRecord obj, TrialSelfInspectionRecordDTO dto) {
-        String pdfURL = excelTabClient.saveTabData(dto, dto.getIsBatchSave(), dto.getType(), dto.getTableType(), dto.getId(), obj.getTableIds());
+        String pdfURL = excelTabClient.saveTabData(dto, dto.getIsBatchSave(), dto.getType(), dto.getTableType(), dto.getId(), dto.getTableIds());
         if (StringUtils.isNotEmpty(pdfURL) && !pdfURL.startsWith("500")) {
             String file_path = FileUtils.getSysLocalFileUrl();
             Long snowId = SnowFlakeUtil.getId();

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -127,7 +127,8 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
 
     void batchUpdateIsAddConceal(@Param("private") WbsTreePrivate wbsTreePrivate,@Param("pId") Long pId);
 
-    List<ArchiveSyncLogVO> getContractAllLog(@Param("contractId") Long contractId);
+    List<ArchiveSyncLogVO> getContractAllLog(@Param("contractId") Long contractId,
+                                             @Param("wbsNodeId") Long wbsNodeId);
 
     int cancelLinkNodeTreeInfoByJL(@Param("pkeyId")String pkeyId);
 
@@ -152,4 +153,6 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
     void updateSortBatchByPKeyId(List<WbsTreePrivate> resourceData);
 
     List<ArchiveSyncLogVO> getContractAllLogMonthPack(@Param("contractId") Long contractId);
+
+    List<Long> getContractAllLogWbsNodeIds(@Param("contractId") Long contractId);
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -978,6 +978,9 @@
             contract_id = #{contractId}
           AND ucl.is_deleted = 0
           AND pdf_url IS NOT NULL
+          <if test="wbsNodeId != null">
+              AND wbs_node_id = #{wbsNodeId}
+          </if>
         ORDER BY
             record_time
     </select>
@@ -1040,6 +1043,7 @@
             pdf_url e_visa_pdf_url,
             create_user,
             create_time,
+            wbs_node_id,
             ( SELECT node_type FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logType,
             ( SELECT node_name FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logName
         FROM
@@ -1050,4 +1054,8 @@
         ORDER BY
             record_time;
     </select>
+    <select id="getContractAllLogWbsNodeIds" resultType="java.lang.Long">
+        select DISTINCT wbs_node_id from u_contract_log  WHERE
+            contract_id = #{contractId}
+    </select>
 </mapper>

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -106,11 +106,13 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     //获取数据回显
     List<Long> linkNodeTreeBynodeId(String pkeyId);
 
-    List<ArchiveSyncLogVO> getContractAllLog(Long contractId);
+    List<ArchiveSyncLogVO> getContractAllLog(Long contractId, Long wbsNodeId);
 
     void diGuiWbs(int i);
 
     WbsTreePrivateVO tree3(String wbsId, String projectId);
 
     List<ArchiveSyncLogVO> getContractAllLogMonthPack(Long contractId);
+
+    List<Long> getContractAllLogWbsNodeIds(Long contractId);
 }

+ 41 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -2,16 +2,14 @@ package org.springblade.manager.service.impl;
 
 import com.alibaba.nacos.common.utils.DateFormatUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchiveProjectConfig;
 import org.springblade.archive.feign.ArchiveAutoClient;
 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.ImageClassificationFileClient;
 import org.springblade.business.feign.InformationQueryClient;
@@ -1170,10 +1168,26 @@ public class ArchiveTreeContractSyncImpl {
         List<ArchiveTreeContract> addNode = 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);
         //先查按月封装 没有再查日志
         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);
+                    if(CollectionUtil.isNotEmpty(contractAllLog)){
+                        logs.addAll(contractAllLog);
+                    }
+                }
+            }
         }
         if (CollectionUtil.isEmpty(logs)){
             throw new ServiceException("当前合同段下没有日志资料");
@@ -1376,7 +1390,27 @@ public class ArchiveTreeContractSyncImpl {
         archiveFile.setFileUrl(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张照片为一页
         archiveFile.setFilePage((int) Math.ceil((double) count / 2));
         archiveFile.setIsApproval(0);
@@ -1618,7 +1652,7 @@ public class ArchiveTreeContractSyncImpl {
         archiveFile.setFileName(vo.getFileName());
         archiveFile.setFileTime(vo.getRecordTime());
         archiveFile.setFileUrl(vo.getPdfUrl());
-        archiveFile.setPdfFileUrl(vo.getEVisaPdfUrl());
+        archiveFile.setPdfFileUrl(StringUtil.isNotBlank(vo.getEVisaPdfUrl()) ? vo.getEVisaPdfUrl() : vo.getPdfUrl());
         archiveFile.setFilePage(1);
         archiveFile.setIsApproval(0);
         archiveFile.setIsCertification(1);

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -3204,8 +3204,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    public List<ArchiveSyncLogVO> getContractAllLog(Long contractId) {
-        return baseMapper.getContractAllLog(contractId);
+    public List<ArchiveSyncLogVO> getContractAllLog(Long contractId, Long wbsNodeId) {
+        return baseMapper.getContractAllLog(contractId, wbsNodeId);
     }
 
     @Override
@@ -3213,6 +3213,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return baseMapper.getContractAllLogMonthPack(contractId);
     }
 
+    @Override
+    public List<Long> getContractAllLogWbsNodeIds(Long contractId) {
+        return baseMapper.getContractAllLogWbsNodeIds(contractId);
+    }
+
     public void diGuiWbs(int i) {
         QueryWrapper<WbsTreePrivate> wbsTreePrivateQueryWrapper = new QueryWrapper<>();
         wbsTreePrivateQueryWrapper.select("p_key_id", "id", "p_id", "wbs_id", "project_id", "parent_id", "ancestors");