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 6694c56ebd..bba66d0a4e 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 @@ -255,7 +255,6 @@ public class HouseController implements ResultDataResolver { * @Author sun * @Description 【人房】房屋总数饼图 **/ - @NoRepeatSubmit @PostMapping("housechart") public Result houseChart(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -267,7 +266,6 @@ public class HouseController implements ResultDataResolver { * @Author sun * @Description 【人房】下级人房概览列表 **/ - @NoRepeatSubmit @PostMapping("subuserhouselist") public Result> subUserHouseList(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java index d2adb6c87f..95c9ae5d9b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.form.IcNeighborHoodListFormDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.entity.IcHouseEntity; @@ -59,4 +60,5 @@ public interface IcNeighborHoodDao extends BaseDao { */ List selectNeighborhoodNameByNames(@Param("names")List names,@Param("customerId") String customerId); + List selectNeighborList(@Param("gridId")String gridId); } 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 6072a5f15c..747c1b7ba3 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 @@ -20,14 +20,8 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; import com.epmet.constants.ImportTaskConstants; -import com.epmet.dao.IcBuildingDao; -import com.epmet.dao.IcBuildingUnitDao; -import com.epmet.dao.IcHouseDao; -import com.epmet.dao.IcNeighborHoodDao; -import com.epmet.dto.CustomerAgencyDTO; -import com.epmet.dto.IcBuildingDTO; -import com.epmet.dto.IcBuildingUnitDTO; -import com.epmet.dto.IcHouseDTO; +import com.epmet.dao.*; +import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.enums.HousePurposeEnums; @@ -56,6 +50,7 @@ import java.text.NumberFormat; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @Slf4j @@ -90,9 +85,12 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @Autowired private ExecutorService executorService; - @Autowired private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Autowired + private CustomerAgencyDao customerAgencyDao; + @Autowired + private CustomerGridDao customerGridDao; @Override @@ -374,7 +372,7 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { houseTotal.addAndGet(l.getNum()); if (l.getRentFlag() == 0) { resultDTO.setZzHouseTotal(l.getNum()); - } else if (l.getRentFlag() == 0) { + } else if (l.getRentFlag() == 1) { resultDTO.setCzHouseTotal(l.getNum()); } else { resultDTO.setXzHouseTotal(l.getNum()); @@ -395,7 +393,109 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { **/ @Override public List subUserHouseList(HouseChartFormDTO formDTO) { - return null; + List resultList = new ArrayList<>(); + //1.判断入参没值的赋值当前工作人员缓存所属组织信息 + if (StringUtils.isEmpty(formDTO.getOrgId())) { + //获取工作人员缓存信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType("agency"); + } + if ("village".equals(formDTO.getOrgType())) { + return new ArrayList<>(); + } + //2.根据入参值查询直属下级列表(组织、网格、小区列表) + List idList = new ArrayList<>(); + Map map = new HashMap<>(); + String orgType = ""; + if ("agency".equals(formDTO.getOrgType())) { + //获取组织缓存,判断组织级别 + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + if (null == agencyInfo) { + throw new RenException(String.format("查询组织信息失败%s", formDTO.getOrgId())); + } + //直属下级网格列表 + if ("community".equals(agencyInfo.getLevel())) { + orgType = "grid"; + List list = customerGridDao.selectGridList(formDTO.getOrgId()); + idList = list.stream().map(GridListResultDTO::getGridId).collect(Collectors.toList()); + map = list.stream().collect(Collectors.toMap(GridListResultDTO::getGridId, GridListResultDTO::getGridName, (k1, k2) -> k1)); + } else { + //直属下级组织列表 + orgType = "agency"; + List list = customerAgencyDao.selectAgencyList(formDTO.getOrgId()); + idList = list.stream().map(AgencyListResultDTO::getAgencyId).collect(Collectors.toList()); + map = list.stream().collect(Collectors.toMap(AgencyListResultDTO::getAgencyId, AgencyListResultDTO::getAgencyName, (k1, k2) -> k1)); + } + } else if ("grid".equals(formDTO.getOrgType())) { + //网格直属小区列表 + orgType = "village"; + List list = icNeighborHoodDao.selectNeighborList(formDTO.getOrgId()); + idList = list.stream().map(IcNeighborHoodDTO::getId).collect(Collectors.toList()); + map = list.stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName, (k1, k2) -> k1)); + } + + //3.分别查询直属下级列表的房屋、居民统计数据 + resultList = houseUserChartList(idList, map, orgType); + + return resultList; + } + + /** + * @Author sun + * @Description 【人房】房屋、居民统计列表数据 + **/ + private List houseUserChartList(List idList, Map map, String orgType) { + List list = new ArrayList<>(); + //1.直属下级列表的房屋数据 + List houseList = new ArrayList<>(); + HouseChartFormDTO houseDTO = new HouseChartFormDTO(); + houseDTO.setOrgType(orgType); + for (String id : idList) { + houseDTO.setOrgId(id); + houseList.add(houseChart(houseDTO)); + } + //2.直属下级列表的居民数据 + UserChartFormDTO userDTO = new UserChartFormDTO(); + userDTO.setOrgType(orgType); + userDTO.setIdList(idList); + Result> userResult = epmetUserOpenFeignClient.userChartList(userDTO); + if (!userResult.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取居民人房统计数据失败" + userResult.getInternalMsg(), userResult.getMsg()); + } + //3.汇总封装数据 + SubUserHouseListResultDTO dto = null; + for (String id : idList) { + dto = new SubUserHouseListResultDTO(); + dto.setOrgId(id); + dto.setOrgName(map.get(id)); + dto.setOrgType(orgType); + for (HouseChartResultDTO h : houseList) { + if (h.getOrgId().equals(id)) { + dto.setHouseTotal(h.getHouseTotal()); + dto.setZzHouseTotal(h.getZzHouseTotal()); + dto.setZzHouseRatio(h.getZzHouseRatio()); + dto.setCzHouseTotal(h.getCzHouseTotal()); + dto.setCzHouseRatio(h.getCzHouseRatio()); + dto.setXzHouseTotal(h.getXzHouseTotal()); + dto.setXzHouseRatio(h.getXzHouseRatio()); + } + } + for (UserChartResultDTO u : userResult.getData()) { + if (u.getOrgId().equals(id)) { + dto.setUserTotal(u.getUserTotal()); + dto.setCzUserTotal(u.getCzUserTotal()); + dto.setCzUserRatio(u.getCzUserRatio()); + dto.setLdUserTotal(u.getLdUserTotal()); + dto.setLdUserRatio(u.getLdUserRatio()); + } + } + list.add(dto); + } + return list; } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml index 911fae23fd..7efa9105e5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml @@ -222,4 +222,22 @@ ) + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java index 36ae55e8f7..14675f3046 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java @@ -3,6 +3,7 @@ package com.epmet.dto.form; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @author sun @@ -22,6 +23,9 @@ public class UserChartFormDTO implements Serializable { */ private String orgType; + //id集合 + private List idList; + //token这信息 private String customerId; private String userId; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java index aeda2e9605..de27fb4e2f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java @@ -22,23 +22,23 @@ public class UserChartResultDTO implements Serializable { /** * 居民总数 */ - private Integer userTotal; + private Integer userTotal = 0; /** * 常住人口总数 */ - private Integer czUserTotal; + private Integer czUserTotal = 0; /** * 常住人口占比(保留两位小数,带百分号的) */ - private String czUserRatio; + private String czUserRatio = "0%"; /** * 流动人口总数 */ - private Integer ldUserTotal; + private Integer ldUserTotal = 0; /** * 流动人口占比(保留两位小数,带百分号的) */ - private String ldUserRatio; + private String ldUserRatio = "0%"; @JsonIgnore private Integer num; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 415f818abe..787feb2cf1 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -1,7 +1,6 @@ package com.epmet.feign; -import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.security.dto.TokenDto; @@ -25,8 +24,8 @@ import java.util.Set; * @author yinzuomei@elink-cn.com * @date 2020/6/4 13:09 */ -// @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") -@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class) + @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") +//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class) public interface EpmetUserOpenFeignClient { /** @@ -721,4 +720,6 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/icresiuser/getexistuserbyhouseids") Result> getExistUserByHouseIds(@RequestBody List ids); + @PostMapping("/epmetuser/icresiuser/userchartlist") + Result> userChartList(@RequestBody UserChartFormDTO userDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 0f9f38ea5c..7fc46de0d5 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -532,4 +532,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> getExistUserByHouseIds(List ids) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getExistUserByHouseIds", ids); } + + @Override + public Result> userChartList(UserChartFormDTO userDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "userChartList", userDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 3daa255a05..490767dff7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -894,7 +894,6 @@ public class IcResiUserController implements ResultDataResolver { * @Author sun * @Description 【人房】居民总数饼图 **/ - @NoRepeatSubmit @PostMapping("userchart") public Result userChart(@LoginUser TokenDto tokenDto, @RequestBody UserChartFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -902,4 +901,13 @@ public class IcResiUserController implements ResultDataResolver { return new Result().ok(icResiUserService.userChart(formDTO)); } + /** + * @Author sun + * @Description 【人房】居民总数列表数据 + **/ + @PostMapping("userchartlist") + public Result> userChartList(@RequestBody UserChartFormDTO formDTO) { + return new Result>().ok(icResiUserService.userChartList(formDTO)); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index 7f438c4401..11c9397558 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -250,4 +250,10 @@ public interface IcResiUserService extends BaseService { * @Description 【人房】居民总数饼图 **/ UserChartResultDTO userChart(UserChartFormDTO formDTO); + + /** + * @Author sun + * @Description 【人房】居民总数列表数据 + **/ + List userChartList(UserChartFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 65b5d29498..28f3b96d60 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -1637,4 +1637,20 @@ public class IcResiUserServiceImpl extends BaseServiceImpl userChartList(UserChartFormDTO formDTO) { + List userList = new ArrayList<>(); + UserChartFormDTO userDTO = new UserChartFormDTO(); + userDTO.setOrgType(formDTO.getOrgType()); + for (String id : formDTO.getIdList()) { + userDTO.setOrgId(id); + userList.add(userChart(userDTO)); + } + return userList; + } + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 88cf85dc61..d4e385abc1 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -73,6 +73,17 @@ and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + + + and (${subCondition.tableName}.${subCondition.columnName} is null + or ${subCondition.tableName}.${subCondition.columnName} ='') + +