Browse Source

【五大图层】完成"数据列表查询"大体框架

dev
wangxianzhang 3 years ago
parent
commit
cf70177a6d
  1. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/BuildingInfoCache.java
  2. 13
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiInfoResultDTO.java
  3. 30
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java
  4. 38
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java
  5. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java
  6. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/IcResiUserDao.java
  7. 16
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcCoverageCategoryDictDao.java
  8. 56
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/IcCoverageCategoryDictEntity.java
  9. 22
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java
  10. 38
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/IcResiService.java
  11. 65
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/IcResiServiceImpl.java
  12. 38
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgCoverageService.java
  13. 66
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgCoverageServiceImpl.java
  14. 173
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java
  15. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml
  16. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcBuildingDao.xml
  17. 23
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryDictDao.xml

10
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;
// 后续用到啥再加吧........
}

13
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;
}

30
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<String> coverageTypes;
/**
* 分类key
*/
private List<String> categoryKeys;
/**
* 搜索关键词
*/
private String search;
private Integer pageNo = 1;
private Integer pageSize = 20;
private Boolean isPage = false;
}

38
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;
}

29
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<List<CoverageAnalisisDataListResultDTO>> dataList(@RequestBody CoverageAnalisisDataListFormDTO input) {
List<String> coverageTypes = input.getCoverageTypes();
List<String> categoryKeys = input.getCategoryKeys();
if (CollectionUtils.isEmpty(coverageTypes)) {
return new Result();
}
List<CoverageAnalisisDataListResultDTO> l = coverageService.analysisDataList(coverageTypes, categoryKeys,
input.getSearch(), input.getPageNo(), input.getPageSize(), input.getIsPage());
return new Result<List<CoverageAnalisisDataListResultDTO>>().ok(l);
}
}

7
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<IcResiUserEntity> {
* @author sun
*/
List<ProjectAnalysisResultDTO.Home> getHomeUserList(@Param("homeId") String homeId, @Param("icUserId") String icUserId);
List<IcResiInfoResultDTO> listSpecialResisBySpecialType(@Param("customerId") String customerId,
@Param("agencyId") String agencyId,
@Param("queryPids") String queryPids,
@Param("categoryKey") String categoryKey,
@Param("search") String search);
}

16
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<IcCoverageCategoryDictEntity> {
}

56
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;
}

22
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<CoverageAnalisisDataListResultDTO> analysisDataList(List<String> coverageTypes, List<String> categoryKeys,
String search, Integer pageNo, Integer pageSize, Boolean isPage);
}

38
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<IcResiUserEntity> 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<IcResiInfoResultDTO> listSpecialResisBySpecialType(String customerId, String agencyId, String queryPids, String categoryKey, String search,
Integer pageNo, Integer pageSize, Boolean isPage);
}

65
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<IcResiUserEntity> listResisByCategories4Coverage(String customerId, String agencyId, String queryPids, String categoryKey, String search,
Integer pageNo, Integer pageSize, Boolean isPage) {
if (isPage) {
PageHelper.startPage(pageNo, pageSize);
}
LambdaQueryWrapper<IcResiUserEntity> 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<IcResiInfoResultDTO> 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);
}
}

38
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<String, List<CategoryCoverageMapping>> getMappingRelationByCategoryKey(List<String> categoryKeys);
/**
* 根据coverageTypes分类key列表查询他们和图层时间的关系映射为一个map
* @param coverageTypes
* @return
*/
Map<String, List<CategoryCoverageMapping>> getMappingRelationByCoverageType(List<String> coverageTypes);
}

66
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<String, List<CategoryCoverageMapping>> getMappingRelationByCategoryKey(List<String> categoryKeys) {
LambdaQueryWrapper<IcCoverageCategoryDictEntity> query = new LambdaQueryWrapper<>();
query.in(IcCoverageCategoryDictEntity::getCategoryKey, categoryKeys);
List<IcCoverageCategoryDictEntity> dict = coverageCategoryDictDao.selectList(query);
return map(dict);
}
@Override
public Map<String, List<CategoryCoverageMapping>> getMappingRelationByCoverageType(List<String> coverageTypes) {
LambdaQueryWrapper<IcCoverageCategoryDictEntity> query = new LambdaQueryWrapper<>();
query.in(IcCoverageCategoryDictEntity::getCoverageType, coverageTypes);
List<IcCoverageCategoryDictEntity> dict = coverageCategoryDictDao.selectList(query);
return map(dict);
}
/**
* 执行映射
* @param dict
* @return
*/
public Map<String, List<CategoryCoverageMapping>> map(List<IcCoverageCategoryDictEntity> dict) {
HashMap<String, List<CategoryCoverageMapping>> 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<CategoryCoverageMapping> ms = new ArrayList<>();
ms.add(m);
mapping.put(coverageType, ms);
}
}
return mapping;
}
}

173
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<CoverageAnalisisDataListResultDTO> analysisDataList(List<String> coverageTypes, List<String> categoryKeys,
String search, Integer pageNo, Integer pageSize, Boolean isPage) {
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
String staffId = EpmetRequestHolder.getLoginUserId();
// 1.根据categoryKeys分类key列表,查询他们和图层时间的关系,映射为一个map
Map<String, List<GovOrgCoverageService.CategoryCoverageMapping>> 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<CoverageAnalisisDataListResultDTO> rls = new ArrayList<>();
for (String coverageType : coverageTypes) {
List<GovOrgCoverageService.CategoryCoverageMapping> ccm = mapping.get(coverageType);
if (CollectionUtils.isEmpty(ccm)) {
continue;
}
for (GovOrgCoverageService.CategoryCoverageMapping e : ccm) {
// 执行查询
List<CoverageAnalisisDataListResultDTO> 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<CoverageAnalisisDataListResultDTO> 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<IcResiUserEntity> 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<IcResiInfoResultDTO> 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;
}
}

15
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/IcResiUserDao.xml

@ -36,4 +36,19 @@
ORDER BY id = #{icUserId} desc <!-- 指定某个人排在第一位 -->
</select>
<!--根据特殊人群类别查询居民列表-->
<select id="listSpecialResisBySpecialType" resultType="com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO">
select resi.id, resi.BUILD_ID, resi.NAME
from ic_resi_user resi
inner join ic_special s on (resi.ID = s.IC_RESI_USER)
where resi.CUSTOMER_ID = #{customerId}
and (resi.AGENCY_ID = #{agencyId} or resi.PIDS like CONCAT(#{queryPids},'%'))
<if test="search != null and search != ''">
and resi.NAME like CONCAT('%', #{search},'%')
</if>
and s.SPECIAL_RQLB like CONCAT('%', #{categoryKey},'%')
and resi.DEL_FLAG = '0'
and s.DEL_FLAG = '0'
</select>
</mapper>

4
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 )

23
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcCoverageCategoryDictDao.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dataaggre.dao.govorg.IcCoverageCategoryDictDao">
<resultMap type="com.epmet.dataaggre.entity.govorg.IcCoverageCategoryDictEntity" id="icCoverageCategoryDictMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="categoryKey" column="CATEGORY_KEY"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="placeType" column="PLACE_TYPE"/>
<result property="coverageType" column="COVERAGE_TYPE"/>
<result property="sort" column="SORT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>
Loading…
Cancel
Save