From 6b5c09b3cb5234ef423a52f5038f63527ab140dc Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 27 Jul 2022 15:49:47 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=9B=BE=E5=B1=82=E3=80=91=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E6=9F=A5=E8=AF=A2=E5=8F=B3=E4=BE=A7=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/enums/CoverageEnums.java | 47 ++++++++++++ .../tools/enums/CoveragePlaceTypeEnum.java | 1 + .../AnalysisResourceCategoriesResult.java | 69 ++++++++++++++++++ .../controller/CoverageController.java | 11 +++ .../dataaggre/service/CoverageService.java | 6 ++ .../service/govorg/GovOrgCoverageService.java | 2 + .../impl/GovOrgCoverageServiceImpl.java | 9 +++ .../service/impl/CoverageServiceImpl.java | 72 +++++++++++++++++++ 8 files changed, 217 insertions(+) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/coverage/AnalysisResourceCategoriesResult.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java new file mode 100644 index 0000000000..0e2e749b16 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java @@ -0,0 +1,47 @@ +package com.epmet.commons.tools.enums; + +/** + * 图层枚举 + */ +public enum CoverageEnums { + + ZHZL("zhzl", "综合治理图层", 1), + YJCL("yjcl", "应急处置资源", 2), + AQSC("aqsc", "安全生产资源", 2), + CSGL("csgl", "城市管理资源", 2), + GGFW("ggfw", "公共服务资源", 2); + + private String coverageType; + private String coverageName; + + /** 位置,1:左侧,2,右侧**/ + private Integer position; + + CoverageEnums(String coverageType, String coverageName, Integer position) { + this.coverageType = coverageType; + this.coverageName = coverageName; + this.position = position; + } + + public static CoverageEnums getEnum(String coverageType) { + CoverageEnums[] values = CoverageEnums.values(); + for (CoverageEnums value : values) { + if (value.getCoverageType().equals(coverageType)) { + return value; + } + } + return null; + } + + public String getCoverageType() { + return coverageType; + } + + public String getCoverageName() { + return coverageName; + } + + public Integer getPosition() { + return position; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoveragePlaceTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoveragePlaceTypeEnum.java index eb8d25e80f..dbad5fa3c2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoveragePlaceTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoveragePlaceTypeEnum.java @@ -14,6 +14,7 @@ public enum CoveragePlaceTypeEnum { PUBLIC_SERVICE("public_service", "公共服务"), RESI("resi", "居民"), PARTY_UNIT("party_unit", "联建单位"), + VOLUNTEER("volunteer", "志愿者"), GROUP_RENT("group_rent", "群租房"), EVENT("event", "事件(包括难点堵点)"); diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/coverage/AnalysisResourceCategoriesResult.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/coverage/AnalysisResourceCategoriesResult.java new file mode 100644 index 0000000000..216c41f705 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/coverage/AnalysisResourceCategoriesResult.java @@ -0,0 +1,69 @@ +package com.epmet.dataaggre.dto.coverage; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * 五大图层-可视化-右侧分类树列表 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AnalysisResourceCategoriesResult { + + /** + * 图层类型 + */ + private String coverageType; + /** + * 图层名称 + */ + private String coverageName; + /** + * 个数 + */ + private Integer count; + + /** + * 没有placeTypeInAnalysis,直接属于图层的 + */ + private List categories = new ArrayList<>(); + + /** + * 场所类型,有placeTypeInAnalysis,不直接属于图层的 + */ + private List placeTypesInAnalysis = new ArrayList<>(); + + /** + * 分类 + */ + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class Category { + private String categoryKey; + private String categoryName; + private String coverageType; + private String placeType; + private Integer count = 0; + } + + /** + * 场所类型 + */ + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PlaceType { + private String placeType; + private String placeTypeName; + private Integer count = 0; + private List categories; + } + + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java index 8ce19a7b9e..fa68116993 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.enums.ZhzlResiCategoryEnum; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.coverage.AnalysisResourceCategoriesResult; import com.epmet.dataaggre.dto.govorg.form.CoverageAnalisisDataListFormDTO; import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO; import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; @@ -72,4 +73,14 @@ public class CoverageController { return new Result().ok(coverageService.coverageHomeSearch(formDTO)); } + /** + * 五大图层-可视化-右侧分类树列表 + * @return + */ + @PostMapping("analysis/resourceCategories") + public Result> listAnalysisResourceCategories() { + List r = coverageService.listAnalysisResourceCategories(); + return new Result>().ok(r); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java index 5674c60c2e..f372f2699c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java @@ -1,6 +1,7 @@ package com.epmet.dataaggre.service; import com.epmet.commons.tools.page.PageData; +import com.epmet.dataaggre.dto.coverage.AnalysisResourceCategoriesResult; import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO; import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; import com.epmet.dataaggre.dto.govorg.result.CoverageHomeSearchResultDTO; @@ -31,4 +32,9 @@ public interface CoverageService { */ CoverageHomeSearchResultDTO coverageHomeSearch(CoverageHomeSearchFormDTO formDTO); + /** + * 五大图层-可视化-右侧分类树列表 + * @return + */ + List listAnalysisResourceCategories(); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java index 424cba462d..8168721b71 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java @@ -137,4 +137,6 @@ public interface GovOrgCoverageService { * @return */ IcCoverageCategoryDictEntity selectByCategoryKey(String categoryKey); + + List listCoverageCategoryEntities(String coverageType); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java index 85b7d2569c..2f39da60a4 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java @@ -324,4 +324,13 @@ public class GovOrgCoverageServiceImpl implements GovOrgCoverageService { query.ge(IcHouseEntity::getResiNumber, resiNumberBiggerThan); return query; } + + @Override + public List listCoverageCategoryEntities(String coverageType) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcCoverageCategoryDictEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); + query.eq(IcCoverageCategoryDictEntity::getCoverageType, coverageType); + query.orderByAsc(IcCoverageCategoryDictEntity::getSort); + return coverageCategoryDictDao.selectList(query); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java index 2a73095105..dfae8be881 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java @@ -1,12 +1,15 @@ package com.epmet.dataaggre.service.impl; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.CoverageEnums; +import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache; import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.dataaggre.dto.coverage.AnalysisResourceCategoriesResult; import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO; import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO; import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; @@ -30,8 +33,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @Slf4j @@ -53,6 +58,9 @@ public class CoverageServiceImpl implements CoverageService { @Autowired private GovProjectService govProjectService; + @Autowired + private GovOrgCoverageService govOrgCoverageService; + /** * 场所类型常量 */ @@ -452,4 +460,68 @@ public class CoverageServiceImpl implements CoverageService { } return new String[]{longitude, latitude}; } + + /** + * 五大图层-可视化-右侧分类树列表 + * @return + */ + @Override + public List listAnalysisResourceCategories() { + + //结果集 + ArrayList results = new ArrayList<>(); + + // 1.查询categoryDict表得到基础数据,每个图层循环一次 + for (CoverageEnums coverage : CoverageEnums.values()) { + + // 只要右边的 + if (!coverage.getPosition().equals(Integer.valueOf(2))) { + continue; + } + + AnalysisResourceCategoriesResult categoriesOfThisCoverage = new AnalysisResourceCategoriesResult(); + HashMap placeTypeMap = new HashMap<>(); + + List categoryDictEntities = govOrgCoverageService.listCoverageCategoryEntities(coverage.getCoverageType()); + + // 2.根据menuUrl过滤 todo + + // 2.计算各类数量 todo + + // 3.对上一步得到的数据进行分组,使用PLACE_TYPE_IN_ANALYSIS分组,然后放入placeType,这一列为空的说明不分组,直接属于coverage + categoryDictEntities.forEach(c -> { + if (StringUtils.isBlank(c.getPlaceTypeInAnalysis())) { + // 没有placetype的 + categoriesOfThisCoverage.getCategories() + .add(new AnalysisResourceCategoriesResult.Category(c.getCategoryKey(), c.getCategoryName(), + c.getCoverageType(), c.getPlaceType(), 0)); + } else { + // 有placetype的 + AnalysisResourceCategoriesResult.PlaceType placeType = placeTypeMap.get(c.getPlaceTypeInAnalysis()); + if (placeType == null) { + placeType = new AnalysisResourceCategoriesResult.PlaceType( + c.getPlaceTypeInAnalysis(), CoveragePlaceTypeEnum.getEnum(c.getPlaceTypeInAnalysis()).getName(), 0, new ArrayList<>()); + placeTypeMap.put(c.getPlaceTypeInAnalysis(), placeType); + } + placeType.getCategories().add(new AnalysisResourceCategoriesResult.Category(c.getCategoryKey(), + c.getCategoryName(), c.getCoverageType(), c.getPlaceType(), 0)); + + placeType.setCount(placeType.getCount() + 0); // todo 0改为category的count + } + }); + + AtomicReference total = new AtomicReference<>(0); + placeTypeMap.forEach((placeTypeKey, placeType) -> { + categoriesOfThisCoverage.getPlaceTypesInAnalysis().add(placeType); + total.updateAndGet(v -> v + placeType.getCount()); + }); + + categoriesOfThisCoverage.setCoverageType(coverage.getCoverageType()); + categoriesOfThisCoverage.setCoverageName(CoverageEnums.getEnum(coverage.getCoverageType()).getCoverageName()); + categoriesOfThisCoverage.setCount(total.get()); + results.add(categoriesOfThisCoverage); + } + + return results; + } } \ No newline at end of file