From 1d18a2482c8fc1e904edd1840498ee95fdc0255f Mon Sep 17 00:00:00 2001 From: zhangyuan Date: Fri, 27 May 2022 17:59:40 +0800 Subject: [PATCH] =?UTF-8?q?grid=E5=92=8Cagency=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/stats/form/FactUserHouseFormDTO.java | 30 +++++++ .../stats/result/FactUserHouseResultDTO.java | 5 ++ .../controller/FactUserHouseController.java | 15 ++-- .../java/com/epmet/dao/org/IcHouseDao.java | 12 ++- .../com/epmet/dao/user/IcResiUserDao.java | 5 +- .../com/epmet/service/org/HouseService.java | 14 ++-- .../service/org/impl/HouseServiceImpl.java | 76 ++++-------------- .../service/stats/FactUserHouseService.java | 3 + .../stats/impl/DimGridServiceImpl.java | 2 + .../stats/impl/FactUserHouseServiceImpl.java | 66 ++++++++++++++++ .../epmet/service/user/IcResiUserService.java | 12 ++- .../user/impl/IcResiUserServiceImpl.java | 54 ++----------- .../main/resources/mapper/org/IcHouseDao.xml | 79 ++++++++++++------- .../resources/mapper/user/IcResiUserDao.xml | 25 +++--- 14 files changed, 217 insertions(+), 181 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/FactUserHouseFormDTO.java diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/FactUserHouseFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/FactUserHouseFormDTO.java new file mode 100644 index 0000000000..9206fcccd1 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/FactUserHouseFormDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.stats.form; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 人房信息统计数,按天统计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-27 + */ +@Data +public class FactUserHouseFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 数据更新至:yyyyMMdd; + */ + private String dateId; + +} \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/FactUserHouseResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/FactUserHouseResultDTO.java index a8fc8cb467..67c5da0a6b 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/FactUserHouseResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/result/FactUserHouseResultDTO.java @@ -32,6 +32,11 @@ public class FactUserHouseResultDTO implements Serializable { */ private String dateId; + /** + * 网格id + */ + private String gridId; + /** * 组织id */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactUserHouseController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactUserHouseController.java index 423a372d5a..b1f2ee1f01 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactUserHouseController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactUserHouseController.java @@ -3,16 +3,15 @@ package com.epmet.controller; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.extract.form.ExtractOriginFormDTO; import com.epmet.dto.stats.FactAgencyUserHouseDailyDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; import com.epmet.dto.stats.result.FactUserHouseResultDTO; import com.epmet.excel.FactUserHouseExcel; import com.epmet.service.stats.FactAgencyUserHouseDailyService; import com.epmet.service.stats.FactUserHouseService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -33,7 +32,7 @@ public class FactUserHouseController { private FactUserHouseService factUserHouseService; @RequestMapping("page") - public Result> page(@RequestParam Map params){ + public Result> page(@RequestParam Map params) { PageData page = factUserHouseService.page(params); return new Result>().ok(page); } @@ -44,4 +43,10 @@ public class FactUserHouseController { ExcelUtils.exportExcelToTarget(response, null, list, FactUserHouseExcel.class); } + @PostMapping("stat") + public Result stat(@RequestBody FactUserHouseFormDTO formDTO) { + factUserHouseService.stat(formDTO); + return new Result(); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/IcHouseDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/IcHouseDao.java index 040f5ec9a4..b6af5aa3b2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/IcHouseDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/IcHouseDao.java @@ -1,10 +1,10 @@ package com.epmet.dao.org; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.result.HouseChartResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; import com.epmet.entity.org.IcHouseEntity; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,10 +17,8 @@ import java.util.List; @Mapper public interface IcHouseDao extends BaseDao { - /** - * @Author sun - * @Description 【人房】房屋总数饼图 - **/ - List houseChart(@Param("orgId") String orgId, @Param("orgType") String orgType); + List houseStat(FactUserHouseFormDTO formDTO); + + List neighborhoodStatStat(FactUserHouseFormDTO formDTO); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/IcResiUserDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/IcResiUserDao.java index 5625f9a3c5..56b1cb5fd1 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/IcResiUserDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/IcResiUserDao.java @@ -18,7 +18,8 @@ package com.epmet.dao.user; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.result.UserChartResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; import com.epmet.entity.user.IcResiUserEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -34,6 +35,6 @@ import java.util.List; @Mapper public interface IcResiUserDao extends BaseDao { - List userChart(@Param("orgId") String orgId, @Param("orgType") String orgType); + List userStat(FactUserHouseFormDTO formDTO); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/HouseService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/HouseService.java index 1989a04cf8..fa7081cf7c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/HouseService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/HouseService.java @@ -17,8 +17,10 @@ package com.epmet.service.org; -import com.epmet.dto.form.HouseChartFormDTO; -import com.epmet.dto.result.HouseChartResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; + +import java.util.List; /** * 小区表 @@ -28,10 +30,8 @@ import com.epmet.dto.result.HouseChartResultDTO; */ public interface HouseService { - /** - * @Author sun - * @Description 【人房】房屋总数饼图 - **/ - HouseChartResultDTO houseChart(HouseChartFormDTO formDTO); + List houseStat(FactUserHouseFormDTO formDTO); + + List neighborhoodStat(FactUserHouseFormDTO formDTO); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/HouseServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/HouseServiceImpl.java index 030792e44a..efcb8612ca 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/HouseServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/HouseServiceImpl.java @@ -1,80 +1,32 @@ package com.epmet.service.org.impl; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; -import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.feign.ResultDataResolver; -import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.constant.DataSourceConstant; import com.epmet.dao.org.IcHouseDao; -import com.epmet.dto.form.HouseChartFormDTO; -import com.epmet.dto.result.HouseChartResultDTO; -import com.epmet.dto.result.HouseIcResiUserResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; +import com.epmet.entity.org.IcHouseEntity; import com.epmet.service.org.HouseService; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import java.text.NumberFormat; import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; @Slf4j +@DataSource(DataSourceConstant.GOV_ORG) @Service -public class HouseServiceImpl implements HouseService, ResultDataResolver { +public class HouseServiceImpl extends BaseServiceImpl implements HouseService, ResultDataResolver { - /** - * 导出房屋内家庭成员时本地缓存 - */ - private static final Cache> memberCacheMap = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.MINUTES).expireAfterWrite(30,TimeUnit.MINUTES).build(); - - @Resource - private IcHouseDao icHouseDao; + @Override + public List houseStat(FactUserHouseFormDTO formDTO) { + return baseDao.houseStat(formDTO); + } - /** - * @Author sun - * @Description 【人房】房屋总数饼图 - **/ @Override - public HouseChartResultDTO houseChart(HouseChartFormDTO formDTO) { - HouseChartResultDTO resultDTO = new HouseChartResultDTO(); - //计算百分比使用,保留小数点后两位 - NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.TWO); - //1.判断入参是否有值,没有值则赋值当前工作人员缓存中所属组织信息 - if (StringUtils.isEmpty(formDTO.getOrgId())) { - //2.获取工作人员缓存信息 - 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"); - } - //2.根据入参值查询对应的房屋统计数据 - List list = icHouseDao.houseChart(formDTO.getOrgId(), formDTO.getOrgType()); - //3.汇总数据 - AtomicInteger houseTotal = new AtomicInteger(); - list.forEach(l -> { - houseTotal.addAndGet(l.getNum()); - if (l.getRentFlag() == 0) { - resultDTO.setZzHouseTotal(l.getNum()); - } else if (l.getRentFlag() == 1) { - resultDTO.setCzHouseTotal(l.getNum()); - } else { - resultDTO.setXzHouseTotal(l.getNum()); - } - }); - resultDTO.setHouseTotal(houseTotal.get()); - resultDTO.setZzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getZzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getZzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); - resultDTO.setCzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getCzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getCzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); - resultDTO.setXzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getXzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getXzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); - resultDTO.setOrgId(formDTO.getOrgId()); - resultDTO.setOrgType(formDTO.getOrgType()); - return resultDTO; + public List neighborhoodStat(FactUserHouseFormDTO formDTO) { + return baseDao.neighborhoodStatStat(formDTO); } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactUserHouseService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactUserHouseService.java index e792d7be1f..6d88596a7c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactUserHouseService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactUserHouseService.java @@ -2,6 +2,7 @@ package com.epmet.service.stats; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.stats.FactAgencyUserHouseDailyDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; import com.epmet.dto.stats.result.FactUserHouseResultDTO; import java.util.List; @@ -34,4 +35,6 @@ public interface FactUserHouseService { * @date 2022-05-27 */ List list(Map params); + + void stat(FactUserHouseFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java index 9ff2671fbb..044f6e63d1 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimGridServiceImpl.java @@ -81,9 +81,11 @@ public class DimGridServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); + String customerId = (String)params.get("customerId"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + wrapper.eq(StringUtils.isNotBlank(customerId), "CUSTOMER_ID", customerId); return wrapper; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java index 282d5f3695..122b6c8d91 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactUserHouseServiceImpl.java @@ -1,18 +1,26 @@ package com.epmet.service.stats.impl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.OrgLevelEnum; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; import com.epmet.dto.stats.result.FactUserHouseResultDTO; +import com.epmet.entity.stats.FactGridUserHouseDailyEntity; +import com.epmet.service.org.HouseService; +import com.epmet.service.stats.DimGridService; import com.epmet.service.stats.FactAgencyUserHouseDailyService; import com.epmet.service.stats.FactGridUserHouseDailyService; import com.epmet.service.stats.FactUserHouseService; +import com.epmet.service.user.IcResiUserService; 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.Optional; /** * 人房信息统计数,按天统计 @@ -29,6 +37,15 @@ public class FactUserHouseServiceImpl implements FactUserHouseService { @Autowired private FactGridUserHouseDailyService factGridUserHouseDailyService; + @Autowired + private HouseService houseService; + + @Autowired + private IcResiUserService icResiUserService; + + @Autowired + private DimGridService dimGridService; + @Override public PageData page(Map params) { PageData page = null; @@ -55,4 +72,53 @@ public class FactUserHouseServiceImpl implements FactUserHouseService { return list; } + @Override + public void stat(FactUserHouseFormDTO formDTO) { + String dateId = DateUtils.getBeforeNDay(NumConstant.ONE); + String customerId = formDTO.getCustomerId(); + + List neiList = houseService.neighborhoodStat(formDTO); + List houseList = houseService.houseStat(formDTO); + List userList = icResiUserService.userStat(formDTO); + + List addList = new ArrayList<>(); + + neiList.forEach(item -> { + String agencyId = item.getAgencyId(); + FactUserHouseResultDTO dto = new FactUserHouseResultDTO(); + dto.setCustomerId(formDTO.getCustomerId()); + dto.setDateId(dateId); + dto.setPid(item.getPid()); + dto.setPids(item.getPids()); + dto.setNeighbourhoodsCount(item.getNeighbourhoodsCount()); + + Optional houseOptional = houseList.stream().filter(house -> agencyId.equals(house.getAgencyId()) && customerId.equals(house.getCustomerId())).findFirst(); + if (houseOptional.isPresent()) { + dto.setHouseCount(houseOptional.get().getHouseCount()); + dto.setHouseSelfCount(houseOptional.get().getHouseSelfCount()); + dto.setHouseLeaseCount(houseOptional.get().getHouseLeaseCount()); + dto.setHouseIdleCount(houseOptional.get().getHouseIdleCount()); + } else { + dto.setHouseCount(NumConstant.ZERO); + dto.setHouseSelfCount(NumConstant.ZERO); + dto.setHouseLeaseCount(NumConstant.ZERO); + dto.setHouseIdleCount(NumConstant.ZERO); + } + + Optional userOptional = userList.stream().filter(user -> agencyId.equals(user.getAgencyId()) && customerId.equals(user.getCustomerId())).findFirst(); + if (userOptional.isPresent()) { + dto.setUserCount(userOptional.get().getUserCount()); + dto.setUserResiCount(userOptional.get().getUserResiCount()); + dto.setUserFloatCount(userOptional.get().getUserFloatCount()); + } else { + dto.setUserCount(NumConstant.ZERO); + dto.setUserResiCount(NumConstant.ZERO); + dto.setUserFloatCount(NumConstant.ZERO); + } + addList.add(dto); + }); + + List entityList = ConvertUtils.sourceToTarget(addList, FactGridUserHouseDailyEntity.class); + factGridUserHouseDailyService.insertBatch(entityList); + } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/IcResiUserService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/IcResiUserService.java index ea6a7e6261..12bc106b65 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/IcResiUserService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/IcResiUserService.java @@ -18,10 +18,12 @@ package com.epmet.service.user; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.dto.form.UserChartFormDTO; -import com.epmet.dto.result.UserChartResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; import com.epmet.entity.user.IcResiUserEntity; +import java.util.List; + /** * 用户基础信息 * @@ -30,10 +32,6 @@ import com.epmet.entity.user.IcResiUserEntity; */ public interface IcResiUserService extends BaseService { - /** - * @Author sun - * @Description 【人房】居民总数饼图 - **/ - UserChartResultDTO userChart(UserChartFormDTO formDTO); + List userStat(FactUserHouseFormDTO formDTO); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/IcResiUserServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/IcResiUserServiceImpl.java index ea583e56a0..b48086d053 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/IcResiUserServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/IcResiUserServiceImpl.java @@ -17,24 +17,19 @@ package com.epmet.service.user.impl; +import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; -import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.feign.ResultDataResolver; -import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.constant.DataSourceConstant; import com.epmet.dao.user.IcResiUserDao; -import com.epmet.dto.form.UserChartFormDTO; -import com.epmet.dto.result.UserChartResultDTO; +import com.epmet.dto.stats.form.FactUserHouseFormDTO; +import com.epmet.dto.stats.result.FactUserHouseResultDTO; import com.epmet.entity.user.IcResiUserEntity; import com.epmet.service.user.IcResiUserService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import java.text.NumberFormat; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; /** * 用户基础信息 @@ -43,48 +38,13 @@ import java.util.concurrent.atomic.AtomicInteger; * @since v1.0.0 2021-10-26 */ @Slf4j +@DataSource(DataSourceConstant.EPMET_USER) @Service public class IcResiUserServiceImpl extends BaseServiceImpl implements IcResiUserService, ResultDataResolver { - /** - * @Author sun - * @Description 【人房】居民总数饼图 - **/ @Override - public UserChartResultDTO userChart(UserChartFormDTO formDTO) { - UserChartResultDTO resultDTO = new UserChartResultDTO(); - //计算百分比使用,保留小数点后两位 - NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(NumConstant.TWO); - //1.判断入参是否有值,没有值则赋值当前工作人员缓存中所属组织信息 - if (StringUtils.isEmpty(formDTO.getOrgId())) { - //2.获取工作人员缓存信息 - 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"); - } - //2.根据入参值查询对应的房屋统计数据 - List list = baseDao.userChart(formDTO.getOrgId(), formDTO.getOrgType()); - //3.汇总数据 - AtomicInteger userTotal = new AtomicInteger(); - list.forEach(l -> { - userTotal.addAndGet(l.getNum()); - if ("0".equals(l.getIsFloating())) { - resultDTO.setCzUserTotal(l.getNum()); - } else { - resultDTO.setLdUserTotal(l.getNum()); - } - }); - resultDTO.setUserTotal(userTotal.get()); - resultDTO.setCzUserRatio(Double.valueOf((resultDTO.getUserTotal() == 0 || resultDTO.getCzUserTotal() > resultDTO.getUserTotal()) ? "0" : numberFormat.format(((float) resultDTO.getCzUserTotal() / (float) resultDTO.getUserTotal()) * 100))); - resultDTO.setLdUserRatio(Double.valueOf((resultDTO.getUserTotal() == 0 || resultDTO.getLdUserTotal() > resultDTO.getUserTotal()) ? "0" : numberFormat.format(((float) resultDTO.getLdUserTotal() / (float) resultDTO.getUserTotal()) * 100))); - resultDTO.setOrgId(formDTO.getOrgId()); - resultDTO.setOrgType(formDTO.getOrgType()); - - return resultDTO; + public List userStat(FactUserHouseFormDTO formDTO) { + return baseDao.userStat(formDTO); } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/IcHouseDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/IcHouseDao.xml index 2be94d9f5d..41f39be8ec 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/IcHouseDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/IcHouseDao.xml @@ -3,37 +3,58 @@ - SELECT - COUNT(id) num, - rent_flag rentFlag + g.CUSTOMER_ID, + g.id AS GRID_ID, + g.PID, + g.PIDS, + sum( CASE WHEN t.RENT_FLAG = '0' THEN 1 ELSE 0 END ) AS houseSelfCount, + sum( CASE WHEN t.RENT_FLAG = '1' THEN 1 ELSE 0 END ) AS houseLeaseCount, + sum( CASE WHEN t.RENT_FLAG = '2' THEN 1 ELSE 0 END ) AS houseIdleCount, + sum( CASE WHEN t.id IS NOT NULL THEN 1 ELSE 0 END ) AS houseCount FROM - ic_house - WHERE del_flag = '0' - - - AND neighbor_hood_id IN ( - select id from ic_neighbor_hood - where del_flag = '0' - and (agency_id = #{orgId} OR agency_pids LIKE CONCAT('%', #{orgId}, '%')) - ) - - - AND neighbor_hood_id IN ( - select id from ic_neighbor_hood - where del_flag = '0' - and grid_id = #{orgId} - ) - - - AND neighbor_hood_id IN ( - select id from ic_neighbor_hood - where del_flag = '0' - and id = #{orgId} - ) - - - GROUP BY rent_flag + customer_grid g + LEFT JOIN ( + SELECT + h.id, + h.RENT_FLAG, + n.GRID_ID + FROM + ic_house h + LEFT JOIN ic_neighbor_hood n ON h.NEIGHBOR_HOOD_ID = n.id + WHERE + h.CREATED_TIME < DATE_SUB( CURDATE(), INTERVAL 1 DAY ) + ) t ON t.GRID_ID = g.ID + + + AND g.CUSTOMER_ID = #{customerId} + + + GROUP BY + g.CUSTOMER_ID, + g.id + + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/IcResiUserDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/IcResiUserDao.xml index e32ef99c58..54d5f37b7e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/IcResiUserDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/IcResiUserDao.xml @@ -3,26 +3,21 @@ - SELECT - COUNT(id) num, - is_floating isFloating + CUSTOMER_ID, + GRID_ID, + sum( CASE WHEN IS_FLOATING = '0' THEN 1 ELSE 0 END ) AS userResiCount, + sum( CASE WHEN IS_FLOATING = '1' THEN 1 ELSE 0 END ) AS userFloatCount, + sum( CASE WHEN id IS NOT NULL THEN 1 ELSE 0 END ) AS userCount FROM ic_resi_user WHERE del_flag = '0' - - - AND (agency_id = #{orgId} OR pids LIKE CONCAT('%', #{orgId}, '%')) - - - AND grid_id = #{orgId} - - - AND village_id = #{orgId} - - - GROUP BY is_floating + AND CREATED_TIME < DATE_SUB( CURDATE(), INTERVAL 1 DAY ) + GROUP BY + CUSTOMER_ID, + AGENCY_ID