Переглянути джерело

档案-影响资料同步
1、同步相册对照片计数重新查询,存在多个照片一条记录的情况

LHB 1 місяць тому
батько
коміт
ce834ddf52

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

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

+ 23 - 5
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;
@@ -1375,7 +1373,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);