diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java index c4f43a03b2..b4a31a96d1 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java +++ b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java @@ -36,6 +36,11 @@ public interface ConsomerGroupConstants { */ String AUTH_OPERATION_LOG_GROUP = "auth_operation_log_group"; + /** + * 数字社区web端工作人员登录 + */ + String STAFF_LOGIN_LOG_GROUP = "staff_login_log_group"; + /** * 项目操作日志消费组 */ diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java index 87e53edcb0..bb5526afe6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java @@ -32,6 +32,11 @@ public class CustomerStaffInfoCache implements Serializable { */ private String agencyName; + /** + * 组织级别 + */ + private String level; + /** * 2级组织名称 根据添加的来源返回(xx组织-组织/网格/部门) */ diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/PidUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/PidUtils.java new file mode 100644 index 0000000000..f0cdb943b8 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/PidUtils.java @@ -0,0 +1,27 @@ +package com.epmet.commons.tools.utils; + +import org.apache.commons.lang3.StringUtils; + +/** + * pid用到的工具 + */ +public class PidUtils { + + /** + * 将orgId和pids组合传话为orgIdPath(包含自己) + * @param orgId + * @param pids + * @return + */ + public static String convertPid2OrgIdPath(String orgId,String pids) { + StringBuilder orgIdPath = new StringBuilder(); + if (StringUtils.isBlank(pids) || pids.equals("0")) { + orgIdPath.append(orgId); + } else { + orgIdPath.append(pids).append(":").append(orgId); + } + + return orgIdPath.toString(); + } + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java index dbf18ee25a..8e39699670 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java @@ -21,6 +21,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -54,6 +55,11 @@ public class IcNeighborHoodDTO implements Serializable { */ private String agencyId; + /** + * agencyId列表 + */ + private List agencyIds; + /** * 上级组织id */ @@ -69,6 +75,11 @@ public class IcNeighborHoodDTO implements Serializable { */ private String gridId; + /** + * gridId列表 + */ + private List gridIds; + /** * 网格 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java new file mode 100644 index 0000000000..d9e7f7d4e4 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class CommunityCountCensusFormDTO implements Serializable { + + + + private static final long serialVersionUID = 4360690752084258055L; + + @NotBlank(message = "组织Id不能为空") + private String agencyId; + + private Date timeStart; + + private Date timeEnd; + + private Integer pageNum; + + private Integer pageSize; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java index 15bf7a402a..623af190db 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java @@ -10,6 +10,19 @@ import java.io.Serializable; */ @Data public class EnterprisePageFormDTO implements Serializable { + + /** + * 组织id或者网格id + * 04.10添加次入参,原型地址:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvzaghxlqxhe + */ + private String orgId; + /** + * 组织:agency + * 网格:grid + * 04.10添加次入参,原型地址:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvzaghxlqxhe + */ + private String orgType; + /** * 场所区域 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java new file mode 100644 index 0000000000..451c5c6790 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 根据小区,楼宇,单元名称校验是否存在 + * @Author wgf + * @Date 2022/8/24 9:03 + */ +@Data +public class HouseCountPictureFormDTO implements Serializable { + private static final long serialVersionUID = 2636608477324780974L; + + private String orgIdPath; + + private String orgId; + + private String orgType; + + private Date timeStart; + + private Date timeEnd; + + private String purpose; + + private Integer rentFlag; + + private Integer pageSize; + + private Integer pageNo; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java new file mode 100644 index 0000000000..5fc00d0691 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Description 下级社区账号登录次数排名入参 + * @Author yzm + * @Date 2023/4/6 14:18 + */ +@Data +public class CommunityLoginFormDTO extends PageFormDTO { + /** + * 所选择的组织id + */ + private String orgId; + + /** + * 组织类型 + */ + private String level; + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endDate; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java new file mode 100644 index 0000000000..a1ef997fc0 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Description 下级社区账号登录次数排名入参 + * @Author yzm + * @Date 2023/4/6 14:18 + */ +@Data +public class CountActivityFormDTO extends PageFormDTO { + /** + * 所选择的组织id + */ + private String orgId; + + /** + * 是否活跃 1 活跃 0 不活跃 + */ + private String isActivity; + + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endDate; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java new file mode 100644 index 0000000000..be4e1aac78 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dto.form.yt; + +import lombok.Data; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:47 + */ +@Data +public class EnterpriseCountPlaceTypeFormDTO { + private String orgId; + private String orgType; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java new file mode 100644 index 0000000000..c115f530c9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form.yt; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Description 账号登录情况,查询市级账号/区县级账号/镇街级账号/社区级账号登录次数,入参dto + * @Author yzm + * @Date 2023/4/6 10:09 + */ +@Data +public class LoginLogCountByLevelFormDTO { + /** + * 所选择的组织id + */ + private String orgId; + + /** + * 组织类型 + */ + private String level; + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endDate; + +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java new file mode 100644 index 0000000000..4599d00793 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class AgencyCountCensusResultDTO implements Serializable { + + private static final long serialVersionUID = 4360690752084258055L; + + private String level; + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java new file mode 100644 index 0000000000..5788007304 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class CommunityCountCensusResultDTO implements Serializable { + + private static final long serialVersionUID = 4360690752084258055L; + + private String agencyId; + + private String agencyName; + + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java new file mode 100644 index 0000000000..f256fbe316 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/7 16:43 + */ +@Data +public class CommunityListByAgencyIdResultDTO implements Serializable { + private static final long serialVersionUID = -1677303397440121269L; + + private String id; + + private String pids; + + private String name; + + private String streeName; + +// private String streeId; + + private String districtName; + +// private String districtId; + + private Date createTime; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java new file mode 100644 index 0000000000..e90cd207a7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 15:05 + */ +@NoArgsConstructor +@Data +public class HouseCountPictureListResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private String type; + + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java new file mode 100644 index 0000000000..998776fffb --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 15:05 + */ +@NoArgsConstructor +@Data +public class HouseCountPictureResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private Integer total; + + private List list; + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java new file mode 100644 index 0000000000..b511488220 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.result; + + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 14:41 + */ +@NoArgsConstructor +@Data +public class HousePictureListResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private String houseId; + + private String districtName; + + private String streetName; + + private String communityName; + + private String gridName; + + private String houseName; + + private String purposeName; + + private String rentFlagName; + + private String orgIdPath; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java new file mode 100644 index 0000000000..b63ed0c20f --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java @@ -0,0 +1,44 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃情况 + */ +@Data +public class AccountActivityInfo implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + private String agencyName = ""; + + /** + * 登陆次数 + */ + private String loginCount = ""; + + /** + * 活跃账号数 + */ + private String accountActivityCount = ""; + + + /** + * 总账号数 + */ + private String accountCount = ""; + + /** + * 组织id + */ + private String agencyId = ""; + + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java new file mode 100644 index 0000000000..a92b42661d --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃总数 + */ +@Data +public class ActivityTatalInfo implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + + /** + * 不活跃账号总数 + */ + private String inactivityCount = ""; + + /** + * 活跃账号总数 + */ + private String activityCount = ""; + + + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java new file mode 100644 index 0000000000..e1cb00a765 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +/** + * @Description 下级社区账号登录次数排名 + * @Author yzm + * @Date 2023/4/6 14:15 + */ +@Data +public class CommunityLoginResultDTO { + /** + * 组织id + */ + private String agencyId; + /** + * 组织名称 + */ + private String agencyName; + /** + * 组织级别(社区级:community, 乡(镇、街道)级:street, 区县级: district, 市级: city 省级:province) + */ + private String agencyLevel; + /** + * 所属街道名称; + */ + private String streetName; + /** + * 所属区县名称; + */ + private String districtName; + /** + * 登录次数 + */ + private Integer count; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java new file mode 100644 index 0000000000..f92834a43b --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result.yt; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:48 + */ +@Data +public class EnterpriseCountPlaceTypeDetailDTO { + private String placeType; + private String placeTypeName; + private Integer total; + + + public EnterpriseCountPlaceTypeDetailDTO() { + this.total = NumConstant.ZERO; + } + + +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java new file mode 100644 index 0000000000..865a2f481a --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.util.List; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:47 + */ +@Data +public class EnterpriseCountPlaceTypeResDTO { + private Integer total; + private List list; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java new file mode 100644 index 0000000000..b1a4c33c42 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java @@ -0,0 +1,29 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +/** + * @Description 账号登录情况,查询市级账号/区县级账号/镇街级账号/社区级账号登录次数,返参dto + * @Author yzm + * @Date 2023/4/6 10:13 + */ +@Data +public class LoginLogCountByLevelResultDTO { + /** + * 市级账号登录总次数;-1时不展示 + */ + private Integer cityCount; + /** + * 区县级账号登录总次数;-1时不展示 + */ + private Integer districtCount; + /** + * 镇街级账号登录总次数;-1时不展示 + */ + private Integer streetCount; + /** + * 社区级账号登录总次数;-1时不展示 + */ + private Integer communityCount; +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java index ba94cc12ab..e0d4f9f644 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java @@ -251,6 +251,17 @@ public class CustomerAgencyController { return new Result().ok(customerAgencyService.staffInAgencyList(tokenDTO.getUserId())); } + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 工作端-查询当前人员所属组织及所有下级组织(到区县级) + **/ + @PostMapping("staffinAgencyLevelList") + public Result staffinAgencyLevelList(@LoginUser TokenDto tokenDTO) { + return new Result().ok(customerAgencyService.staffinAgencyLevelList(tokenDTO.getUserId())); + } + /** * @Description 对外接口,根据customerId返回Element UI中Tree结构的agency列表 * @param map @@ -517,5 +528,40 @@ public class CustomerAgencyController { return customerAgencyService.getCurrentUserCommunityInfo(tokenDTO); } + /** + * @Description: 返回下级数量统计 + * @param agencyId: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 14:48 + */ + @GetMapping("getAgencyCountList") + public Result> getAgencyCountList(@RequestParam String agencyId){ + return new Result>().ok(customerAgencyService.getAgencyCountList(agencyId)); + } + + /** + * @Description: 获取下级组织数量统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 15:08 + */ + @PostMapping("getCommunityCountList") + public Result> getCommunityCountList(@RequestBody CommunityCountCensusFormDTO dto){ + return new Result>().ok(customerAgencyService.getCommunityCountList(dto)); + } + + /** + * @Description: 根据agencyId获取下级社区列表 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 16:49 + */ + @PostMapping("getCommunityList") + public Result> getCommunityList(@RequestBody CommunityCountCensusFormDTO dto){ + return new Result>().ok(customerAgencyService.getCommunityList(dto)); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java index 7d9afd1a83..ab66b5aa4f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java @@ -22,14 +22,15 @@ import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; -import com.epmet.dto.IcEnterpriseChangeRecordDTO; import com.epmet.dto.form.EnterpriseFormDTO; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.form.EnterprisePatrolFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.yt.EnterpriseCountPlaceTypeFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; import com.epmet.dto.result.EnterprisePatrolResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.excel.EnterpriseExportExcelDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcEnterpriseService; @@ -69,6 +70,7 @@ public class IcEnterpriseController implements ResultDataResolver { private IcEnterpriseService icEnterpriseService; @Autowired private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + /** * 企事业单位巡查】新增/编辑 * @@ -359,4 +361,17 @@ public class IcEnterpriseController implements ResultDataResolver { icEnterpriseService.qrCodeExport(formDTO,response); } + /** + * 九小场所分析:返回各个场所类型的数量 + * + * @param formDTO + * @return + */ + @PostMapping("count-type") + public Result countType(@RequestBody EnterpriseCountPlaceTypeFormDTO formDTO) { + return new Result().ok(icEnterpriseService.countType(formDTO.getOrgId(), formDTO.getOrgType())); + } + + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java index c2420c0832..7c8bdc939f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java @@ -17,24 +17,47 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.MaskResponse; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; -import com.epmet.dto.result.HouseAgencyInfoResultDTO; -import com.epmet.dto.result.HouseInfoDTO; -import com.epmet.dto.result.HouseListResultDTO; -import com.epmet.dto.result.HousesNameResultDTO; +import com.epmet.dto.result.*; +import com.epmet.excel.EnterpriseExportExcelDTO; +import com.epmet.excel.HousePictureListExcelDTO; import com.epmet.service.IcHouseService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; import java.util.List; import java.util.Map; @@ -45,6 +68,7 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2021-10-25 */ +@Slf4j @RestController @RequestMapping("ichouse") public class IcHouseController { @@ -161,4 +185,85 @@ public class IcHouseController { return icHouseService.checkHomeInfo(formDTO); } + /** + * @Description: 房屋画像-用途统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/4/11 15:08 + */ + @PostMapping("getHousePurposeCount") + public Result getHousePurposeCount(@RequestBody HouseCountPictureFormDTO dto){ + return new Result().ok(icHouseService.getHousePurposeCount(dto)); + } + + + /** + * @Description: 房屋画像-状态统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/4/11 15:07 + */ + @PostMapping("getHouseStatusCount") + public Result getHouseStatusCount(@RequestBody HouseCountPictureFormDTO dto){ + return new Result().ok(icHouseService.getHouseStatusCount(dto)); + } + + /** + * @Description: 房屋画像-列表 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/11 16:20 + */ + @PostMapping("getHousePictureList") + public Result> getHousePictureList(@RequestBody HouseCountPictureFormDTO dto){ + return new Result>().ok(icHouseService.getHousePictureList(dto)); + } + + @PostMapping("export") + public void export(@RequestBody HouseCountPictureFormDTO formDTO, HttpServletResponse response) throws IOException { + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "房屋列表" + DateUtils.format(new Date()) + ".xlsx"; + // 头的策略 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + // 背景设置为红色 + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + FreezeAndFilter writeHandler = new FreezeAndFilter(); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), HousePictureListExcelDTO.class) + .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerWriteHandler(writeHandler).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icHouseService.getHousePictureList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), HousePictureListExcelDTO.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("房屋列表导出异常export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index a8cf04b4cb..43b2d4bd60 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -141,7 +141,7 @@ public class IcNeighborHoodController { } /** - * @Description 获取网格下小区列表 + * @Description 获取组织/网格下小区列表,支持单选和多选 * @Param dto * @Return {@link Result< List< OptionResultDTO>>} * @Author zhaoqifeng @@ -149,7 +149,13 @@ public class IcNeighborHoodController { */ @PostMapping("neighborhoodoption") public Result> getNeighborHoodOptions(@LoginUser TokenDto tokenDto, @RequestBody IcNeighborHoodDTO dto) { - return new Result>().ok(icNeighborHoodService.getNeighborHoodOptions(dto.getAgencyId(), dto.getGridId(),tokenDto.getUserId(),tokenDto.getCustomerId())); + return new Result>().ok(icNeighborHoodService.getNeighborHoodOptions( + dto.getAgencyId(), + dto.getGridId(), + dto.getAgencyIds(), + dto.getGridIds(), + tokenDto.getUserId(), + tokenDto.getCustomerId())); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java new file mode 100644 index 0000000000..c2967945f7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java @@ -0,0 +1,154 @@ +package com.epmet.controller; + +import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.form.yt.LoginLogCountByLevelFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.excel.yt.AccountActivityExcel; +import com.epmet.excel.yt.AccountInactivityExcel; +import com.epmet.service.StaffLoginLogService; +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 com.epmet.dto.result.yt.AccountActivityInfo; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@RestController +@RequestMapping("staffLoginLog") +public class StaffLoginLogController { + + @Autowired + private StaffLoginLogService staffLoginLogService; + + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param formDTO + * @return + */ + @PostMapping("count-level") + public Result countLevel(@RequestBody LoginLogCountByLevelFormDTO formDTO) { + return new Result().ok(staffLoginLogService.countLevel(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate())); + } + + /** + * 下级社区账号登录次数排名 + * + * @return + */ + @PostMapping("community-count") + public Result> communityCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.pageCommunityCount(formDTO)); + } + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param formDTO + * @return + */ + @PostMapping("sub-count") + public Result> querySubCount(@RequestBody LoginLogCountByLevelFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.querySubCount(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate())); + } + + /** + * 查看区县 + * + * @param formDTO + * @return + */ + @PostMapping("district-count") + public Result> districtCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.pageDistrictCount(formDTO.getOrgId(), + formDTO.getLevel(), formDTO.getStartDate(), + formDTO.getEndDate(), formDTO.getIsPage(), + formDTO.getPageNo(), formDTO.getPageSize())); + } + + /** + * 查看街镇 + * + * @param formDTO + * @return + */ + @PostMapping("street-count") + public Result> streetCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.streetCount(formDTO.getOrgId(), + formDTO.getStartDate(), + formDTO.getEndDate(), formDTO.getIsPage(), + formDTO.getPageNo(), formDTO.getPageSize())); + } + + /*** + * 获取当前agencyid下 下级组织活跃情况 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author qushutong + * @date 2023/4/6 13:41 + */ + @PostMapping("getAccountActivityInfo") + public Result> getAccountActivityInfo(@RequestBody CountActivityFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.getAccountActivityInfo(formDTO)); + } + + /*** + * 获取活跃度总数 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author qushutong + * @date 2023/4/6 17:35 + */ + @PostMapping("getActivityTotal") + public Result getActivityTotal(@RequestBody CountActivityFormDTO formDTO) { + return new Result().ok(staffLoginLogService.getActivityTotal(formDTO)); + } + + + /*** + * 导出活跃 + * @param response + * @param tokenDto + * @param formDTO + * @return void + * @author qushutong + * @date 2023/4/6 18:04 + */ + @PostMapping("accountActivityInfo-export") + public void analysisExport(HttpServletResponse response, @LoginUser TokenDto tokenDto, @RequestBody CountActivityFormDTO formDTO) throws Exception { + formDTO.setIsPage(false); + PageData res = staffLoginLogService.getAccountActivityInfo(formDTO); + if (!CollectionUtils.isEmpty(res.getList())) { + if("1".equals(formDTO.getIsActivity())){ +// List accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountActivityExcel.class); + ExcelUtils.exportExcelToTarget(response, null, res.getList(), AccountActivityExcel.class); + }else { +// List accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountInactivityExcel.class); + ExcelUtils.exportExcelToTarget(response, null, res.getList(), AccountInactivityExcel.class); + } + + } + } + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index 2ef0034462..5639d33894 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -108,6 +108,8 @@ public interface CustomerAgencyDao extends BaseDao { **/ List selectSubAgencyList(@Param("subAgencyPids") String subAgencyPids); + List selectSubAgencyLevelList(@Param("subAgencyPids") String subAgencyPids); + /** * 查询客户根级组织 * @@ -195,6 +197,8 @@ public interface CustomerAgencyDao extends BaseDao { **/ AgencyResultDTO selectAgencyByStaffId(@Param("staffId") String staffId); +// AgencyResultDTO selectAgencyByLevelStaffId(@Param("staffId") String staffId); + /** * @param customerId * @param pid @@ -429,5 +433,15 @@ public interface CustomerAgencyDao extends BaseDao { * @return */ List getAllCommunity(String customerId); + + List agencyCount(@Param("pids") String pids); + + Integer agencyGridCount(@Param("pids") String pids); + + Integer agencyStaffCount(@Param("pids") String pids); + + Integer getCommunityCount(@Param("pids")String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getCommunityByPidList (@Param("pids")String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java index 40bdde151e..95d7119471 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java @@ -3,6 +3,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeDetailDTO; import com.epmet.entity.IcEnterpriseEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -32,4 +33,14 @@ public interface IcEnterpriseDao extends BaseDao { List selectList(EnterprisePageFormDTO formDTO); List selectForUniqueName(@Param("gridId") String gridId, @Param("placeOrgName") String placeOrgName, @Param("enterpriseId") String enterpriseId); + + /** + * 按场所类型 + * @param orgId + * @param orgType + * @return + */ + List selectCountByPlaceType(@Param("customerId")String customerId, + @Param("orgId") String orgId, + @Param("orgType") String orgType); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java index 3e9d28b39f..9f76843368 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java @@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Set; @@ -218,4 +219,10 @@ public interface IcHouseDao extends BaseDao { * @return */ List selectGroupRentHouseList(GroupRentHouseFormDTO formDTO); + + List getHousePurposeCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getHouseStatusCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getHousePictureList(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd,@Param("purpose") String purpose,@Param("rentFlag") Integer rentFlag); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java new file mode 100644 index 0000000000..0db1338752 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java @@ -0,0 +1,75 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.entity.StaffLoginLogEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Mapper +public interface StaffLoginLogDao extends BaseDao { + + /** + * 各社区登录总次数 + * + * @param orgId + * @param startDate + * @param endDate + * @return + */ + List pageCommunityCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param startDate + * @param endDate + * @return + */ + List querySubCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + /** + * 各区县登录总次数 + * + * @param orgId + * @param startDate + * @param endDate + * @return + */ + List pageDistrictCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + List pageStreetCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + /*** + * 获取登陆情况 + * @param formDTO + * @return com.epmet.dto.result.yt.AccountActivityInfo + * @author qushutong + * @date 2023/4/6 13:47 + */ + List selectListActivityInfo(CountActivityFormDTO formDTO); + + + ActivityTatalInfo selectOneActivityTotal(CountActivityFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java new file mode 100644 index 0000000000..35926c1c78 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java @@ -0,0 +1,73 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("staff_login_log") +public class StaffLoginLogEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 工作端用户id + */ + private String staffId; + + /** + * 工作人员姓名 + */ + private String staffName; + + /** + * 工作人员手机号 + */ + private String mobile; + + /** + * 工作人员所属组织id;组织名称在customer_agency + */ + private String agencyId; + + /** + * 组织级别(社区级:community, +乡(镇、街道)级:street, +区县级: district, +市级: city +省级:province) + */ + private String agencyLevel; + + /** + * agency_id的直属上级;如果是根组织的用户登录,pid=0或者pid='' + */ + private String pid; + + /** + * AGENCY_ID全路径,包含agency_id自身 + */ + private String orgIdPath; + + /** + * 登录时间 + */ + private Date loginTime; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java new file mode 100644 index 0000000000..b6cc195a81 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java @@ -0,0 +1,50 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.util.Date; + +/** + * 企事业单位导出excel + */ +@Data +public class HousePictureListExcelDTO { + + + @ExcelIgnore + private String houseId; + + @ExcelProperty(value = "区县") + @ColumnWidth(25) + private String districtName; + + @ExcelProperty(value = "镇街") + @ColumnWidth(25) + private String streetName; + + @ExcelProperty(value = "社区") + @ColumnWidth(25) + private String communityName; + + @ExcelProperty(value = "网格") + @ColumnWidth(25) + private String gridName; + + @ExcelProperty(value = "房屋名称") + @ColumnWidth(25) + private String houseName; + + @ExcelProperty(value = "房屋用途") + @ColumnWidth(25) + private String purposeName; + + @ExcelProperty(value = "房屋状态") + @ColumnWidth(25) + private String rentFlagName; + @ExcelIgnore + private String orgIdPath; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java new file mode 100644 index 0000000000..4c7d6bd6f5 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java @@ -0,0 +1,45 @@ +package com.epmet.excel.yt; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃情况 + */ +@Data +public class AccountActivityExcel implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + @Excel(name = "组织名称") + private String agencyName = ""; + + /** + * 登陆次数 + */ + @Excel(name = "登陆次数") + private String loginCount = ""; + + /** + * 活跃账号数 + */ + @Excel(name = "活跃账号数") + private String accountActivityCount = ""; + + + /** + * 总账号数 + */ + @Excel(name = "总账号数") + private String accountCount = ""; + + + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java new file mode 100644 index 0000000000..6635ab63c9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java @@ -0,0 +1,28 @@ +package com.epmet.excel.yt; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户不活跃情况 + */ +@Data +public class AccountInactivityExcel implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + @Excel(name = "组织名称") + private String agencyName = ""; + + + + + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java index 86f257d9aa..f05f5e0098 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java @@ -5,6 +5,7 @@ import com.epmet.commons.rocketmq.constants.TopicConstants; import com.epmet.commons.rocketmq.register.MQAbstractRegister; import com.epmet.commons.rocketmq.register.MQConsumerProperties; import com.epmet.mq.listener.InitCustomerOrgRolesListener; +import com.epmet.mq.listener.StaffLoginLogListener; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; import org.springframework.stereotype.Component; @@ -32,5 +33,10 @@ public class RocketMQConsumerRegister extends MQAbstractRegister { new InitCustomerOrgRolesListener()); // ...其他监听器类似 + register(consumerProperties, + ConsomerGroupConstants.STAFF_LOGIN_LOG_GROUP, + MessageModel.CLUSTERING, + TopicConstants.AUTH, "login", + new StaffLoginLogListener()); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java new file mode 100644 index 0000000000..6f850bf554 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java @@ -0,0 +1,110 @@ +package com.epmet.mq.listener; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.rocketmq.constants.MQUserPropertys; +import com.epmet.commons.rocketmq.messages.LoginMQMsg; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.service.StaffLoginLogService; +import org.apache.commons.lang3.StringUtils; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; +import org.apache.rocketmq.common.message.MessageExt; +import org.redisson.api.RLock; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * @author wxz + * @Description 登录操作日志监听器 + + * @return + * @date 2021.06.07 16:12 + */ +public class StaffLoginLogListener implements MessageListenerConcurrently { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private RedisUtils redisUtils; + + @Override + public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { + + if (redisUtils == null) { + redisUtils = SpringContextUtils.getBean(RedisUtils.class); + } + + try { + msgs.forEach(msg -> consumeMessage(msg)); + } catch (Exception e) { + logger.error(ExceptionUtils.getErrorStackTrace(e)); + return ConsumeConcurrentlyStatus.RECONSUME_LATER; + } + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + + private void consumeMessage(MessageExt messageExt) { + String tags = messageExt.getTags(); + // msg示例: + // { + // "userId": "5198ef9e3644c4f49457d2b551a1432e", + // "appId": "数字社区登录", + // "loginTime": "2023-04-04 14:05:37", + // "ip": "219.146.91.110", + // "fromApp": "gov", + // "fromClient": "web" + // } + String msg = new String(messageExt.getBody()); + String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL); + logger.info("工作人员登录操作日志监听器-收到消息内容:{}", msg); + LoginMQMsg msgObj = JSON.parseObject(msg, LoginMQMsg.class); + + DistributedLock distributedLock = null; + RLock lock = null; + try { + distributedLock = SpringContextUtils.getBean(DistributedLock.class); + lock = distributedLock.getLock(String.format("lock:staff_login_log:%s:%s", tags, msgObj.getUserId()), + 30L, 30L, TimeUnit.SECONDS); + SpringContextUtils.getBean(StaffLoginLogService.class).saveLog(msgObj.getUserId(),msgObj.getLoginTime()); + } catch (RenException e) { + // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试 + logger.error("【RocketMQ】工作人员登录添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + } catch (Exception e) { + // 不是我们自己抛出的异常,可以让MQ重试 + logger.error("【RocketMQ】工作人员登录添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + throw e; + } finally { + distributedLock.unLock(lock); + } + + if (StringUtils.isNotBlank(pendingMsgLabel)) { + try { + removePendingMqMsgCache(pendingMsgLabel); + } catch (Exception e) { + logger.error("【工作人员登录操作事件监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + + /** + * @description + * + * @param pendingMsgLabel + * @return + * @author wxz + * @date 2021.10.14 16:32:32 + */ + private void removePendingMqMsgCache(String pendingMsgLabel) { + String key = RedisKeys.blockedMqMsgKey(pendingMsgLabel); + redisUtils.delete(key); + //logger.info("【登录操作事件监听器】删除pendingMsgLabel成功:{}", pendingMsgLabel); + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index f9ac7182e7..f43de77102 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -18,7 +18,6 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -216,6 +215,9 @@ public interface CustomerAgencyService extends BaseService **/ StaffInAgencyListResultDTO staffInAgencyList(String staffId); + StaffInAgencyListResultDTO staffinAgencyLevelList(String staffId); + + /** * @Description 运营端-返回element ui - tree 结构agency列表 * @param customerId @@ -355,4 +357,37 @@ public interface CustomerAgencyService extends BaseService * @Date 2022/11/30 22:41 **/ Result> getCurrentUserCommunityInfo(TokenDto tokenDTO); + + /** + * 返回组织的orgIdPath:包含自身 + * + * @param orgId + * @return + */ + String getOrgIdPath(String orgId); + + /** + * 返回下级数量 + * @param agencyId + * @return + */ + List getAgencyCountList(String agencyId); + + /** + * @Description: 获取下级组织的社区数量 + * @param dto: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 15:09 + */ + List getCommunityCountList(CommunityCountCensusFormDTO dto); + + /** + * @Description: 根据agencyId获取下级社区列表 + * @param dto: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 16:49 + */ + PageData getCommunityList(CommunityCountCensusFormDTO dto); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java index e141e008e3..5868cb805b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java @@ -2,19 +2,17 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; -import com.epmet.dto.IcEnterpriseChangeRecordDTO; import com.epmet.dto.form.EnterpriseFormDTO; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.form.EnterprisePatrolFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; import com.epmet.dto.result.EnterprisePatrolResultDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.entity.IcEnterpriseEntity; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.nio.file.Path; -import java.util.List; import java.util.Map; /** @@ -103,4 +101,12 @@ public interface IcEnterpriseService extends BaseService { */ void qrCodeExport(EnterprisePageFormDTO formDTO, HttpServletResponse response) throws IOException; + /** + * 九小场所分析:返回各个场所类型的数量 + * + * @param orgId + * @param orgType + * @return + */ + EnterpriseCountPlaceTypeResDTO countType(String orgId, String orgType); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java index 0855d78104..72fa7d2674 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java @@ -2,12 +2,14 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.dto.result.OptionResultDTO; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; import com.epmet.dto.form.DetailByTypeFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.IcHouseEntity; @@ -139,4 +141,9 @@ public interface IcHouseService extends BaseService { Result checkHomeInfo(CheckHouseInfoFormDTO formDTO); + HouseCountPictureResultDTO getHousePurposeCount(HouseCountPictureFormDTO dto); + + HouseCountPictureResultDTO getHouseStatusCount(HouseCountPictureFormDTO dto); + + PageData getHousePictureList(HouseCountPictureFormDTO dto); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 2755cf3af0..5ffb6a19e8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -117,7 +117,8 @@ public interface IcNeighborHoodService extends BaseService * @Author zhaoqifeng * @Date 2021/10/26 14:32 */ - List getNeighborHoodOptions(String agencyId, String gridId,String staffId,String customerId); + List getNeighborHoodOptions(String agencyId, String gridId, List agencyIds, List gridIds, + String staffId,String customerId); /** * 获取用户组织下小区列表 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java new file mode 100644 index 0000000000..5d39463647 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java @@ -0,0 +1,97 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.entity.StaffLoginLogEntity; + +import java.util.Date; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +public interface StaffLoginLogService extends BaseService { + /** + * 登录,插入记录 + * + * @param staffId + * @param loginTime + */ + void saveLog(String staffId, Date loginTime); + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param orgId 为空时,默认当前登录用户所属组织id + * @param level + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate); + + /** + * 下级社区账号登录次数排名 + * + * @param formDTO + * @return + */ + PageData pageCommunityCount(CommunityLoginFormDTO formDTO); + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @return + */ + PageData querySubCount(String orgId, String level, Date startDate, Date endDate); + + /** + * 查看区县 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + PageData pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize); + + /** + * 查看街镇 + * + * @param orgId + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + PageData streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize); + + /*** + * 获取登陆情况 + * @param formDTO + * @return com.epmet.dto.result.yt.AccountActivityInfo + * @author qushutong + * @date 2023/4/6 13:47 + */ + PageData getAccountActivityInfo(CountActivityFormDTO formDTO); + + ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index a6702963c4..7a651ecc9a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -37,12 +38,14 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerAgencyConstant; import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.*; +import com.epmet.dto.region.LogOperationResultDTO; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.CustomerDepartmentEntity; @@ -56,6 +59,8 @@ import com.epmet.feign.OperCrmFeignClient; import com.epmet.redis.CustomerAgencyRedis; import com.epmet.service.CustomerAgencyService; import com.epmet.util.ModuleConstant; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -681,6 +686,17 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl getDepartmentLevelList(String subAgencyPids) { + List subAgencyList = baseDao.selectSubAgencyLevelList(subAgencyPids); + if (subAgencyList.size() > NumConstant.ZERO) { + for (AgencySubResultDTO sub : subAgencyList) { + List subAgency = getDepartmentLevelList(sub.getPids() + ":" + sub.getAgencyId()); + sub.setSubAgencyList(subAgency); + } + } + return subAgencyList; + } + /** * @param staffId * @return @@ -1052,6 +1068,24 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl%s", staffId)); + throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION); + } + resultDTO.setAgencyList(agencyList); + + //2.递归查询所有下级组织信息 + List subAgencyList = getDepartmentLevelList(("".equals(agencyList.getPids()) ? "" : agencyList.getPids() + ":") + agencyList.getAgencyId()); + resultDTO.setSubAgencyList(subAgencyList); + + return resultDTO; + } + /** * @param customerId * @return com.epmet.dto.result.AgencyElementTreeResultDTO @@ -1193,6 +1227,7 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl>().ok(list); } + /** + * 返回组织的orgIdPath:包含自身 + * + * @param orgId + * @return + */ + @Override + public String getOrgIdPath(String orgId) { + CustomerAgencyEntity customerAgencyEntity = baseDao.selectById(orgId); + if (null == customerAgencyEntity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode()); + } + if (StringUtils.isBlank(customerAgencyEntity.getPid()) || NumConstant.ZERO_STR.equals(customerAgencyEntity.getPid())) { + return orgId; + } + return customerAgencyEntity.getPids().concat(StrConstant.COLON).concat(orgId); + } + + /** + * @Description: + * @param agencyId: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 14:17 + */ + @Override + public List getAgencyCountList(String agencyId) { + + List agencyCountCensusResultDTOS = new ArrayList<>(); + + CustomerAgencyEntity customerAgency = baseDao.selectById(agencyId); + if (customerAgency != null){ + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + agencyCountCensusResultDTOS = baseDao.agencyCount(pids); + AgencyCountCensusResultDTO agencyCountCensusResultDTOGrid = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOGrid.setLevel("grid"); + agencyCountCensusResultDTOGrid.setCount(baseDao.agencyGridCount(pids)); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOGrid); + + AgencyCountCensusResultDTO agencyCountCensusResultDTOStaff = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOStaff.setLevel("staff"); + agencyCountCensusResultDTOStaff.setCount(baseDao.agencyStaffCount(pids)); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOStaff); + + }else{ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + return agencyCountCensusResultDTOS; + } + + @Override + public List getCommunityCountList(CommunityCountCensusFormDTO dto) { + + List resultDTOS = new ArrayList<>(); + + CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId()); + if (customerAgency!=null){ + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(CustomerAgencyEntity::getPids,pids); + List agencyEntityList = baseDao.selectList(queryWrapper); + agencyEntityList.forEach( + entity->{ + CommunityCountCensusResultDTO communityCountCensusResultDTO = new CommunityCountCensusResultDTO(); + communityCountCensusResultDTO.setAgencyId(entity.getId()); + communityCountCensusResultDTO.setAgencyName(entity.getOrganizationName()); + String agencyPids = PidUtils.convertPid2OrgIdPath(entity.getId(),entity.getPids()); + communityCountCensusResultDTO.setCount(baseDao.getCommunityCount(agencyPids,dto.getTimeStart(),dto.getTimeEnd())); + resultDTOS.add(communityCountCensusResultDTO); + } + ); + + }else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + + return resultDTOS; + } + + @Override + public PageData getCommunityList(CommunityCountCensusFormDTO dto) { + + CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId()); + if (customerAgency!=null){ + + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List entityList = baseDao.getCommunityByPidList(pids,dto.getTimeStart(),dto.getTimeEnd()); + + entityList.forEach( + entity->{ + String[] pidArray = entity.getPids().split(":"); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,pidArray); + List customerAgencyEntities = baseDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("district")){ + entity.setDistrictName(customerAgencyEntity.getOrganizationName()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + entity.setStreeName(customerAgencyEntity.getOrganizationName()); + } + } + } + ); + + PageInfo pageInfo = new PageInfo<>(entityList); + return new PageData<>(entityList, pageInfo.getTotal(),dto.getPageSize()); + + }else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java index 7867b1434b..f5da256144 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java @@ -29,10 +29,11 @@ import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeDetailDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.entity.*; import com.epmet.excel.EnterpriseImportExcelDTO; import com.epmet.excel.handler.IcEnterpriseExcelImportListener; -import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OssFeignClient; @@ -85,8 +86,6 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl dictList = SpringContextUtils.getBean(CoverageService.class).dictMap(EpmetRequestHolder.getLoginUserCustomerId(), CoveragePlaceTypeEnum.ENTERPRISE_PATROL.getCode()); + if (CollectionUtils.isEmpty(dictList)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "场所类型字典为空", "场所类型字典为空"); + } + // + List placeTypeCountList = baseDao.selectCountByPlaceType(EpmetRequestHolder.getLoginUserCustomerId(),orgId, orgType); + Map map = CollectionUtils.isEmpty(placeTypeCountList) ? new HashMap<>() : placeTypeCountList.stream().collect(Collectors.toMap(EnterpriseCountPlaceTypeDetailDTO::getPlaceType, o -> o));; + List list = new ArrayList<>(); + int total = 0; + for (IcCoverageCategoryDictListResultDTO placeType : dictList) { + EnterpriseCountPlaceTypeDetailDTO detailDTO = new EnterpriseCountPlaceTypeDetailDTO(); + detailDTO.setPlaceType(placeType.getValue()); + detailDTO.setPlaceTypeName(placeType.getLabel()); + detailDTO.setTotal(NumConstant.ZERO); + if (map.containsKey(placeType.getValue())) { + detailDTO.setTotal(map.get(placeType.getValue()).getTotal()); + } + list.add(detailDTO); + total += detailDTO.getTotal(); + } + EnterpriseCountPlaceTypeResDTO resDTO = new EnterpriseCountPlaceTypeResDTO(); + resDTO.setList(list); + resDTO.setTotal(total); + + return resDTO; + } + + + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 5deee0ead6..72eec412ca 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -13,26 +13,23 @@ import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis; import com.epmet.commons.tools.redis.common.bean.HouseInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.dao.IcBuildingDao; -import com.epmet.dao.IcBuildingUnitDao; -import com.epmet.dao.IcHouseDao; -import com.epmet.dao.IcNeighborHoodDao; +import com.epmet.dao.*; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.IcResiCategoryStatsConfigDTO; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; +import com.epmet.dto.region.LogOperationResultDTO; import com.epmet.dto.result.*; -import com.epmet.entity.IcBuildingEntity; -import com.epmet.entity.IcBuildingUnitEntity; -import com.epmet.entity.IcHouseEntity; -import com.epmet.entity.IcNeighborHoodEntity; +import com.epmet.entity.*; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseTypeEnums; @@ -40,10 +37,14 @@ import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.redis.IcHouseRedis; +import com.epmet.service.CustomerAgencyService; import com.epmet.service.IcHouseService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.record.PageBreakRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -79,6 +80,10 @@ public class IcHouseServiceImpl extends BaseServiceImpl().ok(checkHomeInfoResultInfo); } + + @Override + public HouseCountPictureResultDTO getHousePurposeCount(HouseCountPictureFormDTO dto) { + + HouseCountPictureResultDTO resultDTO = new HouseCountPictureResultDTO(); + + resultDTO.setTotal(0); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + resultDTO.setList(baseDao.getHousePurposeCount(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd())); + + resultDTO.getList().forEach( + result->resultDTO.setTotal(resultDTO.getTotal()+result.getCount()) + ); + + return resultDTO; + } + + @Override + public HouseCountPictureResultDTO getHouseStatusCount(HouseCountPictureFormDTO dto) { + + HouseCountPictureResultDTO resultDTO = new HouseCountPictureResultDTO(); + + resultDTO.setTotal(0); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + + resultDTO.setList(baseDao.getHouseStatusCount(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd())); + + resultDTO.getList().forEach( + result->resultDTO.setTotal(resultDTO.getTotal()+result.getCount()) + ); + + return resultDTO; + } + + @Override + public PageData getHousePictureList(HouseCountPictureFormDTO dto) { + // 列表/导出查询 + PageHelper.startPage(dto.getPageNo(), dto.getPageSize()); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + + List list = baseDao.getHousePictureList(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd(),dto.getPurpose(),dto.getRentFlag()); + + list.forEach(entity->{ + String[] agencyIds = entity.getOrgIdPath().split(":"); + LambdaQueryWrapper queryWrapperAgency = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapperAgency); + customerAgencyEntities.forEach(agency->{ + if (agency.getLevel().equals("district")){ + entity.setDistrictName(agency.getOrganizationName()); + }else if (agency.getLevel().equals("street")){ + entity.setStreetName(agency.getOrganizationName()); + }else if (agency.getLevel().equals("community")){ + entity.setCommunityName(agency.getOrganizationName()); + } + }); + }); + + PageInfo pageInfo = new PageInfo<>(list); + + return new PageData<>(list,pageInfo.getTotal()); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 2d677b5217..785bfc799f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -190,17 +190,24 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl getNeighborHoodOptions(String agencyId, String gridId,String staffId,String customerId) { - if (StringUtils.isBlank(agencyId)&&StringUtils.isEmpty(gridId)) { - log.info("agencyId与gridId都为空时,默认查询当前工作人员所属组织下的小区"); - CustomerStaffInfoCacheResult result= CustomerStaffRedis.getStaffInfo(customerId,staffId); + public List getNeighborHoodOptions(String agencyId, String gridId, + List agencyIds, List gridIds, + String staffId,String customerId) { + if (StringUtils.isBlank(agencyId) + && StringUtils.isEmpty(gridId) + && CollectionUtils.isEmpty(agencyIds) + && CollectionUtils.isEmpty(gridIds)) { + log.info("agencyId(s)与gridId(s)都为空时,默认查询当前工作人员所属组织下的小区"); + CustomerStaffInfoCacheResult result = CustomerStaffRedis.getStaffInfo(customerId, staffId); if (null == result || StringUtils.isBlank(result.getAgencyId())) { log.error(String.format("staffId:%s,工作人员缓存信息查询异常", staffId)); return Collections.emptyList(); } - agencyId=result.getAgencyId(); + agencyId = result.getAgencyId(); } + // 此处支持多种条件,or连接 + // 查缓存 String cacheKey = RedisKeys.getNeighborhoodOptions(agencyId, gridId); List cachedKeys = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference>() { @@ -212,11 +219,16 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(agencyId),IcNeighborHoodEntity::getAgencyId, agencyId); - wrapper.eq(StringUtils.isNotBlank(gridId), IcNeighborHoodEntity::getGridId, gridId); + wrapper.eq(StringUtils.isNotBlank(agencyId), IcNeighborHoodEntity::getAgencyId, agencyId) + .or() + .eq(StringUtils.isNotBlank(gridId), IcNeighborHoodEntity::getGridId, gridId) + .or() + .in(!CollectionUtils.isEmpty(agencyIds), IcNeighborHoodEntity::getAgencyId, agencyIds) + .or() + .in(!CollectionUtils.isEmpty(gridIds), IcNeighborHoodEntity::getGridId, gridIds); wrapper.last("ORDER BY CONVERT ( NEIGHBOR_HOOD_NAME USING gbk ) ASC"); List list = baseDao.selectList(wrapper); - if(CollectionUtils.isEmpty(list)) { + if (CollectionUtils.isEmpty(list)) { return Collections.emptyList(); } List datas = list.stream().map(item -> { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java new file mode 100644 index 0000000000..a47241caf1 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java @@ -0,0 +1,310 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.Constant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.dao.StaffLoginLogDao; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerStaffDTO; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.entity.StaffLoginLogEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.service.CustomerAgencyService; +import com.epmet.service.StaffLoginLogService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Service +public class StaffLoginLogServiceImpl extends BaseServiceImpl implements StaffLoginLogService { + @Autowired + private EpmetUserOpenFeignClient userOpenFeignClient; + + + /** + * 登录,插入记录 + * + * @param staffId + * @param loginTime + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void saveLog(String staffId, Date loginTime) { + CustomerStaffDTO form = new CustomerStaffDTO(); + form.setUserId(staffId); + Result result = userOpenFeignClient.getCustomerStaffInfoByUserId(form); + if (!result.success() || null == result.getData()) { + return; + } + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(result.getData().getCustomerId(), staffId); + + StaffLoginLogEntity logEntity = new StaffLoginLogEntity(); + logEntity.setCustomerId(result.getData().getCustomerId()); + logEntity.setStaffId(staffId); + logEntity.setStaffName(staffInfoCacheResult.getRealName()); + logEntity.setMobile(staffInfoCacheResult.getMobile()); + logEntity.setAgencyId(staffInfoCacheResult.getAgencyId()); + CustomerAgencyDTO customerAgencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(staffInfoCacheResult.getAgencyId()); + logEntity.setAgencyLevel(customerAgencyDTO.getLevel()); + logEntity.setPid(customerAgencyDTO.getPid()); + if (StringUtils.isBlank(customerAgencyDTO.getPid()) || NumConstant.ZERO_STR.equals(customerAgencyDTO.getPid())) { + logEntity.setOrgIdPath(customerAgencyDTO.getId()); + } else { + logEntity.setOrgIdPath(customerAgencyDTO.getPids().concat(StrConstant.COLON).concat(customerAgencyDTO.getId())); + } + logEntity.setLoginTime(loginTime); + baseDao.insert(logEntity); + } + + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param orgId 为空时,默认当前登录用户所属组织id + * @param level :组织级别(社区级:community, 乡(镇、街道)级:street,区县级: district,市级: city;省级:province) + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + @Override + public LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + level = staffInfoCacheResult.getLevel(); + } + String orgIdPath = SpringContextUtils.getBean(CustomerAgencyService.class).getOrgIdPath(orgId); + LoginLogCountByLevelResultDTO resultDTO = new LoginLogCountByLevelResultDTO(); + if (Constant.CITY.equals(level)) { + //市级账号登录 + LambdaQueryWrapper cityWrapper = new LambdaQueryWrapper<>(); + cityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCityCount(baseDao.selectCount(cityWrapper)); + + // 市下面区县账号 + LambdaQueryWrapper districtWrapper = new LambdaQueryWrapper<>(); + districtWrapper.eq(StaffLoginLogEntity::getPid, orgId) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.DISTRICT) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper)); + + // 市级下面所有街道 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + // 市级下面所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.DISTRICT.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + + //只展示本区县的登录情况 + LambdaQueryWrapper districtWrapper = new LambdaQueryWrapper<>(); + districtWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper)); + + // 区县下所有的街道 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + // 去线下所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.STREET.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + resultDTO.setDistrictCount(NumConstant.ONE_NEG); + + // 只展示本街道的登录情况 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + + // 街道下所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.COMMUNITY.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + resultDTO.setDistrictCount(NumConstant.ONE_NEG); + resultDTO.setStreetCount(NumConstant.ONE_NEG); + + // 只展示本社区的登录情况 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + } + return resultDTO; + } + + @Override + public PageData getAccountActivityInfo(CountActivityFormDTO formDTO) { + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List accountActivityInfos = baseDao.selectListActivityInfo(formDTO); + PageInfo pageInfo = new PageInfo<>(accountActivityInfos); + return new PageData<>(accountActivityInfos, pageInfo.getTotal(),formDTO.getPageSize()); + } + List accountActivityInfos = baseDao.selectListActivityInfo(formDTO); + int total = CollectionUtils.isEmpty(accountActivityInfos) ? NumConstant.ZERO : accountActivityInfos.size(); + return new PageData<>(accountActivityInfos, total); + } + + @Override + public ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO) { + return baseDao.selectOneActivityTotal(formDTO); + } + + /** + * 下级社区账号登录次数排名 + * + * @param formDTO + * @return + */ + @Override + public PageData pageCommunityCount(CommunityLoginFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getOrgId())) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + formDTO.setOrgId(staffInfoCacheResult.getAgencyId()); + // formDTO.setLevel(staffInfoCacheResult.getLevel()); + } + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), formDTO.getPageSize()); + } + // 不分页 + List list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate()); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } + + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @return + */ + @Override + public PageData querySubCount(String orgId, String level, Date startDate, Date endDate) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + } + List list = baseDao.querySubCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData(list, total, total); + } + + + /** + * 查看区县 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return 返回agencyId,agencyName,count + */ + @Override + public PageData pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + } + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.pageDistrictCount(orgId, startDate, endDate); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + // 不分页 + List list = baseDao.pageDistrictCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } + + /** + * 查看街镇 + * + * @param orgId + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + @Override + public PageData streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + } + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.pageStreetCount(orgId, startDate, endDate); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + // 不分页 + List list = baseDao.pageStreetCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 882249b1ad..7f3f76b2d0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -210,6 +210,26 @@ ORDER BY ca.created_time DESC + + + + select level as level,count(*) as count + from customer_agency + where DEL_FLAG = 0 + and PIDS like concat(#{pids},'%') + group by level + + + + + + + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcCoverageCategoryDictDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcCoverageCategoryDictDao.xml index dce1591d30..d7a99f153b 100755 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcCoverageCategoryDictDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcCoverageCategoryDictDao.xml @@ -7,11 +7,14 @@ INSERT INTO ic_coverage_category_dict ( id, customer_id, - category_key, - category_name, - place_type, - coverage_type, - sort, + CATEGORY_KEY, + CATEGORY_NAME, + PLACE_TYPE, + PLACE_TYPE_IN_ANALYSIS, + MENU_URL, + DATA_TYPE, + COVERAGE_TYPE, + SORT, del_flag, revision, created_by, @@ -19,24 +22,27 @@ updated_by, updated_time ) SELECT - MD5(UUID()), - #{customerId}, - category_key, - category_name, - place_type, - coverage_type, - sort, - del_flag, - revision, - 'APP_USER', - NOW(), - 'APP_USER', - NOW() + MD5(UUID()), + #{customerId}, + CATEGORY_KEY, + CATEGORY_NAME, + PLACE_TYPE, + PLACE_TYPE_IN_ANALYSIS, + MENU_URL, + DATA_TYPE, + COVERAGE_TYPE, + SORT, + del_flag, + revision, + 'APP_USER', + NOW(), + 'APP_USER', + NOW() FROM ic_coverage_category_dict WHERE del_flag = '0' - AND customer_id = 'default' + AND customer_id = 'default' + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 222062704a..b3ae7973eb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -775,5 +775,136 @@ CAST( ih.DOOR_NAME AS SIGNED ), CONVERT ( ih.DOOR_NAME USING gbk ), ih.SORT ASC + + + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml new file mode 100644 index 0000000000..13a1b5da8e --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml index bd7853c4e0..d7e0d5ff39 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml @@ -28,6 +28,7 @@ and e.GRID_ID=#{orgId} + and e.DEL_FLAG = '0' and CUSTOMER_ID = #{customerId} and HAPPEN_TIME >= #{queryStartTime} and HAPPEN_TIME #{queryEndTime} @@ -81,7 +82,8 @@ select date_format(e.HAPPEN_TIME, '%Y-%m') monthName from ic_event e - e.HAPPEN_TIME >= date_format(#{queryStartTime}, '%Y-%m') + e.DEL_FLAG = '0' + and e.HAPPEN_TIME >= date_format(#{queryStartTime}, '%Y-%m') and e.HAPPEN_TIME date_format(#{queryEndTime}, '%Y-%m') and e.GRID_ID =#{orgId} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/resi/ResiPortrayalCommonFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/resi/ResiPortrayalCommonFormDTO.java new file mode 100644 index 0000000000..d5f763ceb4 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/resi/ResiPortrayalCommonFormDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.form.resi; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description 烟台居民画像入参 + * @Author yzm + * @Date 2023/4/11 17:03 + */ +@Data +public class ResiPortrayalCommonFormDTO extends PageFormDTO { + /** + * /gov/org/customeragency/agencygridtree返回的agencyId + */ + private String orgId; + /** + * /gov/org/customeragency/agencygridtree返回level=grid时,orgType:grid;其他情况orgType:agency + */ + private String orgType; + + /** + * 查询居民列表 + * 年龄饼图/学历饼图返回的code + */ + private String code; + /** + * 学历:education + * 年龄:age + */ + private String codeType; +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalDetailDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalDetailDTO.java new file mode 100644 index 0000000000..2cb38e742a --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalDetailDTO.java @@ -0,0 +1,121 @@ +package com.epmet.dto.result.resi; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * @Description 烟台居民画像,居民列表 + * @Author yzm + * @Date 2023/4/12 10:10 + */ +@Data +public class ResiPortrayalDetailDTO { + /** + * 居民id + */ + @ExcelIgnore + private String icResiUserId; + + @ExcelIgnore + private String gridId; + + @ExcelProperty(value = "所属网格") + @ColumnWidth(30) + private String gridName; + + /** + * 所属小区ID + */ + @ExcelIgnore + private String villageId; + @ExcelIgnore + private String villageName; + /** + * 所属楼宇Id + */ + @ExcelIgnore + private String buildId; + @ExcelIgnore + private String buildName; + /** + * 单元id + */ + @ExcelIgnore + private String unitId; + @ExcelIgnore + private String unitName; + + /** + * 所属家庭Id + */ + @ExcelIgnore + private String homeId; + + @ExcelProperty(value = "所属房屋") + @ColumnWidth(30) + private String homeName; + + /** + * 所属家庭号 + * 101 + */ + @ExcelIgnore + private String doorName; + + + /** + * 姓名 + */ + @ExcelProperty(value = "姓名") + @ColumnWidth(25) + private String name; + /** + * 手机号 + */ + @ExcelProperty(value = "手机号") + @ColumnWidth(25) + private String mobile; + /** + * 性别:1男;2女;0未知 + */ + @ExcelIgnore + private String gender; + /** + * 性别名称 + */ + @ExcelProperty(value = "性别") + @ColumnWidth(10) + private String genderName; + /** + * 身份证 + */ + @ExcelProperty(value = "身份证号") + @ColumnWidth(25) + private String idCard; + + @ExcelProperty(value = "出生日期") + @ColumnWidth(25) + private String birthday; + + /** + * 年龄 + */ + @ExcelProperty(value = "年龄") + @ColumnWidth(10) + private Integer age; + /** + * 学历key + */ + @ExcelIgnore + private String educationCode; + /** + * 学历 + */ + @ExcelProperty(value = "学历") + @ColumnWidth(10) + private String educationName; + +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalResultDTO.java new file mode 100644 index 0000000000..4f0b95072a --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.result.resi; + +import lombok.Data; + +/** + * @Description 烟台居民画像返参 + * @Author yzm + * @Date 2023/4/11 17:04 + */ +@Data +public class ResiPortrayalResultDTO { + /** + * 居民数量 + */ + private Integer totalResi; + /** + * 年龄分布:50岁以下:0;50-59岁:1;60-69岁:2;70-79岁:3;80岁以上:4 + * 学历分布:学历key + */ + private String code; + + /** + * 学历分布:小学及文盲/初中..... + * 年龄分布:50岁以下/50-59岁/60-69岁/70-79岁/80岁以上 + */ + private String codeName; +} + diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 9fea75c217..3df240c3f1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -59,9 +59,12 @@ import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.*; import com.epmet.dto.form.resi.IcResiPageNonDynamicFormDTO; +import com.epmet.dto.form.resi.ResiPortrayalCommonFormDTO; import com.epmet.dto.result.*; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.IcResiNonDynamicResultDTO; +import com.epmet.dto.result.resi.ResiPortrayalDetailDTO; +import com.epmet.dto.result.resi.ResiPortrayalResultDTO; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.PartyMemberAgeExportExcel; import com.epmet.excel.PartyMemberEducationExportExcel; @@ -463,7 +466,6 @@ public class IcResiUserController implements ResultDataResolver { /** * desc: 导出居民信息 * - * @param customerId * @param tokenDto * @param pageFormDTO * @param response @@ -618,7 +620,6 @@ public class IcResiUserController implements ResultDataResolver { * * @param tokenDto * @param pageFormDTO - * @param response * @return void * @author LiuJanJun * @date 2021/11/19 4:24 下午 @@ -1451,7 +1452,6 @@ public class IcResiUserController implements ResultDataResolver { /** * Desc: 居民首次进入小程序,可以根据输入身份证信息查询在数字社区居民信息中的网格,匹配不成功提示 - * @param tokenDto * @param formDTO * @author zxc * @date 2022/8/5 11:17 @@ -1529,4 +1529,95 @@ public class IcResiUserController implements ResultDataResolver { return new Result>().ok(icResiUserService.renHuConditionList(formDTO)); } + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 接口地址:http://yapi.elinkservice.cn/project/356/interface/api/cat_1370 + * 居民年龄分布饼图 + * + * @param formDTO + * @return + */ + @PostMapping("age-distribute") + public Result> queryAgeDistribute(@LoginUser TokenDto tokenDto,@RequestBody ResiPortrayalCommonFormDTO formDTO) { + return new Result>().ok(icResiUserService.queryAgeDistribute(tokenDto.getCustomerId(),tokenDto.getUserId(),formDTO.getOrgId(), formDTO.getOrgType())); + } + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 接口地址:http://yapi.elinkservice.cn/project/356/interface/api/cat_1370 + * 居民学历分布饼图 + * + * @param formDTO + * @return + */ + @PostMapping("education-distribute") + public Result> queryEducationDistribute(@LoginUser TokenDto tokenDto,@RequestBody ResiPortrayalCommonFormDTO formDTO) { + return new Result>().ok(icResiUserService.queryEducationDistribute(tokenDto.getCustomerId(),tokenDto.getUserId(),formDTO.getOrgId(), formDTO.getOrgType())); + } + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 居民画像,居民列表 + * + * @param tokenDto + * @param formDTO + * @return + */ + @MaskResponse(fieldNames = {"mobile", "idCard"},fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD}) + @PostMapping("portrayal-list") + public Result> queryPortrayalResiList(@LoginUser TokenDto tokenDto, @RequestBody ResiPortrayalCommonFormDTO formDTO) { + return new Result>().ok(icResiUserService.queryPortrayalResiList(tokenDto.getCustomerId(), tokenDto.getUserId(), + formDTO.getPageNo(), formDTO.getPageSize(), + formDTO.getOrgId(), formDTO.getOrgType(), + formDTO.getCodeType(), + formDTO.getCode())); + } + + /** + * 11、导出列表数据 + * + * @param response + * @param formDTO + * @throws Exception + */ + @PostMapping("portrayal-listexport") + public void exportMonitoringEquipment(HttpServletResponse response, + @RequestBody ResiPortrayalCommonFormDTO formDTO) throws Exception { + formDTO.setIsPage(false); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "居民画像-居民列表" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), ResiPortrayalDetailDTO.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + // 默认查询本组织及下级 + data = icResiUserService.queryPortrayalResiList(EpmetRequestHolder.getLoginUserCustomerId(),EpmetRequestHolder.getLoginUserId(), + formDTO.getPageNo(),formDTO.getPageSize(), + formDTO.getOrgId(),formDTO.getOrgType(), + formDTO.getCodeType(),formDTO.getCode()); + list = data.getList(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("居民画像-居民列表export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index bb215e3734..f69b949563 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -24,6 +24,8 @@ import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.IcVolunteerPolyDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.dto.result.resi.ResiPortrayalDetailDTO; +import com.epmet.dto.result.resi.ResiPortrayalResultDTO; import com.epmet.entity.IcResiUserEntity; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; @@ -66,8 +68,9 @@ public interface IcResiUserDao extends BaseDao { @Param("conditions") List conditions, @Param("resultColumns") List resultColumns, @Param("subTables") List subTables, - @Param("currentStaffAgencyId") String currentStaffAgencyId, - @Param("staffOrgPath") String staffOrgPath, + @Param("currentStaffAgencyId") List currentStaffAgencyIds, + @Param("staffOrgPaths") List staffOrgPaths, + @Param("gridIds") Set gridIds, @Param("resultTableName") String resultTableName, @Param("keyword") String keyword, @Param("groupByTables") Set groupByTables); @@ -450,4 +453,32 @@ public interface IcResiUserDao extends BaseDao { List getImportUserList(@Param("customerId")String customerId,@Param("agencyId")String agencyId); + /** + * 烟台居民画像:按照学历分组,查询居民数量 + * @param customerId + * @param orgId + * @param orgType:agency/grid + * @return + */ + List queryEducationDistribute(@Param("customerId") String customerId, + @Param("orgId") String orgId, + @Param("orgType") String orgType); + + List selectAgeAgeDistribute(@Param("customerId") String customerId, + @Param("orgId") String orgId, + @Param("orgType") String orgType); + + /** + * @param customerId + * @param orgId + * @param orgType + * @param codeType 学历:education 年龄:age + * @param code + * @return 居民画像,居民列表 + */ + List selectPortrayalResiList(@Param("customerId") String customerId, + @Param("orgId") String orgId, + @Param("orgType") String orgType, + @Param("codeType")String codeType, + @Param("code") String code); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index c29d0cb69d..c43853500a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -28,6 +28,8 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.IcResiNonDynamicResultDTO; +import com.epmet.dto.result.resi.ResiPortrayalDetailDTO; +import com.epmet.dto.result.resi.ResiPortrayalResultDTO; import com.epmet.entity.IcResiUserEntity; import com.epmet.excel.support.ExportResiUserItemDTO; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; @@ -542,4 +544,38 @@ public interface IcResiUserService extends BaseService { List renHuConditionList(RHZKStatisticsFormDTO formDTO); + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 接口地址:http://yapi.elinkservice.cn/project/356/interface/api/cat_1370 + * 居民年龄分布饼图 + * + * @param customerId + * @param staffId + * @param orgId + * @param orgType + * @return + */ + List queryAgeDistribute(String customerId, String staffId, String orgId, String orgType); + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 接口地址:http://yapi.elinkservice.cn/project/356/interface/api/cat_1370 + * 居民学历分布饼图 + * + * @param orgId + * @param orgType agency/grid + * @return + */ + List queryEducationDistribute(String customerId, String staffId, String orgId, String orgType); + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 居民画像,居民列表 + * + * @return + */ + PageData queryPortrayalResiList(String customerId, String staffId, + Integer pageNo, Integer pageSize, + String orgId, String orgType, + String codeType,String code); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 7888b05c08..3aac1bbbd0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -62,6 +62,8 @@ import com.epmet.dto.result.*; import com.epmet.dto.result.demand.IcResiDemandDictDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.IcResiNonDynamicResultDTO; +import com.epmet.dto.result.resi.ResiPortrayalDetailDTO; +import com.epmet.dto.result.resi.ResiPortrayalResultDTO; import com.epmet.entity.*; import com.epmet.enums.RenHuConditionEnum; import com.epmet.excel.EpidemicPreventionExportExcel; @@ -81,6 +83,7 @@ import com.google.common.cache.CacheBuilder; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; @@ -181,7 +184,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl ORG_FIELDS = Arrays.asList("AGENCY_IDS", "GRID_IDS", "AGENCY_ID", "GRID_ID"); private QueryWrapper getWrapper(Map params) { String id = (String) params.get(FieldConstant.ID_HUMP); @@ -918,36 +924,55 @@ public class IcResiUserServiceImpl extends BaseServiceImpl resultColumns = resultColumnRes.getData(); // 查询结果列对应的表: Set resultColumnTables = resultColumns.stream().map(IcFormResColumnDTO::getTableName).collect(Collectors.toSet()); - List queryAgencyIdList = formDTO.getConditions().stream() - .filter(o -> IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && "AGENCY_ID".equals(o.getColumnName()) - && CollectionUtils.isNotEmpty(o.getColumnValue()) && StringUtils.isNotBlank(o.getColumnValue().get(NumConstant.ZERO))) - .flatMap(o -> o.getColumnValue().stream()).collect(Collectors.toList()); + + // List queryAgencyIdList = formDTO.getConditions().stream() + // .filter(o -> IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && "AGENCY_IDS".equals(o.getColumnName()) + // && CollectionUtils.isNotEmpty(o.getColumnValue()) && StringUtils.isNotBlank(o.getColumnValue().get(NumConstant.ZERO))) + // .flatMap(o -> o.getColumnValue().stream()).collect(Collectors.toList()); + + // 组织和网格单独处理 + Set queryAgencyIdList = new HashSet<>(); + Set queryGridIdList = new HashSet<>(); + + // 将以下几列单独提出来,组合起来,放入集合,自动去重 + formDTO.getConditions().stream().forEach(c -> { + if (IcResiUserConstant.IC_RESI_USER.equals(c.getTableName()) && CollectionUtils.isNotEmpty(c.getColumnValue()) + && StringUtils.isNotBlank(c.getColumnValue().get(NumConstant.ZERO))) { + if ("AGENCY_IDS".equals(c.getColumnName())) { + queryAgencyIdList.addAll(c.getColumnValue()); + } else if ("GRID_IDS".equals(c.getColumnName())) { + queryGridIdList.addAll(c.getColumnValue()); + } else if ("AGENCY_ID".equals(c.getColumnName())) { + queryAgencyIdList.addAll(c.getColumnValue()); + } else if ("GRID_ID".equals(c.getColumnName())) { + queryGridIdList.addAll(c.getColumnValue()); + } + } + }); + + // 移除需要特殊处理的conditions + formDTO.getConditions().removeIf(o->IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && ORG_FIELDS.contains(o.getColumnName())); //添加数据权限 - String staffOrgPath; - String agencyId; - //如果查询条件中 有居民表的agencyId 则匹配查询该组织下的 数据 - if (queryAgencyIdList.isEmpty()){ + List staffOrgPaths; + List agencyIds = null; + //如果查询条件中 没有有居民表的agencyId,则查询该工作人员所属组织的信息 + if (queryAgencyIdList.isEmpty() && queryGridIdList.isEmpty()){ CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); - agencyId = staffInfoCacheResult.getAgencyId(); - if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { - staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId()); - } else { - staffOrgPath = staffInfoCacheResult.getAgencyId(); - } + agencyIds = Arrays.asList(staffInfoCacheResult.getAgencyId()); + + String op = PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds()); + staffOrgPaths = Arrays.asList(op); } else { - formDTO.getConditions().removeIf(o->IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && "AGENCY_ID".equals(o.getColumnName())); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(queryAgencyIdList.get(NumConstant.ZERO)); - if (agencyInfo == null){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取组织信息失败"); - } - agencyId = agencyInfo.getId(); - staffOrgPath = agencyInfo.getPids(); - if (StringUtils.isBlank(staffOrgPath)){ - staffOrgPath = agencyId; - }else{ - staffOrgPath = staffOrgPath+StrConstant.COLON+agencyInfo.getId(); - } + // 将组织id列表,转化为组织orgIdPath列表 + staffOrgPaths = queryAgencyIdList.stream().map(agId -> { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agId); + if (agencyInfo == null) { + String errorMsg = "查询机关单位失败:" + agId; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + return PidUtils.convertPid2OrgIdPath(agId, agencyInfo.getPids()); + }).collect(Collectors.toList()); } // 查询列表展示项需要用到哪些子表 Result> subTablesRes = operCustomizeOpenFeignClient.querySubTables(queryDTO1); @@ -976,14 +1001,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageInfo = new PageInfo<>(); if (null == formDTO.getIsPage() || formDTO.getIsPage()) { //分页 - String finalStaffOrgPath = staffOrgPath; + List finalStaffOrgPath = staffOrgPaths; + List finalAgencyIds = agencyIds; pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, finalSubTables, - agencyId, finalStaffOrgPath,null, formDTO.getKeyword(), + finalAgencyIds, + finalStaffOrgPath, + queryGridIdList, + null, + formDTO.getKeyword(), groupByTables)); } else { List> list = baseDao.selectListResiMap(formDTO.getCustomerId(), @@ -991,8 +1021,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl resultColumns = resultColumnRes.getData(); // 查询结果列对应的表: Set resultColumnTables = resultColumns.stream().map(IcFormResColumnDTO::getTableName).collect(Collectors.toSet()); - List queryAgencyIdList = formDTO.getConditions().stream() - .filter(o -> IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && "AGENCY_ID".equals(o.getColumnName()) - && CollectionUtils.isNotEmpty(o.getColumnValue()) && StringUtils.isNotBlank(o.getColumnValue().get(NumConstant.ZERO))) - .flatMap(o -> o.getColumnValue().stream()).collect(Collectors.toList()); + + // 组织和网格单独处理 + Set queryAgencyIdList = new HashSet<>(); + Set queryGridIdList = new HashSet<>(); + + // 将以下几列单独提出来,组合起来,放入列表 + formDTO.getConditions().stream().forEach(c -> { + if (IcResiUserConstant.IC_RESI_USER.equals(c.getTableName()) && CollectionUtils.isNotEmpty(c.getColumnValue()) + && StringUtils.isNotBlank(c.getColumnValue().get(NumConstant.ZERO))) { + if ("AGENCY_IDS".equals(c.getColumnName())) { + queryAgencyIdList.addAll(c.getColumnValue()); + } else if ("GRID_IDS".equals(c.getColumnName())) { + queryGridIdList.addAll(c.getColumnValue()); + } else if ("AGENCY_ID".equals(c.getColumnName())) { + queryAgencyIdList.addAll(c.getColumnValue()); + } else if ("GRID_ID".equals(c.getColumnName())) { + queryGridIdList.addAll(c.getColumnValue()); + } + } + }); + + // 移除需要特殊处理的conditions + formDTO.getConditions().removeIf(o->IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && ORG_FIELDS.contains(o.getColumnName())); //添加数据权限 - String staffOrgPath; - String agencyId; - //如果查询条件中 有居民表的agencyId 则匹配查询该组织下的 数据 - if (queryAgencyIdList.isEmpty()){ + List staffOrgPaths; + List agencyIds = null; + //如果查询条件中 没有有居民表的agencyId,则查询该工作人员所属组织的信息 + if (queryAgencyIdList.isEmpty() && queryGridIdList.isEmpty()){ CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); - agencyId = staffInfoCacheResult.getAgencyId(); - if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { - staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId()); - } else { - staffOrgPath = staffInfoCacheResult.getAgencyId(); - } + agencyIds = Arrays.asList(staffInfoCacheResult.getAgencyId()); + + String op = PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds()); + staffOrgPaths = Arrays.asList(op); } else { - formDTO.getConditions().removeIf(o->IcResiUserConstant.IC_RESI_USER.equals(o.getTableName()) && "AGENCY_ID".equals(o.getColumnName())); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(queryAgencyIdList.get(NumConstant.ZERO)); - if (agencyInfo == null){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取组织信息失败"); - } - agencyId = agencyInfo.getId(); - staffOrgPath = agencyInfo.getPids(); - if (StringUtils.isBlank(staffOrgPath)){ - staffOrgPath = agencyId; - }else{ - staffOrgPath = staffOrgPath+StrConstant.COLON+agencyInfo.getId(); - } + // 将组织id列表,转化为组织orgIdPath列表 + staffOrgPaths = queryAgencyIdList.stream().map(agId -> { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agId); + if (agencyInfo == null) { + String errorMsg = "查询机关单位失败:" + agId; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + return PidUtils.convertPid2OrgIdPath(agId, agencyInfo.getPids()); + }).collect(Collectors.toList()); } + // 查询列表展示项需要用到哪些子表 Result> subTablesRes = operCustomizeOpenFeignClient.querySubTables(queryDTO1); List subTables = subTablesRes.getData(); @@ -3378,14 +3425,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> pageInfo = new PageInfo<>(); if (null == formDTO.getIsPage() || formDTO.getIsPage()) { //分页 - String finalStaffOrgPath = staffOrgPath; + List finalStaffOrgPath = staffOrgPaths; + List finalAgencyIds = agencyIds; pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectListResiMap(formDTO.getCustomerId(), formDTO.getFormCode(), formDTO.getConditions(), resultColumns, finalSubTables, - agencyId, finalStaffOrgPath,null, formDTO.getKeyword(), + finalAgencyIds, + finalStaffOrgPath, + queryGridIdList, + null, + formDTO.getKeyword(), groupByTables)); } else { List> list = baseDao.selectListResiMap(formDTO.getCustomerId(), @@ -3393,8 +3445,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl queryAgeDistribute(String customerId,String staffId,String orgId, String orgType) { + if (StringUtils.isBlank(orgId)) { + orgId = CustomerStaffRedis.getStaffInfo(customerId, staffId).getAgencyId(); + orgType = OrgTypeEnum.AGENCY.getCode(); + } + List resultList=getDefaultAgeDistribute(); + List list=baseDao.selectAgeAgeDistribute(customerId,orgId,orgType); + if(CollectionUtils.isEmpty(list)){ + return resultList; + } + Map resultMap = list.stream().collect(Collectors.toMap(ResiPortrayalResultDTO::getCode,ResiPortrayalResultDTO::getTotalResi)); + resultList.forEach(result->{ + if (MapUtils.isNotEmpty(resultMap) && resultMap.containsKey(result.getCode())) { + result.setTotalResi(resultMap.get(result.getCode())); + } + }); + return resultList; + } + + private List getDefaultAgeDistribute() { + List list = new ArrayList<>(); + for (int code = 0; code <= 4; code++) { + ResiPortrayalResultDTO resultDTO = new ResiPortrayalResultDTO(); + resultDTO.setTotalResi(NumConstant.ZERO); + resultDTO.setCode(String.valueOf(code)); + switch (code) { + case 0: + resultDTO.setCodeName("50岁以下"); + break; + case 1: + resultDTO.setCodeName("50-59岁"); + break; + case 2: + resultDTO.setCodeName("60-69岁"); + break; + case 3: + resultDTO.setCodeName("70-79岁"); + break; + case 4: + resultDTO.setCodeName("80岁以上"); + break; + default: + resultDTO.setCodeName(StrConstant.EPMETY_STR); + } + list.add(resultDTO); + } + return list; + } + + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 接口地址:http://yapi.elinkservice.cn/project/356/interface/api/cat_1370 + * 居民学历分布饼图 + * + * @param orgId + * @param orgType agency/grid + * @return + */ + @Override + public List queryEducationDistribute(String customerId, String staffId, String orgId, String orgType) { + if (StringUtils.isBlank(orgId)) { + orgId = CustomerStaffRedis.getStaffInfo(customerId, staffId).getAgencyId(); + orgType = OrgTypeEnum.AGENCY.getCode(); + } + // 获取文化程度字典 + DictListFormDTO dictFormDTO = new DictListFormDTO(); + dictFormDTO.setDictType(DictTypeEnum.EDUCATION.getCode()); + Result> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO); + if (!dictResult.success() || CollectionUtils.isEmpty(dictResult.getData())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "学历字典获取失败", "学历字典获取失败"); + } + //按照学历分组,查询居民数量 + List totalList = baseDao.queryEducationDistribute(customerId, orgId, orgType); + Map map = totalList.stream().collect(Collectors.toMap(ResiPortrayalResultDTO::getCode,ResiPortrayalResultDTO::getTotalResi)); + List resultDTOList = new ArrayList<>(); + dictResult.getData().forEach(dict -> { + ResiPortrayalResultDTO resultDTO = new ResiPortrayalResultDTO(); + resultDTO.setCode(dict.getValue()); + resultDTO.setCodeName(dict.getLabel()); + resultDTO.setTotalResi(NumConstant.ZERO); + if(MapUtils.isNotEmpty(map)&&map.containsKey(dict.getValue())){ + resultDTO.setTotalResi(map.get(dict.getValue())); + } + resultDTOList.add(resultDTO); + }); + return resultDTOList; + } + + + /** + * 烟台需求:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98 + * 居民画像,居民列表 + * + * @param customerId + * @param staffId + * @param pageNo + * @param pageSize + * @param orgId + * @param orgType + * @param codeType 学历:education 年龄:age + * @param code:年龄饼图/学历饼图返回的code + * @return + */ + @Override + public PageData queryPortrayalResiList(String customerId, String staffId, + Integer pageNo, Integer pageSize, + String orgId, String orgType, + String codeType, + String code) { + // 获取文化程度字典 + DictListFormDTO dictFormDTO = new DictListFormDTO(); + dictFormDTO.setDictType(DictTypeEnum.EDUCATION.getCode()); + Result> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO); + if (!dictResult.success() || CollectionUtils.isEmpty(dictResult.getData())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "学历字典获取失败", "学历字典获取失败"); + } + Map educationMap = dictResult.getData().stream().collect(Collectors.toMap(DictListResultDTO::getValue, DictListResultDTO::getLabel)); + + if (StringUtils.isBlank(orgId)) { + orgId = CustomerStaffRedis.getStaffInfo(customerId, staffId).getAgencyId(); + orgType = OrgTypeEnum.AGENCY.getCode(); + } + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.selectPortrayalResiList(customerId, orgId, orgType,codeType, code); + if(CollectionUtils.isNotEmpty(list)){ + Set houseIds=list.stream().map(m -> m.getHomeId()).collect(Collectors.toSet()); + //查询房子名称 + Result> houseInfoRes = govOrgOpenFeignClient.queryListHouseInfo(houseIds, customerId); + List houseInfoDTOList = houseInfoRes.success() && !CollectionUtils.isEmpty(houseInfoRes.getData()) ? houseInfoRes.getData() : new ArrayList<>(); + Map houseInfoMap = houseInfoDTOList.stream().collect(Collectors.toMap(HouseInfoDTO::getHomeId, Function.identity())); + + list.forEach(resi -> { + // 学历名称 + resi.setEducationName(educationMap.get(resi.getEducationCode())); + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(resi.getGridId()); + if (null != gridInfoCache) { + resi.setGridName(gridInfoCache.getGridNamePath()); + } + if (houseInfoMap.containsKey(resi.getHomeId()) && null != houseInfoMap.get(resi.getHomeId())) { + HouseInfoDTO houseInfoDTO = houseInfoMap.get(resi.getHomeId()); + String buildName = StringUtils.isNotBlank(houseInfoDTO.getBuildingName()) ? houseInfoDTO.getBuildingName() : StrConstant.EPMETY_STR; + resi.setBuildName(buildName); + + String neighBorName = StringUtils.isNotBlank(houseInfoDTO.getNeighborHoodName()) ? houseInfoDTO.getNeighborHoodName() : StrConstant.EPMETY_STR; + resi.setVillageName(neighBorName); + + String unitName = StringUtils.isNotBlank(houseInfoDTO.getUnitName()) ? houseInfoDTO.getUnitName() : StrConstant.EPMETY_STR; + resi.setUnitName(unitName); + + String doorName = StringUtils.isNotBlank(houseInfoDTO.getDoorName()) ? houseInfoDTO.getDoorName() : StrConstant.EPMETY_STR; + resi.setDoorName(doorName); + resi.setHomeName(neighBorName.concat(buildName).concat(unitName).concat(doorName)); + } + }); + } + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 6a8d513121..229652a45f 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -90,7 +90,24 @@ AND ${resultTableName}.ID IS NOT NULL - and ic_resi_user.pids like concat(#{staffOrgPath},'%') + + and ( + + ic_resi_user.pids like concat(#{orgIdPath},'%') + + + or + + + + ic_resi_user.GRID_ID in ( + + #{gridId} + + ) + + ) + @@ -108,7 +125,47 @@ - and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} <= #{subCondition.columnValue[1]} + + + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) <= #{subCondition.columnValue[1]} + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + @@ -163,7 +220,47 @@ - and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} <= #{subCondition.columnValue[1]} + + + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) <= #{subCondition.columnValue[1]} + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + @@ -1498,4 +1595,121 @@ + + + + + + + +