diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/FactIcuserCategoryAnalysisDailyDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/FactIcuserCategoryAnalysisDailyDTO.java new file mode 100644 index 0000000000..f88dfcd4db --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/FactIcuserCategoryAnalysisDailyDTO.java @@ -0,0 +1,110 @@ +package com.epmet.dataaggre.dto.epmetuser; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 人员类别分析 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-01-17 + */ +@Data +public class FactIcuserCategoryAnalysisDailyDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键(人员类别分析表) + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 预警配置ID + */ + private String configId; + + /** + * 类别列名,对个数据太麻烦了,在这个表存一下 + */ + private String columnName; + + /** + * 当前数据是截止到XXX的:yyyyMMdd + */ + private String dateId; + + /** + * 网格id或者组织id + */ + private String orgId; + + /** + * grid或者agency + */ + private String orgType; + + /** + * orgid的上级 + */ + private String pid; + + /** + * orgid的所有上级 + */ + private String pids; + + /** + * 当前类别总人数 + */ + private Integer total; + + /** + * 较上月迁出 + */ + private Integer qcIncr; + + /** + * 较上月迁入 + */ + private Integer qrIncr; + + /** + * 删除标识 0.未删除 1.已删除 + */ + private Integer delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/IcUserCategoryFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/IcUserCategoryFormDTO.java new file mode 100644 index 0000000000..a979ee68a6 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/IcUserCategoryFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.epmetuser.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 人员类别分析 入参 + */ +@Data +public class IcUserCategoryFormDTO implements Serializable { + private static final long serialVersionUID = 2834180692632036316L; + + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + @NotBlank(message = "请选择查看某个组织或网格", groups = AddUserShowGroup.class) + private String orgId; + + @NotBlank(message = "orgType不能为空", groups = AddUserInternalGroup.class) + private String orgType; + + @NotBlank(message = "dateId不能为空", groups = AddUserInternalGroup.class) + @Length(min = 8, max = 8, message = "dateId格式:yyyyMMdd", groups = AddUserInternalGroup.class) + private String dateId; + + + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcUserCategoryResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcUserCategoryResultDTO.java new file mode 100644 index 0000000000..08d4d30b7b --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcUserCategoryResultDTO.java @@ -0,0 +1,50 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; + +/** + * 人员类别分析-返参DTO + */ +@Data +public class IcUserCategoryResultDTO implements Serializable { + private static final long serialVersionUID = -2150403803220667018L; + + /** + * 居民类别配置主键 + */ + // @JsonIgnore + private String configId; + /** + * 当前类别对应的列名 + */ + private String categoryKey; + /** + * 类别名称 + */ + private String categoryName; + /** + * 类别图标 + */ + private String dataIcon; + + + + /** + * 当前类别下总人数 + */ + private Integer total=0; + + /** + * 桥上月迁入 + */ + private Integer immigration=0; + + /** + * 较上月迁出 + */ + private Integer emigration=0; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/IcUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/IcUserController.java new file mode 100644 index 0000000000..15c0473ba0 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/IcUserController.java @@ -0,0 +1,42 @@ +package com.epmet.dataaggre.controller; + + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dataaggre.dto.epmetuser.form.IcUserCategoryFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.IcUserCategoryResultDTO; +import com.epmet.dataaggre.service.epmetuser.EpmetUserService; +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; + +import java.util.List; + +@RestController +@RequestMapping("icuser") +public class IcUserController { + + @Autowired + private EpmetUserService epmetUserService; + + + /** + * 【人员类别分析】-各类别人数 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("category-data") + public Result> queryIcUserCategoryData(@LoginUser TokenDto tokenDto, @RequestBody IcUserCategoryFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, IcUserCategoryFormDTO.AddUserShowGroup.class, IcUserCategoryFormDTO.AddUserInternalGroup.class); + return new Result>().ok(epmetUserService.queryIcUserCategoryData(formDTO)); + } + + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index 237432f5c2..309d5432d9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -22,10 +22,10 @@ import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; +import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; -import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; @@ -349,4 +349,12 @@ public interface DataStatsDao { * @author sun */ List getProjectMonthIncr(ProjectTotalFormDTO formDTO); + + List queryGridIcUserCategoryData(@Param("orgId") String orgId, + @Param("dateId") String dateId, + @Param("configIds") List configIds); + + List queryAgencyIcUserCategoryData(@Param("gridPids") String gridPids, + @Param("dateId") String dateId, + @Param("configIds") List configIds); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java index 4d5ab737b5..674d6de835 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/opercustomize/CustomerFootBarDao.java @@ -20,6 +20,7 @@ package com.epmet.dataaggre.dao.opercustomize; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO; import com.epmet.dataaggre.dto.epmetuser.IcFormResColumnDTO; +import com.epmet.dataaggre.dto.epmetuser.result.IcUserCategoryResultDTO; import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -59,4 +60,5 @@ public interface CustomerFootBarDao extends BaseDao { */ CustomerFootBarEntity selectDefaultIcon(@Param("customerId") String customerId, @Param("appType")String appType, @Param("barKey")String barKey); + List queryCustomerIcResiCategoryStatsConfig(String customerId); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 3d21ac929d..23a33137ab 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -3,6 +3,7 @@ package com.epmet.dataaggre.service.datastats; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.result.*; +import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; @@ -279,4 +280,8 @@ public interface DataStatsService { String startDateID, String endDateID, Boolean needCount); + + List queryGridIcUserCategoryData(String orgId, String dateId, List configIds); + + List queryAgencyIcUserCategoryData(String gridPids, String dateId, List configIds); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index a8fb5ee168..79465829b7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -16,7 +16,8 @@ import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.result.*; -import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; + import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; + import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO; @@ -2170,4 +2171,20 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve PageHelper.startPage(pageNo, pageSize, needCount); return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID); } + + @Override + public List queryGridIcUserCategoryData(String orgId, String dateId, List configIds) { + if(CollectionUtils.isEmpty(configIds)||StringUtils.isBlank(orgId)){ + return new ArrayList<>(); + } + return dataStatsDao.queryGridIcUserCategoryData(orgId,dateId,configIds); + } + + @Override + public List queryAgencyIcUserCategoryData(String gridPids, String dateId, List configIds) { + if(CollectionUtils.isEmpty(configIds)||StringUtils.isBlank(gridPids)){ + return new ArrayList<>(); + } + return dataStatsDao.queryAgencyIcUserCategoryData(gridPids,dateId,configIds); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index a1509063c1..ed93a19d5a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java @@ -175,4 +175,11 @@ public interface EpmetUserService { * @return */ List listStaffsByIds(List userIdsPart); + + /** + * 【人员类别分析】-各类别人数 + * @param formDTO + * @return + */ + List queryIcUserCategoryData(IcUserCategoryFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 7f9809a052..19bebf11f1 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -11,9 +11,11 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.BadgeConstant; +import com.epmet.constant.OrgInfoConstant; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.epmetuser.*; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; +import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO; import com.epmet.dataaggre.dto.epmetuser.form.*; @@ -30,18 +32,21 @@ import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dataaggre.entity.epmetuser.GovStaffRoleEntity; import com.epmet.dataaggre.entity.epmetuser.ResiUserBadgeEntity; -import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.entity.epmetuser.StaffRoleEntity; +import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; +import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService; import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.govproject.GovProjectService; +import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.result.StaffRoleResultDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -84,6 +89,8 @@ public class EpmetUserServiceImpl implements EpmetUserService { private GovStaffRoleDao govStaffRoleDao; @Resource private IcResiUserDao icResiUserDao; + @Resource + private CustomerFootBarService customerFootBarService; /** * @Description 根据UserIds查询 @@ -742,4 +749,58 @@ public class EpmetUserServiceImpl implements EpmetUserService { return customerStaffDao.selectList(query); } + + /** + * 【人员类别分析】-各类别人数 + * + * @param formDTO + * @return + */ + @Override + public List queryIcUserCategoryData(IcUserCategoryFormDTO formDTO) { + // 1、 先查询出居民类别配置(状态为显示) + List resList=customerFootBarService.queryCustomerIcResiCategoryStatsConfig(formDTO.getCustomerId()); + if(CollectionUtils.isNotEmpty(resList)){ + List configIds=resList.stream().map(IcUserCategoryResultDTO::getConfigId).collect(Collectors.toList()); + if(OrgInfoConstant.GRID.equals(formDTO.getOrgType())){ + List list=dataStatsService.queryGridIcUserCategoryData(formDTO.getOrgId(),formDTO.getDateId(),configIds); + if(CollectionUtils.isNotEmpty(list)){ + Map configMap = list.stream().collect(Collectors.toMap(FactIcuserCategoryAnalysisDailyDTO::getConfigId, m -> m, (k1, k2) -> k1)); + resList.forEach(resDto->{ + if(MapUtils.isNotEmpty(configMap)&&configMap.containsKey(resDto.getConfigId())){ + FactIcuserCategoryAnalysisDailyDTO dailyDTO=configMap.get(resDto.getConfigId()); + resDto.setTotal(dailyDTO.getTotal()); + resDto.setImmigration(dailyDTO.getQrIncr()); + resDto.setEmigration(dailyDTO.getQcIncr()); + } + }); + } + }else if(OrgInfoConstant.AGENCY.equals(formDTO.getOrgType())){ + CustomerAgencyEntity agencyEntity=govOrgService.getAgencyInfo(formDTO.getOrgId()); + String gridPids=""; + if(NumConstant.ZERO_STR.equals(agencyEntity.getPid())){ + // 当前组织是根组织 + gridPids=formDTO.getOrgId(); + }else { + gridPids=agencyEntity.getPids().concat(StrConstant.COLON).concat(formDTO.getOrgId()); + } + List list = dataStatsService.queryAgencyIcUserCategoryData(gridPids, formDTO.getDateId(), configIds); + if(CollectionUtils.isNotEmpty(list)){ + Map configMap = list.stream().collect(Collectors.toMap(FactIcuserCategoryAnalysisDailyDTO::getConfigId, m -> m, (k1, k2) -> k1)); + resList.forEach(resDto->{ + if(MapUtils.isNotEmpty(configMap)&&configMap.containsKey(resDto.getConfigId())){ + FactIcuserCategoryAnalysisDailyDTO dailyDTO=configMap.get(resDto.getConfigId()); + resDto.setTotal(dailyDTO.getTotal()); + resDto.setImmigration(dailyDTO.getQrIncr()); + resDto.setEmigration(dailyDTO.getQcIncr()); + } + }); + } + } + } + return resList; + } + + + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java index 810122f74c..b4b996eb49 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/CustomerFootBarService.java @@ -20,8 +20,11 @@ package com.epmet.dataaggre.service.opercustomize; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO; import com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO; +import com.epmet.dataaggre.dto.epmetuser.result.IcUserCategoryResultDTO; import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity; +import java.util.List; + /** * APP底部菜单栏信息 * @@ -40,4 +43,10 @@ public interface CustomerFootBarService extends BaseService queryCustomerIcResiCategoryStatsConfig(String customerId); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java index d301e23b16..a0fd9b7b5d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/opercustomize/impl/CustomerFootBarServiceImpl.java @@ -27,7 +27,7 @@ import com.epmet.dataaggre.dao.opercustomize.CustomerFootBarDao; import com.epmet.dataaggre.dto.app.form.AppFootBarFormDTO; import com.epmet.dataaggre.dto.app.result.AppFootBarResultDTO; import com.epmet.dataaggre.dto.app.result.CustomerFootBarDTO; -import com.epmet.dataaggre.dto.epmetuser.IcFormResColumnDTO; +import com.epmet.dataaggre.dto.epmetuser.result.IcUserCategoryResultDTO; import com.epmet.dataaggre.entity.opercrm.CustomerParameterEntity; import com.epmet.dataaggre.entity.opercustomize.CustomerFootBarEntity; import com.epmet.dataaggre.service.opercrm.CustomerParameterService; @@ -39,7 +39,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; -import java.util.Set; /** @@ -114,4 +113,15 @@ public class CustomerFootBarServiceImpl extends BaseServiceImpl queryCustomerIcResiCategoryStatsConfig(String customerId) { + return baseDao.queryCustomerIcResiCategoryStatsConfig(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 681c057922..fa315b0aa1 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -1107,4 +1107,40 @@ ORDER BY month_id ASC + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml index 51340127fc..dc44858528 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/opercustomize/CustomerFootBarDao.xml @@ -39,4 +39,19 @@ AND C.DISPLAY='1' + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java index dde180c1ca..c729dea005 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java @@ -5,10 +5,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.StatsFormDTO; import com.epmet.dto.basereport.form.EventInfoFormDTO; import com.epmet.dto.basereport.result.EventInfoResultDTO; -import com.epmet.dto.extract.form.BizDataFormDTO; -import com.epmet.dto.extract.form.ExtractIndexFormDTO; -import com.epmet.dto.extract.form.ExtractOriginFormDTO; -import com.epmet.dto.extract.form.ExtractScreenFormDTO; +import com.epmet.dto.extract.form.*; import com.epmet.dto.group.form.GroupStatsFormDTO; import com.epmet.dto.group.form.GroupTotalFormDTO; import com.epmet.dto.org.form.GridBaseInfoFormDTO; @@ -365,4 +362,7 @@ public interface DataStatisticalOpenFeignClient { */ @PostMapping("/data/stats/shibeiICJob/userPointAndProjectStatus/{bizType}") Result userPointAndProjectStatus(@PathVariable("bizType") String biztype,@RequestBody ExtractOriginFormDTO formDTO); + + @PostMapping("/data/stats/ic/user/category-analysis-daily") + Result statUserCategoryDaily(@RequestBody IcUserCategoryAnalysisDailyFormDTO formDTO); } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java index ad48c01c34..a65ced89f8 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java @@ -6,10 +6,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.StatsFormDTO; import com.epmet.dto.basereport.form.EventInfoFormDTO; import com.epmet.dto.basereport.result.EventInfoResultDTO; -import com.epmet.dto.extract.form.BizDataFormDTO; -import com.epmet.dto.extract.form.ExtractIndexFormDTO; -import com.epmet.dto.extract.form.ExtractOriginFormDTO; -import com.epmet.dto.extract.form.ExtractScreenFormDTO; +import com.epmet.dto.extract.form.*; import com.epmet.dto.group.form.GroupStatsFormDTO; import com.epmet.dto.group.form.GroupTotalFormDTO; import com.epmet.dto.org.form.GridBaseInfoFormDTO; @@ -344,4 +341,9 @@ public class DataStatisticalOpenFeignClientFallBack implements DataStatisticalOp public Result userPointAndProjectStatus(String biztype,ExtractOriginFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "userPointAndProjectStatus", biztype,formDTO); } + + @Override + public Result statUserCategoryDaily(IcUserCategoryAnalysisDailyFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "statUserCategoryDaily", formDTO); + } } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/IcUserCategoryAnalysisTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/IcUserCategoryAnalysisTask.java new file mode 100644 index 0000000000..c0c5b8ee9b --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/IcUserCategoryAnalysisTask.java @@ -0,0 +1,34 @@ +package com.epmet.task; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.extract.form.IcUserCategoryAnalysisDailyFormDTO; +import com.epmet.feign.DataStatisticalOpenFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +@Slf4j +@Component("icUserCategoryAnalysisTask") +public class IcUserCategoryAnalysisTask implements ITask { + + @Autowired + private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient; + + @Override + public void run(String params) { + log.info("icUserCategoryAnalysisTask定时任务正在执行,参数为:{}", params); + IcUserCategoryAnalysisDailyFormDTO formDTO = new IcUserCategoryAnalysisDailyFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, IcUserCategoryAnalysisDailyFormDTO.class); + } + Result result = dataStatisticalOpenFeignClient.statUserCategoryDaily(formDTO); + if (result.success()) { + log.info("icUserCategoryAnalysisTask定时任务正在执行定时任务执行成功"); + } else { + log.warn("icUserCategoryAnalysisTask定时任务正在执行定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUsercategoryAnalysisFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUsercategoryAnalysisFormDTO.java new file mode 100644 index 0000000000..5e448e6ad8 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUsercategoryAnalysisFormDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 数字社区-人员类别分析 入参DTO + * 某个类别的迁入、迁出、新增、类别列表 + */ +@Data +public class IcUsercategoryAnalysisFormDTO implements Serializable { + public interface AddUserInternalGroup {} + public interface AddUserShowGroup extends CustomerClientShowGroup {} + @NotBlank(message = "请选择查看某个人员类别",groups =AddUserShowGroup.class ) + private String categoryKey; + + @NotBlank(message = "dateId不能为空",groups =AddUserInternalGroup.class ) + @Length(min = 8, max = 8,message = "dateId格式:yyyyMMdd",groups =AddUserInternalGroup.class) + private String dateId; + + private String type; + + @NotNull(message = "页码pageNo不能为空",groups =AddUserInternalGroup.class ) + private Integer pageNo; + @NotNull(message = "页量pageSize不能为空",groups =AddUserInternalGroup.class ) + private Integer pageSize; + + @NotBlank(message = "请选择查看某个组织或网格",groups =AddUserShowGroup.class ) + private String orgId; + @NotBlank(message = "orgType不能为空",groups =AddUserInternalGroup.class ) + private String orgType; + + private String startDate; + private String endDate; + +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUsercategoryAnalysisResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUsercategoryAnalysisResultDTO.java new file mode 100644 index 0000000000..ac3ff1a3b2 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUsercategoryAnalysisResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 人员类别分析 + * 列表返参 + */ +@Data +public class IcUsercategoryAnalysisResultDTO implements Serializable { + private static final long serialVersionUID = 8071180665763717817L; + private String icUserId; + private String name; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private Date changeTime; + private String typeName; + private String type; + private String gridName; + private String address; + + // @JsonIgnore + private String buildingId; + // @JsonIgnore + private String gridId; + // @JsonIgnore + private Integer value; + // @JsonIgnore + private String fieldName; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcUserChangeRecordController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcUserChangeRecordController.java index fc11027e8f..5ab2dae1eb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcUserChangeRecordController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcUserChangeRecordController.java @@ -17,11 +17,14 @@ package com.epmet.controller; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.IcResiUserChangeRecordFormDTO; import com.epmet.dto.form.IcResiUserTransferFormDTO; +import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO; import com.epmet.dto.result.IcUserChangeRecordResultDTO; +import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO; import com.epmet.service.IcUserChangeRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -53,4 +56,15 @@ public class IcUserChangeRecordController { return new Result().ok(icUserChangeRecordService.list(formDTO)); } + /** + * 人员类别分析 + * @param formDTO + * @return + */ + // /epmetuser/icuserchangerecord/category-analysis-list + @PostMapping("category-analysis-list") + public Result> categoryAnalysisList(@RequestBody IcUsercategoryAnalysisFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,IcUsercategoryAnalysisFormDTO.AddUserShowGroup.class,IcUsercategoryAnalysisFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icUserChangeRecordService.categoryAnalysisList(formDTO)); + } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcUserChangeRecordDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcUserChangeRecordDao.java index d0079ab6eb..0e82f9564e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcUserChangeRecordDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcUserChangeRecordDao.java @@ -19,6 +19,8 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.IcUserChangeRecordDTO; +import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO; +import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO; import com.epmet.entity.IcUserChangeRecordEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -39,4 +41,6 @@ public interface IcUserChangeRecordDao extends BaseDao * @Description 查询居民变更记录 **/ List getList(@Param("icUserId") String icUserId); + + List categoryAnalysisList(IcUsercategoryAnalysisFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcUserChangeRecordService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcUserChangeRecordService.java index 8032331a16..252c5abd94 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcUserChangeRecordService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcUserChangeRecordService.java @@ -18,8 +18,11 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; import com.epmet.dto.form.IcResiUserChangeRecordFormDTO; +import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO; import com.epmet.dto.result.IcUserChangeRecordResultDTO; +import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO; import com.epmet.entity.IcUserChangeRecordEntity; /** @@ -35,4 +38,11 @@ public interface IcUserChangeRecordService extends BaseService categoryAnalysisList(IcUsercategoryAnalysisFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java index 4b61577545..9f764e9c05 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java @@ -18,17 +18,34 @@ package com.epmet.service.impl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcUserChangeRecordDao; import com.epmet.dto.IcUserChangeRecordDTO; import com.epmet.dto.form.IcResiUserChangeRecordFormDTO; +import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO; +import com.epmet.dto.result.AllGridsByUserIdResultDTO; +import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcUserChangeRecordResultDTO; +import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO; import com.epmet.entity.IcUserChangeRecordEntity; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.IcUserChangeRecordService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; + /** * 居民变更记录表 * @@ -37,6 +54,9 @@ import org.springframework.util.CollectionUtils; */ @Service public class IcUserChangeRecordServiceImpl extends BaseServiceImpl implements IcUserChangeRecordService { + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + /** * @Author sun @@ -55,4 +75,47 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl categoryAnalysisList(IcUsercategoryAnalysisFormDTO formDTO) { + formDTO.setEndDate(formDTO.getDateId()); + String monthId = formDTO.getDateId().substring(NumConstant.ZERO, NumConstant.SIX); + formDTO.setStartDate(monthId.concat("01")); + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.categoryAnalysisList(formDTO)); + List list = pageInfo.getList(); + if (!CollectionUtils.isEmpty(list)) { + //获取网格信息 + Set gridIds = list.stream().map(IcUsercategoryAnalysisResultDTO::getGridId).collect(Collectors.toSet()); + Result> gridInfoRes = govOrgOpenFeignClient.getGridListByGridIds(new ArrayList<>(gridIds)); + List gridInfoList = gridInfoRes.success() && !org.apache.commons.collections4.CollectionUtils.isEmpty(gridInfoRes.getData()) ? gridInfoRes.getData() : new ArrayList<>(); + Map gridInfoMap = gridInfoList.stream().collect(Collectors.toMap(AllGridsByUserIdResultDTO::getGridId, Function.identity())); + //获取楼栋信息 + Set buildingIds = list.stream().map(IcUsercategoryAnalysisResultDTO::getBuildingId).collect(Collectors.toSet()); + Result> buildRes = govOrgOpenFeignClient.buildingListByIds(new ArrayList<>(buildingIds)); + List buildInfoList = buildRes.success() && !org.apache.commons.collections4.CollectionUtils.isEmpty(buildRes.getData()) ? buildRes.getData() : new ArrayList<>(); + Map buildInfoMap = buildInfoList.stream().collect(Collectors.toMap(BuildingResultDTO::getBuildingId, Function.identity())); + list.forEach(resultDto -> { + //赋值小区名+楼栋名 + if (null != buildInfoMap && buildInfoMap.containsKey(resultDto.getBuildingId())) { + resultDto.setAddress(buildInfoMap.get(resultDto.getBuildingId()).getNeighborhoodName().concat(buildInfoMap.get(resultDto.getBuildingId()).getBuildingName())); + } else { + resultDto.setAddress(StrConstant.EPMETY_STR); + } + //赋值XXX-xxx网格名 + if (null != gridInfoMap && gridInfoMap.containsKey(resultDto.getGridId())) { + resultDto.setGridName(gridInfoMap.get(resultDto.getGridId()).getGridName()); + } else { + resultDto.setGridName(StrConstant.EPMETY_STR); + } + }); + } + return new PageData<>(list, pageInfo.getTotal()); + } + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcUserChangeRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcUserChangeRecordDao.xml index 7c606296e0..6ef762b208 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcUserChangeRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcUserChangeRecordDao.xml @@ -26,4 +26,33 @@ ORDER BY change_time DESC, type ASC + + \ No newline at end of file