From 55f7dda712470805a1af1db2f8312f5a3092ac87 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 10 Oct 2022 10:39:34 +0800 Subject: [PATCH] =?UTF-8?q?-=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E5=8C=96-=E4=BA=BA=E6=88=BF=E4=BF=A1=E6=81=AF=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=BE=83=E4=B8=8A=E6=9C=88?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E6=AE=B5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constant/DataSourceConstant.java | 1 + .../stats/UserHouseStatsQueryFormDTO.java | 23 ++++ .../feign/DataReportOpenFeignClient.java | 12 ++ .../DataReportOpenFeignClientFallBack.java | 7 ++ .../epmet/stats/UserHouseStatsResultDTO.java | 18 +++ .../controller/stats/UserHouseController.java | 37 ++++++ .../stats/FactAgencyUserHouseDailyDao.java | 17 +++ .../dao/stats/FactGridUserHouseDailyDao.java | 17 +++ .../stats/FactAgencyUserHouseDailyEntity.java | 115 ++++++++++++++++++ .../stats/FactGridUserHouseDailyEntity.java | 106 ++++++++++++++++ .../service/stats/UserHouseStatsService.java | 19 +++ .../stats/impl/UserHouseStatsServiceImpl.java | 87 +++++++++++++ .../stats/FactAgencyUserHouseDailyDao.xml | 33 +++++ .../stats/FactGridUserHouseDailyDao.xml | 32 +++++ .../epmet/dto/result/HouseChartResultDTO.java | 20 +++ .../epmet/service/impl/HouseServiceImpl.java | 23 +++- 16 files changed, 563 insertions(+), 4 deletions(-) create mode 100644 epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java create mode 100644 epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java create mode 100644 epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java create mode 100644 epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml create mode 100644 epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java index d1e438d81a..d73da4247f 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java @@ -7,5 +7,6 @@ public interface DataSourceConstant { */ String EVALUATION_INDEX = "evaluationIndex"; String STATS_DISPLAY = "statsDisplay"; + String STATS = "stats"; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java new file mode 100644 index 0000000000..ca6ea589fb --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.form.stats; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +/** + * 人房信息查询dto + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserHouseStatsQueryFormDTO { + + private String orgId; + private String orgType; + + @NotBlank(message = "dateId不能为空") + private String dateId; + +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java index 862013f1a6..97771d20f0 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java @@ -2,11 +2,15 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO; import com.epmet.dto.result.plugins.AgencyNodeDTO; import com.epmet.feign.impl.DataReportOpenFeignClientFallBackFactory; +import com.epmet.stats.UserHouseStatsResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * 本服务对外开放的API,其他服务通过引用此client调用该服务 @@ -24,4 +28,12 @@ public interface DataReportOpenFeignClient { **/ @GetMapping("/data/report/screen/agency/querystaffagencytree/{agencyId}") Result queryStaffAgencyTree(@PathVariable("agencyId") String agencyId); + + /** + * 通过dateId查询人房统计信息 + * @param input 3个参数,就不用dto了,类太多: + * @return + */ + @PostMapping("/data/report/userHouse/getUserHouseDailyStatsByDateId") + Result getUserHouseDailyStatsByDateId(@RequestBody UserHouseStatsQueryFormDTO input); } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java index 247fe4499b..efc784a8b3 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java @@ -3,8 +3,10 @@ package com.epmet.feign.impl; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO; import com.epmet.dto.result.plugins.AgencyNodeDTO; import com.epmet.feign.DataReportOpenFeignClient; +import com.epmet.stats.UserHouseStatsResultDTO; //@Component public class DataReportOpenFeignClientFallBack implements DataReportOpenFeignClient { @@ -17,4 +19,9 @@ public class DataReportOpenFeignClientFallBack implements DataReportOpenFeignCli public Result queryStaffAgencyTree(String agencyId) { return ModuleUtils.feignConError(ServiceConstant.DATA_REPORT_SERVER, "queryStaffAgencyTree",agencyId); } + + @Override + public Result getUserHouseDailyStatsByDateId(UserHouseStatsQueryFormDTO input) { + return ModuleUtils.feignConError(ServiceConstant.DATA_REPORT_SERVER, "getUserHouseDailyStatsByDateId",input); + } } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java new file mode 100644 index 0000000000..654bfed4cf --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.stats; + +import lombok.Data; + +/** + * 人房信息统计 + */ +@Data +public class UserHouseStatsResultDTO { + private Integer houseTotal = 0; + private Integer zzHouseTotal = 0; + private Integer czHouseTotal = 0; + private Integer xzHouseTotal = 0; + private Integer userTotal = 0; + private Integer czUserTotal = 0; + private Integer ldUserTotal = 0; + private Integer usingCommunityNum = 0; +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java new file mode 100644 index 0000000000..9556299271 --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java @@ -0,0 +1,37 @@ +package com.epmet.datareport.controller.stats; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.datareport.service.stats.UserHouseStatsService; +import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO; +import com.epmet.stats.UserHouseStatsResultDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("userHouse") +public class UserHouseController { + + @Autowired + private UserHouseStatsService userHouseStatsService; + + /** + * 通过dateId查询人房统计信息 + * @param input + * @return + */ + @PostMapping("getUserHouseDailyStatsByDateId") + public Result getUserHouseDailyStatsByDateId(@RequestBody UserHouseStatsQueryFormDTO input) { + ValidatorUtils.validateEntity(input); + String orgId = input.getOrgId(); + String orgType = input.getOrgType(); + String dateId = input.getDateId(); + + UserHouseStatsResultDTO r = userHouseStatsService.getUserHouseDailyStats(orgId, orgType, dateId); + return new Result().ok(r); + } + +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java new file mode 100644 index 0000000000..bb2c98b36c --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java @@ -0,0 +1,17 @@ +package com.epmet.datareport.dao.stats; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.datareport.entity.stats.FactAgencyUserHouseDailyEntity; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 人房信息统计数,按天统计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-27 + */ +@Mapper +public interface FactAgencyUserHouseDailyDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java new file mode 100644 index 0000000000..da22c4a27b --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java @@ -0,0 +1,17 @@ +package com.epmet.datareport.dao.stats; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.datareport.entity.stats.FactGridUserHouseDailyEntity; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 网格的人房信息统计数,按天统计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-27 + */ +@Mapper +public interface FactGridUserHouseDailyDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java new file mode 100644 index 0000000000..8bae60daeb --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java @@ -0,0 +1,115 @@ +package com.epmet.datareport.entity.stats; + +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-05-27 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("fact_agency_user_house_daily") +public class FactAgencyUserHouseDailyEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 数据更新至:yyyyMMdd; + */ + private String dateId; + + /** + * 组织id + */ + private String agencyId; + + /** + * agency_id所属的机关级别(社区级:community, +乡(镇、街道)级:street, +区县级: district, +市级: city +省级:province) + */ + private String level; + + /** + * 组织i所属的组织id + */ + private String pid; + + /** + * 组织i所有上级id + */ + private String pids; + + /** + * 小区总数 + */ + private Integer neighbourhoodsCount; + + /** + * 房屋总数 + */ + private Integer houseCount; + + /** + * 自住房屋总数 + */ + private Integer houseSelfCount; + + /** + * 出租房屋总数 + */ + private Integer houseLeaseCount; + + /** + * 闲置房屋总数 + */ + private Integer houseIdleCount; + + /** + * 居民总数 + */ + private Integer userCount; + + /** + * 常住居民总数 + */ + private Integer userResiCount; + + /** + * 流动居民总数 + */ + private Integer userFloatCount; + + /** + * 当日新增房屋数 + */ + private Integer houseIncr; + + /** + * 当日修改房屋数 + */ + private Integer houseModify; + + /** + * 当日新增居民数 + */ + private Integer userIncr; + + /** + * 当日修改居民数 + */ + private Integer userModify; + +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java new file mode 100644 index 0000000000..f2aded5df4 --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java @@ -0,0 +1,106 @@ +package com.epmet.datareport.entity.stats; + +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-05-27 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("fact_grid_user_house_daily") +public class FactGridUserHouseDailyEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 数据更新至:yyyyMMdd; + */ + private String dateId; + + /** + * 网格id + */ + private String gridId; + + /** + * 网格所属的组织id + */ + private String pid; + + /** + * 网格所有上级id + */ + private String pids; + + /** + * 小区总数 + */ + private Integer neighbourhoodsCount; + + /** + * 房屋总数 + */ + private Integer houseCount; + + /** + * 自住房屋总数 + */ + private Integer houseSelfCount; + + /** + * 出租房屋总数 + */ + private Integer houseLeaseCount; + + /** + * 闲置房屋总数 + */ + private Integer houseIdleCount; + + /** + * 居民总数 + */ + private Integer userCount; + + /** + * 常住居民总数 + */ + private Integer userResiCount; + + /** + * 流动居民总数 + */ + private Integer userFloatCount; + + /** + * 当日新增房屋数 + */ + private Integer houseIncr; + + /** + * 当日修改房屋数 + */ + private Integer houseModify; + + /** + * 当日新增居民数 + */ + private Integer userIncr; + + /** + * 当日修改居民数 + */ + private Integer userModify; + +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java new file mode 100644 index 0000000000..c898ed5ced --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java @@ -0,0 +1,19 @@ +package com.epmet.datareport.service.stats; + +import com.epmet.stats.UserHouseStatsResultDTO; +import lombok.extern.slf4j.Slf4j; + +/** + * 人房统计service + */ +public interface UserHouseStatsService { + + /** + * 查询指定dateId的人房统计信息 + * @param orgId + * @param orgType + * @param dateId + * @return + */ + UserHouseStatsResultDTO getUserHouseDailyStats(String orgId, String orgType, String dateId); +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java new file mode 100644 index 0000000000..e03c81ac8a --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java @@ -0,0 +1,87 @@ +package com.epmet.datareport.service.stats.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.constant.DataSourceConstant; +import com.epmet.datareport.dao.stats.FactAgencyUserHouseDailyDao; +import com.epmet.datareport.dao.stats.FactGridUserHouseDailyDao; +import com.epmet.datareport.entity.stats.FactAgencyUserHouseDailyEntity; +import com.epmet.datareport.entity.stats.FactGridUserHouseDailyEntity; +import com.epmet.datareport.service.stats.UserHouseStatsService; +import com.epmet.stats.UserHouseStatsResultDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +@DataSource(DataSourceConstant.STATS) +public class UserHouseStatsServiceImpl implements UserHouseStatsService { + + @Autowired + private FactGridUserHouseDailyDao factGridUserHouseDailyDao; + + @Autowired + private FactAgencyUserHouseDailyDao factAgencyUserHouseDailyDao; + + @Override + public UserHouseStatsResultDTO getUserHouseDailyStats(String orgId, String orgType, String dateId) { + // 没有传参,使用当前登录人的 + if (StringUtils.isEmpty(orgId) || StringUtils.isEmpty(orgType)) { + String userId = EpmetRequestHolder.getLoginUserId(); + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败:%s", userId)); + } + + orgId = staffInfo.getAgencyId(); + orgType = "agency"; + } + + // 结果对象初始化 + UserHouseStatsResultDTO result = new UserHouseStatsResultDTO(); + + if ("agency".equals(orgType)) { + // 查询的目标是组织 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(FactAgencyUserHouseDailyEntity::getDateId, dateId); + query.eq(FactAgencyUserHouseDailyEntity::getAgencyId, orgId); + FactAgencyUserHouseDailyEntity agencyDailyStats = factAgencyUserHouseDailyDao.selectOne(query); + if (agencyDailyStats != null) { + result.setHouseTotal(agencyDailyStats.getHouseCount()); + result.setCzHouseTotal(agencyDailyStats.getHouseLeaseCount()); + result.setXzHouseTotal(agencyDailyStats.getHouseIdleCount()); + result.setZzHouseTotal(agencyDailyStats.getHouseSelfCount()); + result.setUserTotal(agencyDailyStats.getUserCount()); + result.setCzUserTotal(agencyDailyStats.getUserResiCount()); + result.setLdUserTotal(agencyDailyStats.getUserFloatCount()); + } + } else { + // 查询的目标是网格 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(FactGridUserHouseDailyEntity::getDateId, dateId); + query.eq(FactGridUserHouseDailyEntity::getGridId, orgId); + FactGridUserHouseDailyEntity gridDailyStats = factGridUserHouseDailyDao.selectOne(query); + if (gridDailyStats != null) { + result.setHouseTotal(gridDailyStats.getHouseCount()); + result.setCzHouseTotal(gridDailyStats.getHouseLeaseCount()); + result.setXzHouseTotal(gridDailyStats.getHouseIdleCount()); + result.setZzHouseTotal(gridDailyStats.getHouseSelfCount()); + result.setUserTotal(gridDailyStats.getUserCount()); + result.setCzUserTotal(gridDailyStats.getUserResiCount()); + result.setLdUserTotal(gridDailyStats.getUserFloatCount()); + } + } + + return result; + } +} diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml new file mode 100644 index 0000000000..8168105c8b --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml new file mode 100644 index 0000000000..37ae699771 --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java index 61bee2a9cc..eb7ee86152 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java @@ -56,6 +56,26 @@ public class HouseChartResultDTO implements Serializable { */ private Double wscHouseRatio = 0.0; + /** + * 房屋总数-较上月 + */ + private Integer houseTotalJSY; + + /** + * 自住房屋树-较上月 + */ + private Integer zzHouseTotalJSY; + + /** + * 出租房屋总数-较上月 + */ + private Integer czHouseTotalJSY; + + /** + * 闲置房屋总数-较上月 + */ + private Integer xzHouseTotalJSY; + @JsonIgnore private Integer num; //1:出租 0:自住 2:闲置 3:未出售 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 de8806a781..d5daa597e8 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 @@ -8,6 +8,7 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.HouseQrcodeEnum; @@ -34,17 +35,16 @@ import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.*; +import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.enums.*; -import com.epmet.feign.EpmetAdminOpenFeignClient; -import com.epmet.feign.EpmetCommonServiceOpenFeignClient; -import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.OssFeignClient; +import com.epmet.feign.*; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; +import com.epmet.stats.UserHouseStatsResultDTO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.cache.Cache; @@ -68,6 +68,7 @@ import java.awt.image.BufferedImage; import java.io.*; import java.net.URLEncoder; import java.text.NumberFormat; +import java.time.LocalDate; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -132,6 +133,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { @Autowired private IcBuildingUnitDao icBuildingUnitDao; + @Autowired + private DataReportOpenFeignClient dataReportOpenFeignClient; + @Override @Transactional(rollbackFor = Exception.class) @@ -716,6 +720,17 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { resultDTO.setWscHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getWscHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getWscHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); resultDTO.setOrgId(formDTO.getOrgId()); resultDTO.setOrgType(formDTO.getOrgType()); + + // 加载上个月,该组织的人房统计信息,并且计算较上月信息 + Date lastDayOfLastMonth = DateUtils.getLastDayOfMonth(DateUtils.addDateMonths(new Date(), -1)); + UserHouseStatsQueryFormDTO form = new UserHouseStatsQueryFormDTO(formDTO.getOrgId(), formDTO.getOrgType(), DateUtils.format(lastDayOfLastMonth, "yyyyMMdd")); + UserHouseStatsResultDTO lastMonthUserHouseStats = getResultDataOrThrowsException(dataReportOpenFeignClient.getUserHouseDailyStatsByDateId(form), ServiceConstant.DATA_REPORT_SERVER, + EpmetErrorCode.SERVER_ERROR.getCode(), null, null); + + resultDTO.setHouseTotalJSY(resultDTO.getHouseTotal() - lastMonthUserHouseStats.getHouseTotal()); + resultDTO.setCzHouseTotalJSY(resultDTO.getCzHouseTotal() - lastMonthUserHouseStats.getCzHouseTotal()); + resultDTO.setXzHouseTotalJSY(resultDTO.getXzHouseTotal() - lastMonthUserHouseStats.getXzHouseTotal()); + resultDTO.setZzHouseTotalJSY(resultDTO.getZzHouseTotal() - lastMonthUserHouseStats.getZzHouseTotal()); return resultDTO; }