diff --git a/epmet-cloud-generator/src/main/resources/application.yml b/epmet-cloud-generator/src/main/resources/application.yml index 973eb74fe0..86b39b69c8 100644 --- a/epmet-cloud-generator/src/main/resources/application.yml +++ b/epmet-cloud-generator/src/main/resources/application.yml @@ -9,7 +9,7 @@ spring: type: com.alibaba.druid.pool.DruidDataSource #MySQL配置 driverClassName: com.mysql.jdbc.Driver - url: jdbc:mysql://118.190.150.119:43306/epmet_user?useUnicode=true&characterEncoding=UTF-8&useSSL=false + url: jdbc:mysql://118.190.150.119:43306/epmet_gov_org?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: root #oracle配置 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 f300875b13..d64f0866a5 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 @@ -3,6 +3,8 @@ package com.epmet.dataaggre.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.dto.result.ZhzlCategorySelectDTO; import com.epmet.commons.tools.enums.ZhzlResiCategoryEnum; +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.security.dto.TokenDto; import com.epmet.commons.tools.utils.EpmetRequestHolder; @@ -17,6 +19,7 @@ import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTOV2 import com.epmet.dataaggre.dto.govorg.result.CoverageHomeSearchResultDTO; import com.epmet.dataaggre.service.CoverageService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 5大图层controller @@ -92,11 +96,16 @@ public class CoverageController { /** * 被管理对象分类列表 + * @param input:只有一个字段:agencyId * @return */ @PostMapping("analysis/governedTargetCategories") - public Result> listGovernedTargetCategories() { - List r = coverageService.listGovernedTargetCategories(); + public Result> listGovernedTargetCategories(@RequestBody Map input) { + String agencyId = input.get("agencyId"); + if (StringUtils.isBlank(agencyId)) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "请输入组织ID"); + } + List r = coverageService.listGovernedTargetCategories(agencyId); return new Result>().ok(r); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryStatsDao.java new file mode 100755 index 0000000000..2d179ee974 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryStatsDao.java @@ -0,0 +1,16 @@ +package com.epmet.dataaggre.dao.govorg; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.entity.govorg.IcCoverageCategoryStatsEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-07-29 + */ +@Mapper +public interface IcCoverageCategoryStatsDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryStatsEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryStatsEntity.java new file mode 100755 index 0000000000..7947b31564 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryStatsEntity.java @@ -0,0 +1,64 @@ +package com.epmet.dataaggre.entity.govorg; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-07-29 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_coverage_category_stats") +public class IcCoverageCategoryStatsEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * default;或者customerId + */ + private String customerId; + + /** + * agency,grid的id + */ + private String orgId; + + /** + * agency,grid的id + */ + private String orgType; + + /** + * agency,grid ID路径path,包含自身 + */ + private String orgIdPath; + + /** + * 类别key + */ + private String categoryKey; + + /** + * 所属场所类型。社区自组织:community_org;优势资源:superior_resource;城市管理:city_management;重点危化企业:dangerous_chemicals;公共服务:public_service;特殊人群:special_resi;居民:resi;联建单位:party_unit;群租房:group_rent;事件(包括难点堵点):event;企事业单位巡查:enterprise_patrol; + */ + private String placeType; + + /** + * 所属五大图层:zhzl:综合治理图层;yjcl:应急处置图层;aqsc:安全生产图层;csgl:城市管理图层;ggfw:公共服务图层 + */ + private String coverageType; + + /** + * + */ + private Integer quantity; + +} 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 5c39087be8..1dcb2907a4 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 @@ -42,7 +42,7 @@ public interface CoverageService { */ List listAnalysisResourceCategories(); - List listGovernedTargetCategories(); + List listGovernedTargetCategories(String agencyId); /** * 五大图层,左侧菜单,点击事件,查询人.事的分布 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 1b94a0f270..0bc9878dc4 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 @@ -47,6 +47,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -78,6 +82,9 @@ public class CoverageServiceImpl implements CoverageService { @Autowired private IcResiCategoryWarnService icResiCategoryWarnService; + @Autowired + private ExecutorService executorService; + // 1:出租 0:自住 2:闲置 3:未售出 public static final Integer HOUSE_RENT_FLAG_RENT = 1; @@ -746,7 +753,7 @@ public class CoverageServiceImpl implements CoverageService { } @Override - public List listGovernedTargetCategories() { + public List listGovernedTargetCategories(String agencyId) { // 获取所有菜单的url List menuUrls = new ArrayList<>(128); @@ -814,9 +821,78 @@ public class CoverageServiceImpl implements CoverageService { }); } + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + String staffId = EpmetRequestHolder.getLoginUserId(); + + Map agencyMap=getStaffPidsFromStaffInfo(customerId,staffId,agencyId,OrgConstant.AGENCY); + String agencyPath = agencyMap.get(OrgConstant.AGENC_PATH); + + // 再最后,多线程setQuantity + fillQuantities4GovernedTarges(results, customerId, agencyId, agencyPath); + return results; } + /** + * 填充数量,接收参数为多个placeType(对应左侧菜单的所有一级) + * @param results + */ + private void fillQuantities4GovernedTarges(List results, String customerId, String agencyId, String staffOrgIds) { + + ArrayList> futures = new ArrayList<>(); + + results.stream().forEach(targetsOfOnePlaceType -> { + CompletableFuture future = CompletableFuture.runAsync(() -> { + fillQuantities4GovernedTarges(targetsOfOnePlaceType, customerId, agencyId, staffOrgIds); + }, executorService); + + futures.add(future); + }); + + // 此处是为了等待计算完成 + futures.forEach(future -> { + try { + future.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + }); + } + + /** + * 填充数量,接收参数为左侧单个placeType + * @param targetsOfOnePlaceType + * @param customerId + * @param agencyId + * @param staffOrgIds + */ + private void fillQuantities4GovernedTarges(AnalysisGovernedTargetsResult targetsOfOnePlaceType, String customerId, String agencyId, String staffOrgIds) { + List children = targetsOfOnePlaceType.getChildren(); + if (CollectionUtils.isEmpty(children)) { + // 城市管理时间 || 安全生产隐患等只有一层的 + Integer quantity = doDataListCount(customerId, agencyId, staffOrgIds, targetsOfOnePlaceType.getPlaceType(), + targetsOfOnePlaceType.getCategoryKey(), null); + targetsOfOnePlaceType.setQuantity(quantity); + } else { + // 综合治理人群 || 公共服务人群等有子级的 + + AtomicInteger totalOfPlaceType = new AtomicInteger(); + children.forEach(governedTarget -> { + Integer quantity = doDataListCount(customerId, agencyId, staffOrgIds, governedTarget.getPlaceType(), + governedTarget.getCategoryKey(), null); + governedTarget.setQuantity(quantity); + totalOfPlaceType.addAndGet(quantity); + }); + + // 设置这一组的总数 + targetsOfOnePlaceType.setQuantity(totalOfPlaceType.get()); + } + } + + + /** * 五大图层,左侧菜单,点击事件,查询人.事的分布 * diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryStatsDao.xml new file mode 100755 index 0000000000..2954d89db3 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryStatsDao.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file