From 33c32b66edd9317bf9d5aeda1d4f12de314a88eb Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 10 Oct 2022 17:01:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=B8=8B=E6=89=80=E6=9C=89=E7=A4=BE=E5=8C=BA?= =?UTF-8?q?=E7=9A=84=E4=BA=BA=E6=88=BF=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/redis/common/CustomerOrgRedis.java | 33 ++++++++++++++++ .../form/CommunityUserHouseStatsFormDTO.java | 15 +++++++ .../com/epmet/controller/HouseController.java | 16 ++++++++ .../java/com/epmet/dao/CustomerAgencyDao.java | 2 + .../java/com/epmet/service/HouseService.java | 2 + .../epmet/service/impl/HouseServiceImpl.java | 39 +++++++++++++++++++ .../resources/mapper/CustomerAgencyDao.xml | 9 +++++ 7 files changed, 116 insertions(+) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java index 7cb132b0f5..3945081261 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java @@ -13,6 +13,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -111,4 +112,36 @@ public class CustomerOrgRedis { customerOrgRedis.redisUtils.delete(key); } + /** + * 拼接orgIdPath + * @param orgId + * @param orgType + * @return + */ + public static String getOrgIdPath(String orgId, String orgType) { + String orgPids = null; + + if ("grid".equals(orgType)) { + GridInfoCache gridInfo = getGridInfo(orgId); + if (gridInfo == null) { + log.error("查询网格信息失败:{}", orgId); + return null; + } + orgPids = gridInfo.getPids(); + } else if ("agency".equals(orgType)) { + AgencyInfoCache agencyInfo = getAgencyInfo(orgId); + if (agencyInfo == null) { + log.error("查询组织信息失败:{}", orgId); + return null; + } + orgPids = agencyInfo.getPids(); + } + + if (StringUtils.isBlank(orgPids) || "0".equals(orgPids)) { + return orgId; + } + + return orgPids.concat(":").concat(orgId); + } + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java new file mode 100644 index 0000000000..075dc08b7c --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dto.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CommunityUserHouseStatsFormDTO { + private String orgId; + private String orgType; + private Integer pageNo = 1; + private Integer pageSize = 10; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 35b3bc0e6f..dd1d7c37af 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -629,4 +629,20 @@ public class HouseController implements ResultDataResolver { return new Result>().ok(houseService.houseStatisListDetail(formDTO)); } + /** + * 针对社区的人房统计列表 + * @return + */ + @PostMapping("communityUserHouseStats") + public Result> communityUserHouseStats(@RequestBody CommunityUserHouseStatsFormDTO input) { + + String orgId = input.getOrgId(); + String orgType = input.getOrgType(); + Integer pageNo = input.getPageNo(); + Integer pageSize = input.getPageSize(); + + List r = houseService.communityUserHouseStats(orgId, orgType, pageNo, pageSize); + return new Result>().ok(r); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index 0e90d851e3..072a877e94 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -396,5 +396,7 @@ public interface CustomerAgencyDao extends BaseDao { * @return */ Integer getUsingCommunityStats(@Param("agencyId") String agencyId, @Param("agencyOrgIdPath") String agencyOrgIdPath, @Param("endDate") Date endDate); + + List getCommunitysByOrgIdPath(@Param("orgId") String orgId, @Param("orgIdPath") String orgIdPath); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index 239e844523..41ffd5709d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -197,4 +197,6 @@ public interface HouseService { PageData listHouses4ReportTest(String houseId, Integer pageNo, Integer pageSize); PageData houseStatisListDetail(HouseChartFormDTO formDTO); + + List communityUserHouseStats(String orgId, String orgType, Integer pageNo, Integer pageSize); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index d8389ffc37..d5838a78a7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -42,6 +42,7 @@ import com.epmet.enums.*; import com.epmet.feign.*; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; +import com.epmet.redis.CustomerAgencyRedis; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; import com.epmet.stats.UserHouseStatsResultDTO; @@ -1392,5 +1393,43 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { return new PageData<>(list, pageInfo.getTotal()); } + @Override + public List communityUserHouseStats(String orgId, String orgType, Integer pageNo, Integer pageSize) { + + PageHelper.startPage(pageNo, pageSize); + List communityIds = customerAgencyDao.getCommunitysByOrgIdPath(orgId, CustomerOrgRedis.getOrgIdPath(orgId, orgType)); + + // 填充组织信息 + Map communityMap = communityIds.stream().collect(Collectors.toMap(id -> id, id -> concatAgencyNamePath(id))); + List communityUserHouseStats = houseUserChartList(communityIds, communityMap, "agency"); + return communityUserHouseStats; + } + + public String concatAgencyNamePath(String agencyId) { + List agencyNamePathList = new ArrayList(); + + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agencyId); + if (agencyInfo == null) { + return null; + } + agencyNamePathList.add(0, agencyInfo.getOrganizationName()); + + String pidsStr = agencyInfo.getPids(); + if (StringUtils.isBlank(pidsStr)) { + // 没有pids,是顶级,直接返回 + return String.join("-", agencyNamePathList); + } + + String[] pidList = pidsStr.split(":"); + for (String pAgencyId : pidList) { + AgencyInfoCache pAgencyInfo = CustomerOrgRedis.getAgencyInfo(pAgencyId); + if (pAgencyInfo == null) { + continue; + } + agencyNamePathList.add(pAgencyInfo.getOrganizationName()); + } + + return String.join("-", agencyNamePathList); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 9a0dfa1d51..cf75164bfc 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -1028,4 +1028,13 @@ group by ca.ID, ca.ORGANIZATION_NAME having community_count > 0) t + +