Browse Source

Merge remote-tracking branch 'origin_elink/yantai_zhengwu_master'

# Conflicts:
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
master
yinzuomei 3 years ago
parent
commit
0b2e15f5b7
  1. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  2. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java
  3. 27
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/PidUtils.java
  4. 11
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java
  5. 32
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java
  6. 13
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java
  7. 34
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java
  8. 41
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java
  9. 42
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java
  10. 15
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java
  11. 41
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java
  12. 20
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java
  13. 23
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java
  14. 33
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java
  15. 23
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java
  16. 24
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java
  17. 37
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java
  18. 44
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java
  19. 30
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java
  20. 37
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java
  21. 24
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java
  22. 17
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java
  23. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java
  24. 46
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java
  25. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java
  26. 113
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java
  27. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java
  28. 154
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java
  29. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  30. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java
  31. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java
  32. 75
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java
  33. 73
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java
  34. 50
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java
  35. 45
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java
  36. 28
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java
  37. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java
  38. 110
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java
  39. 37
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  40. 12
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java
  41. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java
  42. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  43. 97
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java
  44. 152
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  45. 52
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java
  46. 91
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  47. 28
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
  48. 310
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java
  49. 79
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  50. 44
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcCoverageCategoryDictDao.xml
  51. 48
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml
  52. 131
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  53. 189
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml
  54. 4
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml
  55. 33
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/resi/ResiPortrayalCommonFormDTO.java
  56. 121
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalDetailDTO.java
  57. 28
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/resi/ResiPortrayalResultDTO.java
  58. 97
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  59. 35
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  60. 36
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  61. 349
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  62. 220
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

5
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";
/**
* 项目操作日志消费组
*/

5
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组织-组织/网格/部门
*/

27
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();
}
}

11
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<String> agencyIds;
/**
* 上级组织id
*/
@ -69,6 +75,11 @@ public class IcNeighborHoodDTO implements Serializable {
*/
private String gridId;
/**
* gridId列表
*/
private List<String> gridIds;
/**
* 网格
*/

32
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;
}

13
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;
/**
* 场所区域
*/

34
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;
}

41
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;
}

42
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;
}

15
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;
}

41
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;
}

20
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;
}

23
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;
}

33
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;
}

23
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;
}

24
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<HouseCountPictureListResultDTO> list;
}

37
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;
}

44
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 = "";
}

30
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 = "";
}

37
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;
}

24
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;
}
}

17
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<EnterpriseCountPlaceTypeDetailDTO> list;
}

29
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;
}

46
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<StaffInAgencyListResultDTO>().ok(customerAgencyService.staffInAgencyList(tokenDTO.getUserId()));
}
/**
* @param tokenDTO
* @return
* @Author sun
* @Description 工作端-查询当前人员所属组织及所有下级组织到区县级
**/
@PostMapping("staffinAgencyLevelList")
public Result<StaffInAgencyListResultDTO> staffinAgencyLevelList(@LoginUser TokenDto tokenDTO) {
return new Result<StaffInAgencyListResultDTO>().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<java.util.List < com.epmet.dto.result.AgencyCountCensusResultDTO>>
* @Author: lichao
* @Date: 2023/4/7 14:48
*/
@GetMapping("getAgencyCountList")
public Result<List<AgencyCountCensusResultDTO>> getAgencyCountList(@RequestParam String agencyId){
return new Result<List<AgencyCountCensusResultDTO>>().ok(customerAgencyService.getAgencyCountList(agencyId));
}
/**
* @Description: 获取下级组织数量统计
* @param dto:
* @Return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.CommunityCountCensusResultDTO>>
* @Author: lichao
* @Date: 2023/4/7 15:08
*/
@PostMapping("getCommunityCountList")
public Result<List<CommunityCountCensusResultDTO>> getCommunityCountList(@RequestBody CommunityCountCensusFormDTO dto){
return new Result<List<CommunityCountCensusResultDTO>>().ok(customerAgencyService.getCommunityCountList(dto));
}
/**
* @Description: 根据agencyId获取下级社区列表
* @param dto:
* @Return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.CommunityListByAgencyIdResultDTO>>
* @Author: lichao
* @Date: 2023/4/7 16:49
*/
@PostMapping("getCommunityList")
public Result<PageData<CommunityListByAgencyIdResultDTO>> getCommunityList(@RequestBody CommunityCountCensusFormDTO dto){
return new Result<PageData<CommunityListByAgencyIdResultDTO>>().ok(customerAgencyService.getCommunityList(dto));
}
}

17
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<EnterpriseCountPlaceTypeResDTO> countType(@RequestBody EnterpriseCountPlaceTypeFormDTO formDTO) {
return new Result<EnterpriseCountPlaceTypeResDTO>().ok(icEnterpriseService.countType(formDTO.getOrgId(), formDTO.getOrgType()));
}
}

113
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<com.epmet.dto.result.HouseCountPictureResultDTO>
* @Author: lichao
* @Date: 2023/4/11 15:08
*/
@PostMapping("getHousePurposeCount")
public Result<HouseCountPictureResultDTO> getHousePurposeCount(@RequestBody HouseCountPictureFormDTO dto){
return new Result<HouseCountPictureResultDTO>().ok(icHouseService.getHousePurposeCount(dto));
}
/**
* @Description: 房屋画像-状态统计
* @param dto:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.HouseCountPictureResultDTO>
* @Author: lichao
* @Date: 2023/4/11 15:07
*/
@PostMapping("getHouseStatusCount")
public Result<HouseCountPictureResultDTO> getHouseStatusCount(@RequestBody HouseCountPictureFormDTO dto){
return new Result<HouseCountPictureResultDTO>().ok(icHouseService.getHouseStatusCount(dto));
}
/**
* @Description: 房屋画像-列表
* @param dto:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData < com.epmet.dto.result.HousePictureListResultDTO>>
* @Author: lichao
* @Date: 2023/4/11 16:20
*/
@PostMapping("getHousePictureList")
public Result<PageData<HousePictureListResultDTO>> getHousePictureList(@RequestBody HouseCountPictureFormDTO dto){
return new Result<PageData<HousePictureListResultDTO>>().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<HousePictureListResultDTO> data = null;
List<HousePictureListExcelDTO> 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<Object> 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();
}
}
}
}

10
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<List<OptionResultDTO>> getNeighborHoodOptions(@LoginUser TokenDto tokenDto, @RequestBody IcNeighborHoodDTO dto) {
return new Result<List<OptionResultDTO>>().ok(icNeighborHoodService.getNeighborHoodOptions(dto.getAgencyId(), dto.getGridId(),tokenDto.getUserId(),tokenDto.getCustomerId()));
return new Result<List<OptionResultDTO>>().ok(icNeighborHoodService.getNeighborHoodOptions(
dto.getAgencyId(),
dto.getGridId(),
dto.getAgencyIds(),
dto.getGridIds(),
tokenDto.getUserId(),
tokenDto.getCustomerId()));
}
/**

154
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<LoginLogCountByLevelResultDTO> countLevel(@RequestBody LoginLogCountByLevelFormDTO formDTO) {
return new Result<LoginLogCountByLevelResultDTO>().ok(staffLoginLogService.countLevel(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate()));
}
/**
* 下级社区账号登录次数排名
*
* @return
*/
@PostMapping("community-count")
public Result<PageData<CommunityLoginResultDTO>> communityCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.pageCommunityCount(formDTO));
}
/**
* 柱状图下级组织账号登录次数汇总
*
* @param formDTO
* @return
*/
@PostMapping("sub-count")
public Result<PageData<CommunityLoginResultDTO>> querySubCount(@RequestBody LoginLogCountByLevelFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.querySubCount(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate()));
}
/**
* 查看区县
*
* @param formDTO
* @return
*/
@PostMapping("district-count")
public Result<PageData<CommunityLoginResultDTO>> districtCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().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<PageData<CommunityLoginResultDTO>> streetCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().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<com.epmet.dto.result.yt.AccountActivityInfo>
* @author qushutong
* @date 2023/4/6 13:41
*/
@PostMapping("getAccountActivityInfo")
public Result<PageData<AccountActivityInfo>> getAccountActivityInfo(@RequestBody CountActivityFormDTO formDTO) {
return new Result<PageData<AccountActivityInfo>>().ok(staffLoginLogService.getAccountActivityInfo(formDTO));
}
/***
* 获取活跃度总数
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData < com.epmet.dto.result.yt.AccountActivityInfo>>
* @author qushutong
* @date 2023/4/6 17:35
*/
@PostMapping("getActivityTotal")
public Result<ActivityTatalInfo> getActivityTotal(@RequestBody CountActivityFormDTO formDTO) {
return new Result<ActivityTatalInfo>().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<AccountActivityInfo> res = staffLoginLogService.getAccountActivityInfo(formDTO);
if (!CollectionUtils.isEmpty(res.getList())) {
if("1".equals(formDTO.getIsActivity())){
// List<AccountActivityExcel> accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountActivityExcel.class);
ExcelUtils.exportExcelToTarget(response, null, res.getList(), AccountActivityExcel.class);
}else {
// List<AccountInactivityExcel> accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountInactivityExcel.class);
ExcelUtils.exportExcelToTarget(response, null, res.getList(), AccountInactivityExcel.class);
}
}
}
}

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -108,6 +108,8 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
**/
List<AgencySubResultDTO> selectSubAgencyList(@Param("subAgencyPids") String subAgencyPids);
List<AgencySubResultDTO> selectSubAgencyLevelList(@Param("subAgencyPids") String subAgencyPids);
/**
* 查询客户根级组织
*
@ -195,6 +197,8 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
**/
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<CustomerAgencyEntity> {
* @return
*/
List<AgencyResultDTO> getAllCommunity(String customerId);
List<AgencyCountCensusResultDTO> 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<CommunityListByAgencyIdResultDTO> getCommunityByPidList (@Param("pids")String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd);
}

11
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<IcEnterpriseEntity> {
List<EnterpriseDetailDTO> selectList(EnterprisePageFormDTO formDTO);
List<IcEnterpriseEntity> selectForUniqueName(@Param("gridId") String gridId, @Param("placeOrgName") String placeOrgName, @Param("enterpriseId") String enterpriseId);
/**
* 按场所类型
* @param orgId
* @param orgType
* @return
*/
List<EnterpriseCountPlaceTypeDetailDTO> selectCountByPlaceType(@Param("customerId")String customerId,
@Param("orgId") String orgId,
@Param("orgType") String orgType);
}

7
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<IcHouseEntity> {
* @return
*/
List<GroupRentHouseResultDTO> selectGroupRentHouseList(GroupRentHouseFormDTO formDTO);
List<HouseCountPictureListResultDTO> getHousePurposeCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd);
List<HouseCountPictureListResultDTO> getHouseStatusCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd);
List<HousePictureListResultDTO> 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);
}

75
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<StaffLoginLogEntity> {
/**
* 各社区登录总次数
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> pageCommunityCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
/**
* 柱状图下级组织账号登录次数汇总
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> querySubCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
/**
* 各区县登录总次数
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> pageDistrictCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
List<CommunityLoginResultDTO> 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<AccountActivityInfo> selectListActivityInfo(CountActivityFormDTO formDTO);
ActivityTatalInfo selectOneActivityTotal(CountActivityFormDTO formDTO);
}

73
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;
}

50
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;
}

45
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 = "";
}

28
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 = "";
}

6
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());
}
}

110
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<MessageExt> 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);
}
}

37
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<CustomerAgencyEntity>
**/
StaffInAgencyListResultDTO staffInAgencyList(String staffId);
StaffInAgencyListResultDTO staffinAgencyLevelList(String staffId);
/**
* @Description 运营端-返回element ui - tree 结构agency列表
* @param customerId
@ -355,4 +357,37 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
* @Date 2022/11/30 22:41
**/
Result<List<CurrentUserCommunityInfoResultDTO>> getCurrentUserCommunityInfo(TokenDto tokenDTO);
/**
* 返回组织的orgIdPath包含自身
*
* @param orgId
* @return
*/
String getOrgIdPath(String orgId);
/**
* 返回下级数量
* @param agencyId
* @return
*/
List<AgencyCountCensusResultDTO> getAgencyCountList(String agencyId);
/**
* @Description: 获取下级组织的社区数量
* @param dto:
* @Return java.util.List<com.epmet.dto.result.CommunityCountCensusResultDTO>
* @Author: lichao
* @Date: 2023/4/7 15:09
*/
List<CommunityCountCensusResultDTO> getCommunityCountList(CommunityCountCensusFormDTO dto);
/**
* @Description: 根据agencyId获取下级社区列表
* @param dto:
* @Return java.util.List<com.epmet.dto.result.CommunityListByAgencyIdResultDTO>
* @Author: lichao
* @Date: 2023/4/7 16:49
*/
PageData<CommunityListByAgencyIdResultDTO> getCommunityList(CommunityCountCensusFormDTO dto);
}

12
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<IcEnterpriseEntity> {
*/
void qrCodeExport(EnterprisePageFormDTO formDTO, HttpServletResponse response) throws IOException;
/**
* 九小场所分析:返回各个场所类型的数量
*
* @param orgId
* @param orgType
* @return
*/
EnterpriseCountPlaceTypeResDTO countType(String orgId, String orgType);
}

7
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<IcHouseEntity> {
Result checkHomeInfo(CheckHouseInfoFormDTO formDTO);
HouseCountPictureResultDTO getHousePurposeCount(HouseCountPictureFormDTO dto);
HouseCountPictureResultDTO getHouseStatusCount(HouseCountPictureFormDTO dto);
PageData<HousePictureListResultDTO> getHousePictureList(HouseCountPictureFormDTO dto);
}

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java

@ -117,7 +117,8 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
* @Author zhaoqifeng
* @Date 2021/10/26 14:32
*/
List<OptionResultDTO> getNeighborHoodOptions(String agencyId, String gridId,String staffId,String customerId);
List<OptionResultDTO> getNeighborHoodOptions(String agencyId, String gridId, List<String> agencyIds, List<String> gridIds,
String staffId,String customerId);
/**
* 获取用户组织下小区列表

97
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<StaffLoginLogEntity> {
/**
* 登录插入记录
*
* @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<CommunityLoginResultDTO> pageCommunityCount(CommunityLoginFormDTO formDTO);
/**
* 柱状图下级组织账号登录次数汇总
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @return
*/
PageData<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> 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<AccountActivityInfo> getAccountActivityInfo(CountActivityFormDTO formDTO);
ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO);
}

152
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<CustomerAgencyDao
return subAgencyList;
}
private List<AgencySubResultDTO> getDepartmentLevelList(String subAgencyPids) {
List<AgencySubResultDTO> subAgencyList = baseDao.selectSubAgencyLevelList(subAgencyPids);
if (subAgencyList.size() > NumConstant.ZERO) {
for (AgencySubResultDTO sub : subAgencyList) {
List<AgencySubResultDTO> subAgency = getDepartmentLevelList(sub.getPids() + ":" + sub.getAgencyId());
sub.setSubAgencyList(subAgency);
}
}
return subAgencyList;
}
/**
* @param staffId
* @return
@ -1052,6 +1068,24 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
return resultDTO;
}
@Override
public StaffInAgencyListResultDTO staffinAgencyLevelList(String staffId) {
StaffInAgencyListResultDTO resultDTO = new StaffInAgencyListResultDTO();
//1.查询工作人员所属组织信息
AgencyResultDTO agencyList = baseDao.selectAgencyByStaffId(staffId);
if (null == agencyList) {
logger.error(String.format("查询工作人员所属组织信息失败,staffId->%s", staffId));
throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION);
}
resultDTO.setAgencyList(agencyList);
//2.递归查询所有下级组织信息
List<AgencySubResultDTO> 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<CustomerAgencyDao
result.setOrgLevel(rootAgency.getAgencyId().concat("-").concat(rootAgency.getLevel()));
result.setLongitude(rootAgency.getLongitude());
result.setLatitude(rootAgency.getLatitude());
result.setOrgIdPath(rootAgency.getOrgIdPath());
String orgTreeCacheKey = RedisKeys.getOrgTreeCacheKey(rootAgency.getAgencyId(),customerId);
Object o = redisUtils.get(orgTreeCacheKey);
@ -1607,4 +1642,121 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
return new Result<List<CurrentUserCommunityInfoResultDTO>>().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<com.epmet.dto.result.AgencyCountCensusResultDTO>
* @Author: lichao
* @Date: 2023/4/7 14:17
*/
@Override
public List<AgencyCountCensusResultDTO> getAgencyCountList(String agencyId) {
List<AgencyCountCensusResultDTO> 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<CommunityCountCensusResultDTO> getCommunityCountList(CommunityCountCensusFormDTO dto) {
List<CommunityCountCensusResultDTO> resultDTOS = new ArrayList<>();
CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId());
if (customerAgency!=null){
String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids());
LambdaQueryWrapper<CustomerAgencyEntity> queryWrapper = new LambdaQueryWrapper<CustomerAgencyEntity>().eq(CustomerAgencyEntity::getPids,pids);
List<CustomerAgencyEntity> 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<CommunityListByAgencyIdResultDTO> 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<CommunityListByAgencyIdResultDTO> entityList = baseDao.getCommunityByPidList(pids,dto.getTimeStart(),dto.getTimeEnd());
entityList.forEach(
entity->{
String[] pidArray = entity.getPids().split(":");
LambdaQueryWrapper<CustomerAgencyEntity> queryWrapper = new LambdaQueryWrapper<CustomerAgencyEntity>().in(CustomerAgencyEntity::getId,pidArray);
List<CustomerAgencyEntity> 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<CommunityListByAgencyIdResultDTO> pageInfo = new PageInfo<>(entityList);
return new PageData<>(entityList, pageInfo.getTotal(),dto.getPageSize());
}else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常");
}
}
}

52
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<IcEnterpriseDao, Ic
@Autowired
private IcEnterprisePatrolRecordDao enterprisePatrolRecordDao;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Autowired
private IcCoverageCategoryDictDao coverageCategoryDictDao;
@Autowired
private OssFeignClient ossFeignClient;
@ -101,8 +100,6 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl<IcEnterpriseDao, Ic
@Autowired
private IcEnterpriseChangeRecordService icEnterpriseChangeRecordService;
@Autowired
private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@ -678,4 +675,49 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl<IcEnterpriseDao, Ic
zip.close();
}
/**
* 九小场所分析:返回各个场所类型的数量
*
* @param orgId
* @param orgType
* @return
*/
@Override
public EnterpriseCountPlaceTypeResDTO countType(String orgId, String orgType) {
if (StringUtils.isBlank(orgId)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
orgId = staffInfoCacheResult.getAgencyId();
orgType = "agency";
}
// 查字典
List<IcCoverageCategoryDictListResultDTO> 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<EnterpriseCountPlaceTypeDetailDTO> placeTypeCountList = baseDao.selectCountByPlaceType(EpmetRequestHolder.getLoginUserCustomerId(),orgId, orgType);
Map<String, EnterpriseCountPlaceTypeDetailDTO> map = CollectionUtils.isEmpty(placeTypeCountList) ? new HashMap<>() : placeTypeCountList.stream().collect(Collectors.toMap(EnterpriseCountPlaceTypeDetailDTO::getPlaceType, o -> o));;
List<EnterpriseCountPlaceTypeDetailDTO> 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;
}
}

91
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<IcHouseDao, IcHouseEntit
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private RedisUtils redisUtils;
@Autowired
private CustomerAgencyDao customerAgencyDao;
@Autowired
private CustomerGridDao customerGridDao;
@Override
public IcHouseDTO get(String id) {
@ -428,4 +433,74 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
return new Result<CheckHomeInfoResultInfo>().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<HousePictureListResultDTO> 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<HousePictureListResultDTO> list = baseDao.getHousePictureList(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd(),dto.getPurpose(),dto.getRentFlag());
list.forEach(entity->{
String[] agencyIds = entity.getOrgIdPath().split(":");
LambdaQueryWrapper<CustomerAgencyEntity> queryWrapperAgency = new LambdaQueryWrapper<CustomerAgencyEntity>().in(CustomerAgencyEntity::getId,agencyIds);
List<CustomerAgencyEntity> 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<HousePictureListResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list,pageInfo.getTotal());
}
}

28
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<IcNeighborHoodDao
* @Date 2021/10/26 14:32
*/
@Override
public List<OptionResultDTO> 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<OptionResultDTO> getNeighborHoodOptions(String agencyId, String gridId,
List<String> agencyIds, List<String> 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<OptionResultDTO> cachedKeys = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>() {
@ -212,11 +219,16 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
LambdaQueryWrapper<IcNeighborHoodEntity> 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<IcNeighborHoodEntity> list = baseDao.selectList(wrapper);
if(CollectionUtils.isEmpty(list)) {
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
List<OptionResultDTO> datas = list.stream().map(item -> {

310
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<StaffLoginLogDao, StaffLoginLogEntity> 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<CustomerStaffDTO> 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<StaffLoginLogEntity> cityWrapper = new LambdaQueryWrapper<>();
cityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCityCount(baseDao.selectCount(cityWrapper));
// 市下面区县账号
LambdaQueryWrapper<StaffLoginLogEntity> 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<StaffLoginLogEntity> 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<StaffLoginLogEntity> 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<StaffLoginLogEntity> districtWrapper = new LambdaQueryWrapper<>();
districtWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper));
// 区县下所有的街道
LambdaQueryWrapper<StaffLoginLogEntity> 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<StaffLoginLogEntity> 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<StaffLoginLogEntity> streetWrapper = new LambdaQueryWrapper<>();
streetWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setStreetCount(baseDao.selectCount(streetWrapper));
// 街道下所有社区
LambdaQueryWrapper<StaffLoginLogEntity> 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<StaffLoginLogEntity> 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<AccountActivityInfo> getAccountActivityInfo(CountActivityFormDTO formDTO) {
if (formDTO.getIsPage()) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<AccountActivityInfo> accountActivityInfos = baseDao.selectListActivityInfo(formDTO);
PageInfo<AccountActivityInfo> pageInfo = new PageInfo<>(accountActivityInfos);
return new PageData<>(accountActivityInfos, pageInfo.getTotal(),formDTO.getPageSize());
}
List<AccountActivityInfo> 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<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate());
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), formDTO.getPageSize());
}
// 不分页
List<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> list = baseDao.querySubCount(orgId, startDate, endDate);
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<CommunityLoginResultDTO>(list, total, total);
}
/**
* 查看区县
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @param isPage
* @param pageNo
* @param pageSize
* @return 返回agencyIdagencyNamecount
*/
@Override
public PageData<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> list = baseDao.pageDistrictCount(orgId, startDate, endDate);
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
// 不分页
List<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> 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<CommunityLoginResultDTO> list = baseDao.pageStreetCount(orgId, startDate, endDate);
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
// 不分页
List<CommunityLoginResultDTO> list = baseDao.pageStreetCount(orgId, startDate, endDate);
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<>(list, total, total);
}
}

79
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -210,6 +210,26 @@
ORDER BY ca.created_time DESC
</select>
<select id="selectSubAgencyLevelList" resultType="com.epmet.dto.result.AgencySubResultDTO">
SELECT
ca.id AS "agencyId",
ca.organization_name AS "agencyName",
ca.pids AS "pids",
ca.level level,
IFNULL(ca.longitude, cc.longitude) longitude,
IFNULL(ca.latitude, cc.latitude) latitude,
(
case when ca.pid is null or ca.pid='0' or ca.pid='' then ca.id
else concat(ca.pids,':',ca.id)
end)as orgIdPath
FROM customer_agency ca
INNER JOIN customer_agency cc ON cc.pid = '0' AND ca.customer_id = cc.customer_id
WHERE ca.del_flag = '0'
AND ca.pids = #{subAgencyPids}
AND (ca.LEVEL = 'city' or ca.LEVEL = 'district')
ORDER BY ca.created_time DESC
</select>
<select id="getCustomerRootAgency" resultType="com.epmet.dto.CustomerAgencyDTO">
SELECT *
FROM customer_agency ca
@ -863,6 +883,36 @@
AND CUSTOMER_ID = #{customerId}
AND pids LIKE concat('%',#{agencyId}, '%' )
</update>
<select id="agencyCount" resultType="com.epmet.dto.result.AgencyCountCensusResultDTO">
select level as level,count(*) as count
from customer_agency
where DEL_FLAG = 0
and PIDS like concat(#{pids},'%')
group by level
</select>
<select id="agencyGridCount" resultType="java.lang.Integer">
select count(*)
from customer_grid
where DEL_FLAG = 0
and PIDS like concat(#{pids},'%')
</select>
<select id="agencyStaffCount" resultType="java.lang.Integer">
select count(1)
from customer_staff_agency staff
left join customer_agency agency on staff.AGENCY_ID = agency.ID
where agency.DEL_FLAG = 0
and
staff.DEL_FLAG = 0
and agency.PIDS like concat(#{pids},'%')
</select>
<select id="selectSubOrg" resultType="com.epmet.dto.result.SubOrgResDTO">
SELECT
@ -1154,4 +1204,33 @@
ca.del_flag = '0'
AND ca.customer_id = #{customerId}
</select>
<select id="getCommunityCount" resultType="java.lang.Integer">
select count(1)
from customer_agency agency
where agency.DEL_FLAG = 0
and agency.LEVEL = 'community'
and agency.PIDS like concat(#{pids},'%')
<if test="timeStart != null">
and agency.CREATED_TIME &gt;= #{timeStart}
</if>
<if test="timeEnd != null">
and agency.CREATED_TIME &lt;= #{timeEnd}
</if>
</select>
<select id="getCommunityByPidList" resultType="com.epmet.dto.result.CommunityListByAgencyIdResultDTO">
SELECT
ID,ORGANIZATION_NAME as name,CREATED_TIME as createTime,PIDS as pids
FROM customer_agency
WHERE DEL_FLAG = '0'
AND `LEVEL` = 'community'
AND PIDS LIKE CONCAT(#{pids},'%')
<if test="timeStart != null">
and CREATED_TIME &gt;= #{timeStart}
</if>
<if test="timeEnd != null">
and CREATED_TIME &lt;= #{timeEnd}
</if>
</select>
</mapper>

44
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'
</insert>
<select id="dictMap" resultType="com.epmet.dto.result.IcCoverageCategoryDictListResultDTO">

48
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml

@ -66,10 +66,30 @@
LEFT JOIN ic_enterprise_patrol_record r ON ( ie.id = r.ENTERPRISE_ID AND r.DEL_FLAG = '0' )
WHERE
ie.DEL_FLAG = '0'
AND (
ie.AGENCY_ID = #{staffAgencyId}
OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' )
)
<if test='"grid" == orgType'>
<if test='null != orgId and "" != orgId'>
AND ie.GRID_ID = #{orgId}
</if>
</if>
<if test='"agency" == orgType'>
<if test='null != orgId and "" != orgId'>
AND (ie.AGENCY_ID = #{orgId} or ie.AGENCY_PIDS like concat('%',#{orgId},'%'))
</if>
<if test='null == orgId or "" == orgId'>
AND (
ie.AGENCY_ID = #{staffAgencyId}
OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' )
)
</if>
</if>
<if test='null==orgType or "" == orgType'>
<if test='null != staffAgencyId and "" != staffAgencyId'>
AND (
ie.AGENCY_ID = #{staffAgencyId}
OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' )
)
</if>
</if>
<if test='null != gridId and "" != gridId'>
AND ie.GRID_ID = #{gridId}
</if>
@ -108,4 +128,24 @@
and ie.id != #{enterpriseId}
</if>
</select>
<!-- 按场所类型 -->
<select id="selectCountByPlaceType" parameterType="map" resultType="com.epmet.dto.result.yt.EnterpriseCountPlaceTypeDetailDTO">
SELECT
ie.PLACE_TYPE as placeType,
count( ie.id ) AS total
FROM
ic_enterprise ie
WHERE
ie.CUSTOMER_ID = #{customerId}
AND ie.DEL_FLAG = '0'
<if test="orgType == 'grid'">
and ie.GRID_ID= #{orgId}
</if>
<if test="orgType == 'agency'">
and ( ie.AGENCY_ID=#{orgId} or ie.AGENCY_PIDS like CONCAT('%',#{orgId},'%') )
</if>
GROUP BY
ie.PLACE_TYPE
</select>
</mapper>

131
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
</select>
<select id="getHousePurposeCount" resultType="com.epmet.dto.result.HouseCountPictureListResultDTO">
select count(*) as count,PURPOSE as type
from ic_house
where DEL_FLAG = 0
<choose>
<when test='orgType == "agency"'>
AND neighbor_hood_id IN (
select a.id from ic_neighbor_hood a
<!-- 排除掉无效组织、网格数据 -->
inner join customer_agency b on a.agency_id = b.id and b.del_flag = '0'
inner join customer_grid c on a.grid_id = c.id and c.del_flag = '0'
where a.del_flag = '0'
and (a.agency_id = #{orgId} OR a.agency_pids LIKE CONCAT('%', #{orgId}, '%'))
)
</when>
<when test='orgType == "grid"'>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and grid_id = #{orgId}
)
</when>
<otherwise>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and id = #{orgId}
)
</otherwise>
</choose>
<if test="timeStart != null">
and CREATED_TIME &gt;= #{timeStart}
</if>
<if test="timeEnd != null">
and CREATED_TIME &lt;= #{timeEnd}
</if>
group by PURPOSE
</select>
<select id="getHouseStatusCount" resultType="com.epmet.dto.result.HouseCountPictureListResultDTO">
select count(*) as count,RENT_FLAG as type
from ic_house
where DEL_FLAG = 0
<choose>
<when test='orgType == "agency"'>
AND neighbor_hood_id IN (
select a.id from ic_neighbor_hood a
<!-- 排除掉无效组织、网格数据 -->
inner join customer_agency b on a.agency_id = b.id and b.del_flag = '0'
inner join customer_grid c on a.grid_id = c.id and c.del_flag = '0'
where a.del_flag = '0'
and (a.agency_id = #{orgId} OR a.agency_pids LIKE CONCAT('%', #{orgId}, '%'))
)
</when>
<when test='orgType == "grid"'>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and grid_id = #{orgId}
)
</when>
<otherwise>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and id = #{orgId}
)
</otherwise>
</choose>
<if test="timeStart != null">
and CREATED_TIME &gt;= #{timeStart}
</if>
<if test="timeEnd != null">
and CREATED_TIME &lt;= #{timeEnd}
</if>
group by RENT_FLAG
</select>
<select id="getHousePictureList" resultType="com.epmet.dto.result.HousePictureListResultDTO">
select house.ID as houseId,ORG_ID_PATH as orgIdPath,FULL_NAME as houseName,grid.GRID_NAME as gridName,
IF(house.RENT_FLAG=1,'出租',IF(house.RENT_FLAG=2,'闲置',IF(house.RENT_FLAG=3,'未售出','自住'))) as rentFlagName,
IF(house.PURPOSE = 1,'住宅',IF(house.PURPOSE = 2,'商业',IF(house.PURPOSE = 3,'办公',IF(house.PURPOSE = 4,'工业',IF(house.PURPOSE = 5,'存储',IF(house.PURPOSE = 6,'商用混用','其它')))))) as purposeName
from ic_house house
left join ic_neighbor_hood hood on house.NEIGHBOR_HOOD_ID = hood.id
left join customer_grid grid on grid.id = hood.GRID_ID
where house.DEL_FLAG = '0'
<choose>
<when test='orgType == "agency"'>
AND neighbor_hood_id IN (
select a.id from ic_neighbor_hood a
<!-- 排除掉无效组织、网格数据 -->
inner join customer_agency b on a.agency_id = b.id and b.del_flag = '0'
inner join customer_grid c on a.grid_id = c.id and c.del_flag = '0'
where a.del_flag = '0'
and (a.agency_id = #{orgId} OR a.agency_pids LIKE CONCAT('%', #{orgId}, '%'))
)
</when>
<when test='orgType == "grid"'>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and grid_id = #{orgId}
)
</when>
<otherwise>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and id = #{orgId}
)
</otherwise>
</choose>
<if test="timeStart != null">
and house.CREATED_TIME &gt;= #{timeStart}
</if>
<if test="timeEnd != null">
and house.CREATED_TIME &lt;= #{timeEnd}
</if>
<if test="purpose != null and purpose != ''">
and house.PURPOSE = #{purpose}
</if>
<if test="rentFlag != null">
and house.RENT_FLAG = #{rentFlag}
</if>
</select>
</mapper>

189
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml

@ -0,0 +1,189 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.StaffLoginLogDao">
<resultMap type="com.epmet.entity.StaffLoginLogEntity" id="staffLoginLogMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="staffId" column="STAFF_ID"/>
<result property="staffName" column="STAFF_NAME"/>
<result property="mobile" column="MOBILE"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="agencyLevel" column="AGENCY_LEVEL"/>
<result property="pid" column="PID"/>
<result property="orgIdPath" column="ORG_ID_PATH"/>
<result property="loginTime" column="LOGIN_TIME"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 账号登录情况:各社区登录总次数 -->
<select id="pageCommunityCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
d.ORGANIZATION_NAME AS districtName,
s.ORGANIZATION_NAME AS streetName,
ca.ORGANIZATION_NAME AS agencyName,
ca.`LEVEL` AS agencyLevel,
count( l.id ) AS count
FROM customer_agency ca
left JOIN staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
LEFT JOIN customer_agency s
ON ( ca.PID = s.ID )
LEFT JOIN customer_agency d
ON ( s.PID = d.ID )
WHERE
ca.DEL_FLAG = '0'
AND (ca.id = #{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'community'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc,ca.CREATED_TIME desc
</select>
<!--社区活跃列表-->
<select id="selectListActivityInfo" resultType="com.epmet.dto.result.yt.AccountActivityInfo">
SELECT
COUNT(DISTINCT(l.id)) AS loginCount,
COUNT(DISTINCT(l.STAFF_ID)) accountActivityCount,
COUNT(DISTINCT(ag.USER_ID)) accountCount,
a.ID agencyId,
a.ALL_PARENT_NAME agencyName
FROM
customer_agency a
LEFT JOIN staff_login_log l ON a.ID = l.AGENCY_ID
AND a.`LEVEL` = l.AGENCY_LEVEL
AND l.DEL_FLAG = '0'
LEFT JOIN customer_staff_agency ag ON a.ID = ag.AGENCY_ID
AND ag.DEL_FLAG = '0'
WHERE
a.DEL_FLAG = '0'
AND a.`LEVEL` = 'community'
<if test="orgId!= null and orgId.trim() != ''">
AND a.PIDS LIKE CONCAT('%',#{orgId},'%')
</if>
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
<choose >
<when test='isActivity!= null and isActivity == "1" and isActivity.trim() != ""'>
AND l.AGENCY_ID is NOT NULL
</when>
<otherwise>
AND l.AGENCY_ID is NULL
</otherwise>
</choose>
GROUP BY
a.ID
ORDER BY
COUNT(DISTINCT(l.id)) DESC
</select>
<!-- 账号登录情况:柱状图:下级组织账号登录次数汇总 -->
<select id="querySubCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
select
ca.ID AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.level as agencyLevel,
count(l.ID) AS count
from customer_agency ca
left join staff_login_log l
on(ca.ID=l.AGENCY_ID)
where ca.DEL_FLAG='0'
and ca.PID = #{orgId}
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
group by ca.id
order by count(l.ID) desc,ca.CREATED_TIME desc
</select>
<!-- 账号登录情况:查看区县-->
<select id="pageDistrictCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.LEVEL AS agencyLevel,
count(l.id) AS count
FROM customer_agency ca
left join staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
WHERE ca.DEL_FLAG = '0'
and (ca.id=#{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'district'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc
</select>
<!-- 账号登录情况:查看街镇-->
<select id="pageStreetCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.LEVEL AS agencyLevel,
pa.ORGANIZATION_NAME as districtName,
count(l.id) AS count
FROM customer_agency ca
left join staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
left join customer_agency pa
on(ca.pid=pa.id)
WHERE
ca.DEL_FLAG = '0'
and (ca.id = #{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'street'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc
</select>
<select id="selectOneActivityTotal" resultType="com.epmet.dto.result.yt.ActivityTatalInfo">
SELECT
COUNT(t.activityCount = '0' OR NULL) inactivityCount,
COUNT(t.activityCount > '0' OR NULL) activityCount
FROM
(
SELECT
COUNT(DISTINCT(l.ID)) activityCount
FROM
customer_agency a
LEFT JOIN staff_login_log l ON a.ID = l.AGENCY_ID
WHERE
a.`LEVEL` = 'community'
AND a.DEL_FLAG = '0'
<if test="orgId!= null and orgId.trim() != ''">
AND a.PIDS LIKE CONCAT('%',#{orgId},'%')
</if>
GROUP BY
a.ID
) t;
</select>
</mapper>

4
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml

@ -28,6 +28,7 @@
<if test="orgType == 'grid'">
and e.GRID_ID=#{orgId}
</if>
and e.DEL_FLAG = '0'
and CUSTOMER_ID = #{customerId}
and HAPPEN_TIME >= #{queryStartTime}
and HAPPEN_TIME <![CDATA[<=]]> #{queryEndTime}
@ -81,7 +82,8 @@
select date_format(e.HAPPEN_TIME, '%Y-%m') monthName
from ic_event e
<where>
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 <![CDATA[ <= ]]> date_format(#{queryEndTime}, '%Y-%m')
<if test="orgType == 'grid'">
and e.GRID_ID =#{orgId}

33
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其他情况orgTypeagency
*/
private String orgType;
/**
* 查询居民列表
* 年龄饼图/学历饼图返回的code
*/
private String code;
/**
* 学历education
* 年龄age
*/
private String codeType;
}

121
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;
}

28
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岁以下050-59岁160-69岁270-79岁380岁以上4
* 学历分布学历key
*/
private String code;
/**
* 学历分布小学及文盲/初中.....
* 年龄分布50岁以下/50-59岁/60-69岁/70-79岁/80岁以上
*/
private String codeName;
}

97
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<List<RHZKStatisticsResultDTO>>().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<List<ResiPortrayalResultDTO>> queryAgeDistribute(@LoginUser TokenDto tokenDto,@RequestBody ResiPortrayalCommonFormDTO formDTO) {
return new Result<List<ResiPortrayalResultDTO>>().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<List<ResiPortrayalResultDTO>> queryEducationDistribute(@LoginUser TokenDto tokenDto,@RequestBody ResiPortrayalCommonFormDTO formDTO) {
return new Result<List<ResiPortrayalResultDTO>>().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<PageData<ResiPortrayalDetailDTO>> queryPortrayalResiList(@LoginUser TokenDto tokenDto, @RequestBody ResiPortrayalCommonFormDTO formDTO) {
return new Result<PageData<ResiPortrayalDetailDTO>>().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<ResiPortrayalDetailDTO> data = null;
List<ResiPortrayalDetailDTO> 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<Object> 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();
}
}
}
}

35
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<IcResiUserEntity> {
@Param("conditions") List<ResiUserQueryValueDTO> conditions,
@Param("resultColumns") List<IcFormResColumnDTO> resultColumns,
@Param("subTables") List<String> subTables,
@Param("currentStaffAgencyId") String currentStaffAgencyId,
@Param("staffOrgPath") String staffOrgPath,
@Param("currentStaffAgencyId") List<String> currentStaffAgencyIds,
@Param("staffOrgPaths") List<String> staffOrgPaths,
@Param("gridIds") Set<String> gridIds,
@Param("resultTableName") String resultTableName,
@Param("keyword") String keyword,
@Param("groupByTables") Set<String> groupByTables);
@ -450,4 +453,32 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
List<IcResiUserDTO> getImportUserList(@Param("customerId")String customerId,@Param("agencyId")String agencyId);
/**
* 烟台居民画像按照学历分组查询居民数量
* @param customerId
* @param orgId
* @param orgType:agency/grid
* @return
*/
List<ResiPortrayalResultDTO> queryEducationDistribute(@Param("customerId") String customerId,
@Param("orgId") String orgId,
@Param("orgType") String orgType);
List<ResiPortrayalResultDTO> 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<ResiPortrayalDetailDTO> selectPortrayalResiList(@Param("customerId") String customerId,
@Param("orgId") String orgId,
@Param("orgType") String orgType,
@Param("codeType")String codeType,
@Param("code") String code);
}

36
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<IcResiUserEntity> {
List<RHZKStatisticsResultDTO> 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<ResiPortrayalResultDTO> 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<ResiPortrayalResultDTO> queryEducationDistribute(String customerId, String staffId, String orgId, String orgType);
/**
* 烟台需求https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvoz5w4z9f98
* 居民画像居民列表
*
* @return
*/
PageData<ResiPortrayalDetailDTO> queryPortrayalResiList(String customerId, String staffId,
Integer pageNo, Integer pageSize,
String orgId, String orgType,
String codeType,String code);
}

349
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<IcResiUserDao, IcResi
@Autowired
private IcVaccineRelationDao icVaccineRelationDao;
/**
* 组织字段目前用于居民信息动态查询接口将此条件从conditions中移除单独生成固定的sql片段
*/
public static final List<String> ORG_FIELDS = Arrays.asList("AGENCY_IDS", "GRID_IDS", "AGENCY_ID", "GRID_ID");
private QueryWrapper<IcResiUserEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
@ -918,36 +924,55 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<IcFormResColumnDTO> resultColumns = resultColumnRes.getData();
// 查询结果列对应的表:
Set<String> resultColumnTables = resultColumns.stream().map(IcFormResColumnDTO::getTableName).collect(Collectors.toSet());
List<String> 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<String> 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<String> queryAgencyIdList = new HashSet<>();
Set<String> 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<String> staffOrgPaths;
List<String> 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<List<SubTableJoinDTO>> subTablesRes = operCustomizeOpenFeignClient.querySubTables(queryDTO1);
@ -976,14 +1001,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>();
if (null == formDTO.getIsPage() || formDTO.getIsPage()) {
//分页
String finalStaffOrgPath = staffOrgPath;
List<String> finalStaffOrgPath = staffOrgPaths;
List<String> 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<Map<String, Object>> list = baseDao.selectListResiMap(formDTO.getCustomerId(),
@ -991,8 +1021,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
formDTO.getConditions(),
resultColumns,
finalSubTables,
agencyId,
staffOrgPath,null,
agencyIds,
staffOrgPaths,
queryGridIdList,
null,
formDTO.getKeyword(),
groupByTables);
pageInfo.setTotal(CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size());
@ -3320,37 +3352,52 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<IcFormResColumnDTO> resultColumns = resultColumnRes.getData();
// 查询结果列对应的表:
Set<String> resultColumnTables = resultColumns.stream().map(IcFormResColumnDTO::getTableName).collect(Collectors.toSet());
List<String> 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<String> queryAgencyIdList = new HashSet<>();
Set<String> 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<String> staffOrgPaths;
List<String> 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<List<SubTableJoinDTO>> subTablesRes = operCustomizeOpenFeignClient.querySubTables(queryDTO1);
List<SubTableJoinDTO> subTables = subTablesRes.getData();
@ -3378,14 +3425,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>();
if (null == formDTO.getIsPage() || formDTO.getIsPage()) {
//分页
String finalStaffOrgPath = staffOrgPath;
List<String> finalStaffOrgPath = staffOrgPaths;
List<String> 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<Map<String, Object>> list = baseDao.selectListResiMap(formDTO.getCustomerId(),
@ -3393,8 +3445,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
formDTO.getConditions(),
resultColumns,
finalSubTables,
agencyId,
staffOrgPath,null,
agencyIds,
staffOrgPaths,
queryGridIdList,
null,
formDTO.getKeyword(),
groupByTables);
pageInfo.setTotal(CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size());
@ -3839,4 +3893,177 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
return fzBig.multiply(NumConstant.ONE_HUNDRED_DECIMAL).divide(totalBig, NumConstant.TWO, BigDecimal.ROUND_HALF_UP);
}
/**
* 烟台需求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
*/
@Override
public List<ResiPortrayalResultDTO> queryAgeDistribute(String customerId,String staffId,String orgId, String orgType) {
if (StringUtils.isBlank(orgId)) {
orgId = CustomerStaffRedis.getStaffInfo(customerId, staffId).getAgencyId();
orgType = OrgTypeEnum.AGENCY.getCode();
}
List<ResiPortrayalResultDTO> resultList=getDefaultAgeDistribute();
List<ResiPortrayalResultDTO> list=baseDao.selectAgeAgeDistribute(customerId,orgId,orgType);
if(CollectionUtils.isEmpty(list)){
return resultList;
}
Map<String,Integer> 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<ResiPortrayalResultDTO> getDefaultAgeDistribute() {
List<ResiPortrayalResultDTO> 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<ResiPortrayalResultDTO> 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<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO);
if (!dictResult.success() || CollectionUtils.isEmpty(dictResult.getData())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "学历字典获取失败", "学历字典获取失败");
}
//按照学历分组,查询居民数量
List<ResiPortrayalResultDTO> totalList = baseDao.queryEducationDistribute(customerId, orgId, orgType);
Map<String,Integer> map = totalList.stream().collect(Collectors.toMap(ResiPortrayalResultDTO::getCode,ResiPortrayalResultDTO::getTotalResi));
List<ResiPortrayalResultDTO> 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<ResiPortrayalDetailDTO> 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<List<DictListResultDTO>> dictResult = epmetAdminOpenFeignClient.dictList(dictFormDTO);
if (!dictResult.success() || CollectionUtils.isEmpty(dictResult.getData())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "学历字典获取失败", "学历字典获取失败");
}
Map<String, String> 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<ResiPortrayalDetailDTO> list = baseDao.selectPortrayalResiList(customerId, orgId, orgType,codeType, code);
if(CollectionUtils.isNotEmpty(list)){
Set<String> houseIds=list.stream().map(m -> m.getHomeId()).collect(Collectors.toSet());
//查询房子名称
Result<List<HouseInfoDTO>> houseInfoRes = govOrgOpenFeignClient.queryListHouseInfo(houseIds, customerId);
List<HouseInfoDTO> houseInfoDTOList = houseInfoRes.success() && !CollectionUtils.isEmpty(houseInfoRes.getData()) ? houseInfoRes.getData() : new ArrayList<>();
Map<String, HouseInfoDTO> 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<ResiPortrayalDetailDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
}

220
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -90,7 +90,24 @@
<if test="resultTableName != null and resultTableName != ''">
AND ${resultTableName}.ID IS NOT NULL
</if>
and ic_resi_user.pids like concat(#{staffOrgPath},'%')
<!-- orgIdPath过滤 -->
and (
<foreach collection="staffOrgPaths" item="orgIdPath" separator="or">
ic_resi_user.pids like concat(#{orgIdPath},'%')
</foreach>
<if test='staffOrgPaths != null and staffOrgPaths.size() > 0 and gridIds != null and gridIds.size() > 0'>
or
</if>
<!-- 网格id过滤 -->
<if test="gridIds != null and gridIds.size() > 0">
ic_resi_user.GRID_ID in (
<foreach collection="gridIds" item="gridId" separator=",">
#{gridId}
</foreach>
)
</if>
)
<if test="null != conditions and conditions.size() > 0">
<foreach item="subCondition" collection="conditions" open="" separator="" close="">
<if test="null != subCondition.columnValue and subCondition.columnValue.size() > 0">
@ -108,7 +125,47 @@
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'daterange' ">
and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]}
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 2">
<if test='null != subCondition.columnValue[0] and subCondition.columnValue[0] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &gt;= #{subCondition.columnValue[0]}
</if>
<if test='null != subCondition.columnValue[1] and subCondition.columnValue[1] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &lt;= #{subCondition.columnValue[1]}
</if>
</if>
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 1">
<if test='null != subCondition.columnValue[0] and subCondition.columnValue[0] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &gt;= #{subCondition.columnValue[0]}
</if>
</if>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'agerange' ">
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 2">
<if test='null != subCondition.columnValue[0] and 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) &gt;= #{subCondition.columnValue[0]}
</if>
<if test='null != subCondition.columnValue[1] and 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) &lt;= #{subCondition.columnValue[1]}
</if>
</if>
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 1">
<if test='null != subCondition.columnValue[0] and 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) &gt;= #{subCondition.columnValue[0]}
</if>
</if>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'notnull' ">
@ -163,7 +220,47 @@
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'daterange' ">
and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]}
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 2">
<if test='null != subCondition.columnValue[0] and subCondition.columnValue[0] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &gt;= #{subCondition.columnValue[0]}
</if>
<if test='null != subCondition.columnValue[1] and subCondition.columnValue[1] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &lt;= #{subCondition.columnValue[1]}
</if>
</if>
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 1">
<if test='null != subCondition.columnValue[0] and subCondition.columnValue[0] != "" '>
and ${subCondition.tableName}.${subCondition.columnName} is not null
and ${subCondition.tableName}.${subCondition.columnName} !=''
and ${subCondition.tableName}.${subCondition.columnName} &gt;= #{subCondition.columnValue[0]}
</if>
</if>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'agerange' ">
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 2">
<if test='null != subCondition.columnValue[0] and 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) &gt;= #{subCondition.columnValue[0]}
</if>
<if test='null != subCondition.columnValue[1] and 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) &lt;= #{subCondition.columnValue[1]}
</if>
</if>
<if test="subCondition.columnValue != null and subCondition.columnValue.size() == 1">
<if test='null != subCondition.columnValue[0] and 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) &gt;= #{subCondition.columnValue[0]}
</if>
</if>
</if>
<if test="subCondition.queryType!= null and subCondition.queryType == 'notnull' ">
@ -1498,4 +1595,121 @@
</select>
<!-- 烟台居民画像:按照学历分组,查询居民数量-->
<select id="queryEducationDistribute" parameterType="map" resultType="com.epmet.dto.result.resi.ResiPortrayalResultDTO">
SELECT
r.CULTURE AS `code`,
count( r.id ) AS totalResi
FROM
ic_resi_user r
WHERE
r.DEL_FLAG = '0'
AND r.CUSTOMER_ID = #{customerId}
<if test='orgType == "agency" '>
AND ( r.AGENCY_ID = #{orgId} OR r.PIDS LIKE concat('%',#{orgId},'%') )
</if>
<if test='orgType == "grid" '>
and r.GRID_ID = #{orgId}
</if>
AND r.`STATUS` = '0'
AND r.CULTURE IS NOT NULL
AND r.CULTURE != ''
GROUP BY
r.CULTURE
</select>
<!-- 烟台居民画像:年龄分布 -->
<select id="selectAgeAgeDistribute" parameterType="map" resultType="com.epmet.dto.result.resi.ResiPortrayalResultDTO">
select
temp.CODE,
count(temp.ID) as totalResi
from (
select
temp1.id,
(
case when temp1.age &lt; 50 then '0'
when temp1.age &gt;= 50 and temp1.age &lt;= 59 then '1'
when temp1.age &gt;= 60 and temp1.age &lt;= 69 then '2'
when temp1.age &gt;= 70 and temp1.age &lt;= 79 then '3'
when temp1.age &gt;= 80 then '4'
end
) as `code`
from (
SELECT
u.ID,
YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) as age
FROM
ic_resi_user u
WHERE
u.DEL_FLAG = '0'
AND u.CUSTOMER_ID = #{customerId}
and u.`STATUS`='0'
and u.BIRTHDAY is not null
and u.BIRTHDAY !=''
<if test='orgType == "agency" '>
AND ( u.AGENCY_ID = #{orgId} OR u.PIDS LIKE concat('%',#{orgId},'%') )
</if>
<if test='orgType == "grid" '>
and u.GRID_ID = #{orgId}
</if>
)temp1
)temp
group by temp.`code`
</select>
<!-- 居民画像,居民列表 codeType 学历:education 年龄:age -->
<select id="selectPortrayalResiList" parameterType="map" resultType="com.epmet.dto.result.resi.ResiPortrayalDetailDTO">
SELECT
u.ID AS icResiUserId,
u.grid_id as gridId,
u.VILLAGE_ID as villageId,
u.BUILD_ID as buildId,
u.UNIT_ID as unitId,
u.HOME_ID as homeId,
u.`NAME` AS `name`,
u.MOBILE AS mobile,
u.ID_CARD AS idCard,
u.GENDER AS gender,
( CASE WHEN u.GENDER = '1' THEN '男' WHEN u.GENDER = '2' THEN '女' ELSE '未知' END ) AS genderName,
YEAR (NOW())- SUBSTR( u.BIRTHDAY, 1, 4 ) AS age,
u.CULTURE AS educationCode,
'' AS educationName,
IFNULL(u.CULTURE,'')AS educationCode,
u.BIRTHDAY AS birthday
FROM
ic_resi_user u
WHERE
u.DEL_FLAG = '0'
AND u.CUSTOMER_ID = #{customerId}
AND u.`STATUS` = '0'
<if test='orgType == "agency" '>
AND ( u.AGENCY_ID = #{orgId} OR u.PIDS LIKE concat('%',#{orgId},'%') )
</if>
<if test='orgType == "grid" '>
and u.GRID_ID = #{orgId}
</if>
<if test='codeType == "education" '>
<if test="code != null and code != ''">
and u.CULTURE = #{code}
</if>
</if>
<if test='codeType == "age" '>
<if test=" 0 == code">
and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &lt; 50
</if>
<if test=" 1 == code">
and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &gt;=50 and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &lt;=59
</if>
<if test=" 2 == code">
and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &gt;= 60 and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &lt;= 69
</if>
<if test=" 3 == code">
and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &gt;=70 and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &lt;=79
</if>
<if test=" 4 == code">
and YEAR(NOW())-SUBSTR(u.BIRTHDAY, 1, 4) &gt;=80
</if>
</if>
order by u.ID asc
</select>
</mapper>

Loading…
Cancel
Save