diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/BuildingInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/BuildingInfoCache.java index 4cb2416328..f1d197c895 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/BuildingInfoCache.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/BuildingInfoCache.java @@ -40,5 +40,15 @@ public class BuildingInfoCache implements Serializable { private String neighborHoodName; private String agencyId; + /** + * 维度 + */ + private String latitude; + + /** + * 经度 + */ + private String longitude; + // 后续用到啥再加吧........ } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiInfoResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiInfoResultDTO.java new file mode 100644 index 0000000000..659805383f --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiInfoResultDTO.java @@ -0,0 +1,13 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import lombok.Data; + +/** + * 居民信息封装类 + */ +@Data +public class IcResiInfoResultDTO { + private String id; + private String name; + private String buildId; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java new file mode 100644 index 0000000000..179dc80aba --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dataaggre.dto.govorg.form; + +import lombok.Data; + +import java.util.List; + +/** + * 图层数据分析-数据列表 + */ +@Data +public class CoverageAnalisisDataListFormDTO { + + /** + * 图层类型列表 + */ + private List coverageTypes; + + /** + * 分类key + */ + private List categoryKeys; + + /** + * 搜索关键词 + */ + private String search; + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = false; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java new file mode 100644 index 0000000000..2d526227d5 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java @@ -0,0 +1,38 @@ +package com.epmet.dataaggre.dto.govorg.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CoverageAnalisisDataListResultDTO { + + private String id; + /** + * 分类key + */ + private String categoryKey; + + /** + * 场所类型 + */ + private String placeType; + + /** + * 内容 + */ + private String content; + + /** + *维度 + */ + private String latitude; + + /** + * 经度 + */ + private String longitude; + +} 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 4efdc11861..4e77d73bff 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 @@ -1,9 +1,17 @@ package com.epmet.dataaggre.controller; import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.govorg.form.CoverageAnalisisDataListFormDTO; +import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; +import com.epmet.dataaggre.service.CoverageService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 5大图层controller */ @@ -11,6 +19,25 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("coverage") public class CoverageController { - //public Result + @Autowired + private CoverageService coverageService; + + /** + * 数据分析-数据列表 + * @param input + * @return + */ + @RequestMapping("dataList") + public Result> dataList(@RequestBody CoverageAnalisisDataListFormDTO input) { + List coverageTypes = input.getCoverageTypes(); + List categoryKeys = input.getCategoryKeys(); + if (CollectionUtils.isEmpty(coverageTypes)) { + return new Result(); + } + + List l = coverageService.analysisDataList(coverageTypes, categoryKeys, + input.getSearch(), input.getPageNo(), input.getPageSize(), input.getIsPage()); + return new Result>().ok(l); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java index 1e34921a43..ac78a4ae94 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java @@ -18,6 +18,7 @@ package com.epmet.dataaggre.dao.epmetuser; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO; import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; import com.epmet.dataaggre.entity.epmetuser.IcResiUserEntity; import com.epmet.dto.IcResiUserDTO; @@ -46,4 +47,10 @@ public interface IcResiUserDao extends BaseDao { * @author sun */ List getHomeUserList(@Param("homeId") String homeId, @Param("icUserId") String icUserId); + + List listSpecialResisBySpecialType(@Param("customerId") String customerId, + @Param("agencyId") String agencyId, + @Param("queryPids") String queryPids, + @Param("categoryKey") String categoryKey, + @Param("search") String search); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryDictDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryDictDao.java new file mode 100644 index 0000000000..e81167fc39 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryDictDao.java @@ -0,0 +1,16 @@ +package com.epmet.dataaggre.dao.govorg; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.entity.govorg.IcCoverageCategoryDictEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 五大图层类别字典表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-06-16 + */ +@Mapper +public interface IcCoverageCategoryDictDao 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/IcCoverageCategoryDictEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryDictEntity.java new file mode 100644 index 0000000000..cdaca78b91 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryDictEntity.java @@ -0,0 +1,56 @@ +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; + +/** + * 五大图层类别字典表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-06-16 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_coverage_category_dict") +public class IcCoverageCategoryDictEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * default;或者customerId + */ + private String customerId; + + /** + * 类别key + */ + private String categoryKey; + + /** + * 名称 + */ + private String categoryName; + + /** + * 所属场所类型; +社区自组织:community_org; +优势资源:superior_resource; +城市管理:city_management; +重点危化企业:dangerous_chemicals; +公共服务:public_service + */ + private String placeType; + + /** + * 所属五大图层:zhzl:综合治理图层;yjcl:应急处置图层;aqsc:安全生产图层;csgl:城市管理图层;ggfw:公共服务图层 + */ + private String coverageType; + + /** + * 排序 + */ + private Integer sort; + +} 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 new file mode 100644 index 0000000000..446afa9e48 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java @@ -0,0 +1,22 @@ +package com.epmet.dataaggre.service; + +import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; + +import java.util.List; + +/** + * 5大图层 + */ +public interface CoverageService { + /** + * 图层,大屏数据分析,数据列表 + * @param coverageTypes 图层列表 + * @param categoryKeys 分类列表 + * @param search 搜索关键词 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return + */ + List analysisDataList(List coverageTypes, List categoryKeys, + String search, Integer pageNo, Integer pageSize, Boolean isPage); +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/IcResiService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/IcResiService.java new file mode 100644 index 0000000000..30c5bb1043 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/IcResiService.java @@ -0,0 +1,38 @@ +package com.epmet.dataaggre.service.epmetuser; + +import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO; +import com.epmet.dataaggre.entity.epmetuser.IcResiUserEntity; + +import java.util.List; + +/** + * IC居民 + */ +public interface IcResiService { + + /** + * 5大图层,居民查询 + * @param categoryKey 居民类别 + * @param search 搜索关键词,姓名 + * @param pageNo + * @param pageSize + * @param isPage + * @return + */ + List listResisByCategories4Coverage(String customerId, String agencyId, String queryPids, String categoryKey, String search, + Integer pageNo, Integer pageSize, Boolean isPage); + + /** + * 使用特殊人群类别查询居民列表 + * @param customerId + * @param queryPids + * @param categoryKey + * @param search + * @param pageNo + * @param pageSize + * @param isPage + * @return + */ + List listSpecialResisBySpecialType(String customerId, String agencyId, String queryPids, String categoryKey, String search, + Integer pageNo, Integer pageSize, Boolean isPage); +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/IcResiServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/IcResiServiceImpl.java new file mode 100644 index 0000000000..afc06839be --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/IcResiServiceImpl.java @@ -0,0 +1,65 @@ +package com.epmet.dataaggre.service.epmetuser.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.dao.epmetuser.IcResiUserDao; +import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO; +import com.epmet.dataaggre.entity.epmetuser.IcResiUserEntity; +import com.epmet.dataaggre.service.epmetuser.IcResiService; +import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@DataSource(value = DataSourceConstant.EPMET_USER) +@Service +public class IcResiServiceImpl implements IcResiService { + + @Autowired + private IcResiUserDao resiUserDao; + + /** + * 5大图层,居民查询 + * @param categoryKey 居民类别 + * @param search 搜索关键词,姓名 + * @param pageNo + * @param pageSize + * @param isPage + * @return + */ + @Override + public List listResisByCategories4Coverage(String customerId, String agencyId, String queryPids, String categoryKey, String search, + Integer pageNo, Integer pageSize, Boolean isPage) { + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + } + + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcResiUserEntity::getCustomerId, customerId); + //query.likeRight(IcResiUserEntity::getPids, queryPids); + query.and(q -> q.eq(IcResiUserEntity::getAgencyId, agencyId).or().likeRight(IcResiUserEntity::getPids, queryPids)); + if ("resi_xfry".equals(categoryKey)) { + // 信访人员 + query.eq(IcResiUserEntity::getIsXfry, true); + } else if ("resi_snry".equals(categoryKey)) { + query.eq(IcResiUserEntity::getIsSn, true); + } + + if (StringUtils.isNotBlank(search)) { + query.like(IcResiUserEntity::getName, search); + } + return resiUserDao.selectList(query); + } + + @Override + public List listSpecialResisBySpecialType(String customerId, String agencyId, String queryPids, String categoryKey, String search, + Integer pageNo, Integer pageSize, Boolean isPage) { + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + } + return resiUserDao.listSpecialResisBySpecialType(customerId, agencyId, queryPids, categoryKey, search); + } +} 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 new file mode 100644 index 0000000000..bad471c582 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java @@ -0,0 +1,38 @@ +package com.epmet.dataaggre.service.govorg; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * org库的图层service + */ +public interface GovOrgCoverageService { + + @Data + @NoArgsConstructor + @AllArgsConstructor + class CategoryCoverageMapping { + private String placeType; + private String coverageType; + private String categoryKey; + } + + /** + * 根据categoryKeys分类key列表,查询他们和图层时间的关系,映射为一个map + * @param categoryKeys + * @return + */ + Map> getMappingRelationByCategoryKey(List categoryKeys); + + /** + * 根据coverageTypes分类key列表,查询他们和图层时间的关系,映射为一个map + * @param coverageTypes + * @return + */ + Map> getMappingRelationByCoverageType(List coverageTypes); +} 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 new file mode 100644 index 0000000000..e53d39884b --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java @@ -0,0 +1,66 @@ +package com.epmet.dataaggre.service.govorg.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.dao.govorg.IcCoverageCategoryDictDao; +import com.epmet.dataaggre.entity.govorg.IcCoverageCategoryDictEntity; +import com.epmet.dataaggre.service.govorg.GovOrgCoverageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * org 图层service + */ +@Service +@DataSource(value = DataSourceConstant.GOV_ORG) +public class GovOrgCoverageServiceImpl implements GovOrgCoverageService { + + @Autowired + private IcCoverageCategoryDictDao coverageCategoryDictDao; + + /** + * 根据categoryKeys分类key列表,查询他们和图层时间的关系,映射为一个map + * @param categoryKeys + * @return + */ + public Map> getMappingRelationByCategoryKey(List categoryKeys) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(IcCoverageCategoryDictEntity::getCategoryKey, categoryKeys); + + List dict = coverageCategoryDictDao.selectList(query); + return map(dict); + } + + @Override + public Map> getMappingRelationByCoverageType(List coverageTypes) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(IcCoverageCategoryDictEntity::getCoverageType, coverageTypes); + + List dict = coverageCategoryDictDao.selectList(query); + return map(dict); + } + + /** + * 执行映射 + * @param dict + * @return + */ + public Map> map(List dict) { + HashMap> mapping = new HashMap<>(); + for (IcCoverageCategoryDictEntity item : dict) { + String coverageType = item.getCoverageType(); + CategoryCoverageMapping m = new CategoryCoverageMapping(item.getPlaceType(), coverageType, item.getCategoryKey()); + if (mapping.containsKey(coverageType)) { + mapping.get(coverageType).add(m); + } else { + List ms = new ArrayList<>(); + ms.add(m); + mapping.put(coverageType, ms); + } + } + return mapping; + } +} 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 new file mode 100644 index 0000000000..75fc1d6192 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java @@ -0,0 +1,173 @@ +package com.epmet.dataaggre.service.impl; + +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +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.epmetuser.result.IcResiInfoResultDTO; +import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; +import com.epmet.dataaggre.entity.epmetuser.IcResiUserEntity; +import com.epmet.dataaggre.service.CoverageService; +import com.epmet.dataaggre.service.epmetuser.IcResiService; +import com.epmet.dataaggre.service.epmetuser.impl.IcResiServiceImpl; +import com.epmet.dataaggre.service.govorg.GovOrgCoverageService; +import com.epmet.dataaggre.service.govorg.GovOrgService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class CoverageServiceImpl implements CoverageService { + + @Autowired + private GovOrgCoverageService orgCoverageService; + + @Autowired + private GovOrgService govOrgService; + + @Autowired + private IcResiService icResiService; + + /** + * 场所类型常量 + */ + public static final String PLACE_TYPE_RESI = "resi"; + public static final String PLACE_TYPE_SPECIAL_RESI = "special_resi"; + public static final String PLACE_TYPE_EVENT= "event"; + public static final String PLACE_TYPE_CITY_MANAGEMENT= "city_management"; + public static final String PLACE_TYPE_COMUNITY_ORG= "community_org"; + public static final String PLACE_TYPE_DANGEROUS_CHEMICALS= "dangerous_chemicals"; + public static final String PLACE_TYPE_ENTERPRISE_PARTROL= "enterprise_partrol"; + public static final String PLACE_TYPE_GROUP_RENT= "group_rent"; + public static final String PLACE_TYPE_PUBLIC_SERVICE= "public_service"; + public static final String PLACE_TYPE_SUPERIOR_RESOURCE= "superior_resource"; + + /** 优势资源 **/ + public static final String PLACE_TYPE_YSZY= "yszy"; + + /** + * 图层,大屏数据分析,数据列表 + * @param coverageTypes 图层列表 + * @param categoryKeys 分类列表 + * @param search 搜索关键词 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return + */ + @Override + public List analysisDataList(List coverageTypes, List categoryKeys, + String search, Integer pageNo, Integer pageSize, Boolean isPage) { + + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + String staffId = EpmetRequestHolder.getLoginUserId(); + + // 1.根据categoryKeys分类key列表,查询他们和图层时间的关系,映射为一个map + Map> mapping; + if (CollectionUtils.isNotEmpty(categoryKeys)) { + // 有分类keys,使用分类keys查询,使用coverageTypes分组 + mapping = orgCoverageService.getMappingRelationByCategoryKey(categoryKeys); + } else { + // 没有分类keys,使用coverageTypes直接查询 + mapping = orgCoverageService.getMappingRelationByCoverageType(coverageTypes); + } + + // 2.循环coverageTypes,使用key到map中查询(为了顺序),得到categoryKeys列表之后,根据实际情况做相应的查询 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); + + if (staffInfo == null) { + String msg = "未找到当前登录人信息。staffId:" + EpmetRequestHolder.getLoginUserId(); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), msg, msg); + } + + String staffPids = getStaffPidsFromStaffInfo(staffInfo); + String agencyId = staffInfo.getAgencyId(); + + List rls = new ArrayList<>(); + for (String coverageType : coverageTypes) { + List ccm = mapping.get(coverageType); + if (CollectionUtils.isEmpty(ccm)) { + continue; + } + for (GovOrgCoverageService.CategoryCoverageMapping e : ccm) { + // 执行查询 + List rl = doDataListSearch(EpmetRequestHolder.getLoginUserCustomerId(), agencyId, staffPids, e.getPlaceType(), e.getCategoryKey(), search, pageNo, pageSize, isPage); + rls.addAll(rl); + } + } + return rls; + } + + /** + * 从staff信息中获取工作人员的PIDS + * @param staffInfo + * @return + */ + private String getStaffPidsFromStaffInfo(CustomerStaffInfoCacheResult staffInfo) { + String agencyId = staffInfo.getAgencyId(); + String agencyPIds = staffInfo.getAgencyPIds(); + if (StringUtils.isNotBlank(agencyPIds) && !"0".equals(agencyPIds)) { + return agencyPIds.concat(":").concat(agencyId); + } else { + return agencyId; + } + } + + /** + * 执行数据查询 + * @param categoryKey + * @return + */ + public List doDataListSearch(String customerId, String agencyId, String agencyPids, String placeType, String categoryKey, String search, + Integer pageNo, Integer pageSize,Boolean isPage) { + + if (PLACE_TYPE_RESI.equals(placeType)) { + // 使用分类查询居民信息 + List resiEntities = icResiService.listResisByCategories4Coverage(customerId, agencyId, agencyPids, categoryKey, search, pageNo, pageSize, isPage); + return resiEntities.stream().map(re -> { + // 使用楼栋的坐标补充居民的坐标信息 + BuildingInfoCache resiBuilding = getBuildingInfo(re.getId(), re.getBuildId()); + return new CoverageAnalisisDataListResultDTO(re.getId(), categoryKey, placeType, re.getName(), resiBuilding.getLatitude(), resiBuilding.getLongitude()); + }).collect(Collectors.toList()); + } else if (PLACE_TYPE_SPECIAL_RESI.equals(placeType)) { + // 特殊人群 + List resiInfos = icResiService.listSpecialResisBySpecialType(customerId, agencyId, agencyPids, categoryKey, search, pageNo, pageSize, isPage); + return resiInfos.stream().map(re -> { + BuildingInfoCache resiBuilding = getBuildingInfo(re.getId(), re.getBuildId()); + return new CoverageAnalisisDataListResultDTO(re.getId(), categoryKey, placeType, re.getName(), resiBuilding.getLatitude(), resiBuilding.getLongitude()); + }).collect(Collectors.toList()); + } else if (PLACE_TYPE_EVENT.equals(placeType)) { + // 难点痛点 + + + } else if (PLACE_TYPE_YSZY.equals(placeType)) { + + + } + + return null; + } + + /** + * 楼栋信息 + * @param resiId + * @param buildingId + * @return + */ + private BuildingInfoCache getBuildingInfo(String resiId, String buildingId) { + BuildingInfoCache resiBuilding = govOrgService.queryBuildingInfo(buildingId); + if (resiBuilding == null) { + log.warn("居民信息所属楼栋信息未找到。居民id:{},楼栋id:{}", resiId, buildingId); + } + return resiBuilding; + } +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml index c28d81375c..d4fdc69fa7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml @@ -36,4 +36,19 @@ ORDER BY id = #{icUserId} desc + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcBuildingDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcBuildingDao.xml index 342c05e0c8..a1b7bc4a64 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcBuildingDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcBuildingDao.xml @@ -10,7 +10,9 @@ ib.NEIGHBOR_HOOD_ID as neighborHoodId, ih.NEIGHBOR_HOOD_NAME as neighborHoodName, ih.GRID_ID as gridId, - ih.AGENCY_ID as agencyId + ih.AGENCY_ID as agencyId, + ib.LATITUDE as latitude, + ib.LONGITUDE as longitude FROM ic_building ib INNER JOIN ic_neighbor_hood ih ON ( ib.NEIGHBOR_HOOD_ID = ih.id ) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryDictDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryDictDao.xml new file mode 100644 index 0000000000..beb08a1262 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryDictDao.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file