Browse Source

Merge branch 'dev_now_stats_syc' into pingyin_master

master
wangxianzhang 3 years ago
parent
commit
51a1a8b8c9
  1. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java
  2. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  3. 1
      epmet-gateway/src/main/resources/bootstrap.yml
  4. 1
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java
  5. 59
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/NowStatsDataFormDTO.java
  6. 46
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/NowStatsDataResultDTO.java
  7. 10
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java
  8. 28
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  9. 62
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java
  10. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java
  11. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java
  12. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java
  13. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java
  14. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java
  15. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resipartymember/ResiPartymemberDao.java
  16. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java
  17. 68
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/NowStatsDataExcel.java
  18. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/PartymemberService.java
  19. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  20. 117
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  21. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  22. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  23. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  24. 60
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  25. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java
  26. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  27. 24
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/PartymemberServiceImpl.java
  28. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/ResiPartymemberService.java
  29. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/impl/ResiPartymemberServiceImpl.java
  30. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml
  31. 40
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml
  32. 17
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml
  33. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml
  34. 44
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml
  35. 43
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  36. 46
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resipartymember/ResiPartymemberDao.xml
  37. 5
      epmet-module/epmet-job/epmet-job-server/pom.xml
  38. 17
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java
  39. 31
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java
  40. 41
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java
  41. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java
  42. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java
  43. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  44. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java
  45. 73
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java
  46. 2
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java
  47. 2
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java
  48. 1
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java
  49. 106
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java
  50. 64
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  51. 1
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  52. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java
  53. 126
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java
  54. 1
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  55. 13
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  56. 121
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  57. 15
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  58. 2
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql
  59. 117
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  60. 6
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml
  61. 10
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java
  62. 10
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java
  63. 10
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java
  64. 71
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java
  65. 10
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java
  66. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java
  67. 25
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java
  68. 22
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java
  69. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  70. 10
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java
  71. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  72. 52
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  73. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java
  74. 11
      epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java

@ -143,4 +143,9 @@ public interface ServiceConstant {
* 聚合查询服务
*/
String DATA_AGGREGATOR_SERVER = "data-aggregator-server";
/**
* 插件pli-power服务
*/
String PLI_POWER_SERVER = "pli-power-base-server";
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -261,6 +261,7 @@ public enum EpmetErrorCode {
NOT_REGEIST_RESI(8927,"未注册居民"),
UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"),
IC_VACCINE(8929,"已存在相同记录,请去修改原有记录"),
NOT_MATCH_IC_USER_ERROR(8930,"请联系社区工作人员"),
MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"),

1
epmet-gateway/src/main/resources/bootstrap.yml

@ -510,6 +510,7 @@ epmet:
# 内部认证url白名单(在白名单中的,就不会再校验登录了)
internalAuthUrlsWhiteList:
- /epmetuser/customerstaff/customerlist
- /epmetuser/icresiuser/icUserMatchGrid
- /auth/wechat/**
- /**/druid/**
- /gov/project/project/platformcallback

1
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java

@ -38,4 +38,5 @@ public interface DataSourceConstant {
String EPMET_T_DUCK = "epmettduck";
String EPMETTDUCK="epmettduck";
String EPMET_HEART="heart";
String RESI_PARTYMEMBER="partymember";
}

59
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/NowStatsDataFormDTO.java

@ -0,0 +1,59 @@
package com.epmet.dataaggre.dto.datastats.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @Description 数据统计页面查询-接口入参
*/
@Data
public class NowStatsDataFormDTO implements Serializable {
private static final long serialVersionUID = 6462094914874831738L;
public interface CustomerDataManageForm{}
/**
* 客户ID
*/
@NotBlank(message = "客户ID不能为空",groups = CustomerDataManageForm.class)
private String customerId;
/**
* 组织ID
*/
@NotBlank(message = "组织ID不能为空",groups = CustomerDataManageForm.class)
private String agencyId;
/**
* 区间:Interval 截止:end
*/
@NotBlank(message = "type不能为空",groups = CustomerDataManageForm.class)
private String type;
/**
* 开始时间 精确到秒yyyy-MM-dd HH:mm:ss
*/
private String startTime;
/**
* 结束时间 精确到秒yyyy-MM-dd HH:mm:ss
*/
@NotBlank(message = "结束时间不能为空",groups = CustomerDataManageForm.class)
private String endTime;
//组织或网格Id集合
private List<String> idList;
//数据类型【组织agency 网格grid】
private String dataType;
/**
* desc:是否是导出
*/
private boolean export = false;
}

46
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/NowStatsDataResultDTO.java

@ -0,0 +1,46 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 数据统计页面查询-接口返参
*/
@Data
public class NowStatsDataResultDTO {
//组织、网格Id
private String orgId;
//组织、网格名称
private String orgName;
//注册居民数
private Integer resiUserCount = 0;
//注册党员数
private Integer partyMemberCount = 0;
//事件总数
private Integer icEventCount = 0;
//居民上报事件数【小程序端随手拍随时讲】
private Integer resiEventCount = 0;
//平台录入事件数【数字平台录入的事件数】
private Integer pcEventCount = 0;
//项目总数
private Integer projectCount = 0;
//议题转项目数
private Integer issueProjectCount = 0;
//事件立项数
private Integer icEventProjectCount = 0;
//直接立项项目数
private Integer agencyProjectCount = 0;
//组织的pids
private String pids;
//事件来源,0代表居民点 其他代表数字平台
private String sourceType;
//项目来源 issue议题 agency立项 ic_event事件
private String origin;
}

10
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java

@ -44,6 +44,16 @@ public class RegisterRelationDTO implements Serializable {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 网格Id (customer_grid.id)
*/

28
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -259,6 +259,13 @@
<datasource.druid.heart.username>epmet_heart_user</datasource.druid.heart.username>
<datasource.druid.heart.password>EpmEt-db-UsEr</datasource.druid.heart.password>
<!--epmet_resi_partymember-->
<datasource.druid.partymember.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_resi_partymember?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.partymember.url>
<datasource.druid.partymember.username>epmet_resi_partymember_user</datasource.druid.partymember.username>
<datasource.druid.partymember.password>EpmEt-db-UsEr</datasource.druid.partymember.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.140</spring.redis.host>
@ -390,6 +397,13 @@
<datasource.druid.heart.username>epmet_heart_user</datasource.druid.heart.username>
<datasource.druid.heart.password>EpmEt-db-UsEr</datasource.druid.heart.password>
<!--epmet_resi_partymember-->
<datasource.druid.partymember.url>
<![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_resi_partymember?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.partymember.url>
<datasource.druid.partymember.username>epmet_resi_partymember_user</datasource.druid.partymember.username>
<datasource.druid.partymember.password>EpmEt-db-UsEr</datasource.druid.partymember.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.140</spring.redis.host>
@ -522,6 +536,13 @@
<datasource.druid.heart.username>epmet</datasource.druid.heart.username>
<datasource.druid.heart.password>elink@833066</datasource.druid.heart.password>
<!--epmet_resi_partymember-->
<datasource.druid.partymember.url>
<![CDATA[jdbc:mysql://rm-m5ef9t617j6o5eup7.mysql.rds.aliyuncs.com:3306/epmet_resi_partymember?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.partymember.url>
<datasource.druid.partymember.username>epmet</datasource.druid.partymember.username>
<datasource.druid.partymember.password>elink@833066</datasource.druid.partymember.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.10.150</spring.redis.host>
@ -654,6 +675,13 @@
<datasource.druid.heart.username>epmet_heart_user</datasource.druid.heart.username>
<datasource.druid.heart.password>EpmEt-db-UsEr</datasource.druid.heart.password>
<!--epmet_resi_partymember-->
<datasource.druid.partymember.url>
<![CDATA[jdbc:mysql://rm-m5e3vzs2637224wj9.mysql.rds.aliyuncs.com:3306/epmet_resi_partymember?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</datasource.druid.partymember.url>
<datasource.druid.partymember.username>epmet_resi_partymember_user</datasource.druid.partymember.username>
<datasource.druid.partymember.password>EpmEt-db-UsEr</datasource.druid.partymember.password>
<!-- redis配置 -->
<spring.redis.index>0</spring.redis.index>
<spring.redis.cluster.nodes>172.22.76.1:6379,172.22.76.20:6379,172.22.76.36:6379,172.22.76.1:6389,172.22.76.20:6389,172.22.76.36:6389</spring.redis.cluster.nodes>

62
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java

@ -1,11 +1,25 @@
package com.epmet.dataaggre.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
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.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.excel.NowStatsDataExcel;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -13,13 +27,17 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
/**
* @Author sun
* @Description 数据统计服务
*/
@Slf4j
@RestController
@RequestMapping("datastats")
public class DataStatsController {
@ -243,4 +261,48 @@ public class DataStatsController {
return new Result<CustomerDataManageResultDTO>().ok(dataStatsService.operateExport(formDTO));
}
/**
* @Description 数据统计页面查询用户项目事件一些数据的实时统计查询
* 需求数据统计页面查询注册居民数注册党员数事件总数居民上报事件数平台录入事件数项目总数议题转项目数事件立项数立项数
* 可根据组织只选组织查询直属下级数据选择统计类型截止累计值/区间新增值截止累计选择一天区间选择时间段精确到时分秒筛选
* 可点击查看总计可导出打开页面默认选中当前工作人员所在组织页面参考灵山卫-人房信息统计页面
* @author sun
*/
@PostMapping("nowstatsdata")
public Result<List<NowStatsDataResultDTO>> nowStatsData(@RequestBody NowStatsDataFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, NowStatsDataFormDTO.CustomerDataManageForm.class);
formDTO.setExport(false);
return new Result<List<NowStatsDataResultDTO>>().ok(dataStatsService.nowStatsData(formDTO));
}
@PostMapping("nowstatsdataexport")
public void nowStatsDataExport(@RequestBody NowStatsDataFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setExport(true);
ExcelWriter excelWriter = null;
try {
String fileName = "数据统计" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), NowStatsDataExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
List<NowStatsDataResultDTO> data = null;
List<NowStatsDataExcel> list = null;
data = dataStatsService.nowStatsData(formDTO);
list = ConvertUtils.sourceToTarget(data, NowStatsDataExcel.class);
excelWriter.write(list, writeSheet);
} 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();
}
}
}
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java

@ -18,9 +18,13 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.entity.epmetuser.RegisterRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 注册关系表 用于统计客户网格的注册居民数
*
@ -29,5 +33,6 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface RegisterRelationDao extends BaseDao<RegisterRelationEntity> {
List<NowStatsDataResultDTO> selectNowResiUser(NowStatsDataFormDTO formDTO);
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import org.apache.ibatis.annotations.Mapper;
@ -108,4 +109,5 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
List<String> getSubAgencyList(@Param("agencyId") String agencyId);
List<ScreenCustomerAgencyDTO> getSubAgencyListByAgency(@Param("customerId") String customerId, @Param("agencyId") String agencyId);
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO;
@ -84,4 +85,5 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
*/
CustomerGridDTO getGridInfo(@Param("gridId") String gridId);
List<ScreenCustomerGridDTO> getSubGridList(@Param("customerId") String customerId, @Param("agencyId") String agencyId);
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java

@ -1,6 +1,8 @@
package com.epmet.dataaggre.dao.govproject;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO;
import com.epmet.dataaggre.dto.govorg.result.EventInfoResultDTO;
import com.epmet.dataaggre.entity.govproject.IcEventEntity;
@ -25,4 +27,5 @@ public interface IcEventDao extends BaseDao<IcEventEntity> {
*/
List<EventInfoResultDTO> getEventInfos(CoverageHomeSearchFormDTO formDTO);
List<NowStatsDataResultDTO> getIcEvent(NowStatsDataFormDTO formDTO);
}

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java

@ -18,6 +18,8 @@
package com.epmet.dataaggre.dao.govproject;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO;
@ -132,4 +134,6 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
List<OrgCountDTO> getMemberClosedProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getAgencyProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getAgencyClosedProjectCount(OrgStatisticsFormDTO formDTO);
List<NowStatsDataResultDTO> getNowProject(NowStatsDataFormDTO formDTO);
}

31
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resipartymember/ResiPartymemberDao.java

@ -0,0 +1,31 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.dao.resipartymember;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ResiPartymemberDao {
List<NowStatsDataResultDTO> getNowPart(NowStatsDataFormDTO formDTO);
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java

@ -40,6 +40,16 @@ public class RegisterRelationEntity extends BaseEpmetEntity {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 网格Id (customer_grid.id)
*/

68
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/NowStatsDataExcel.java

@ -0,0 +1,68 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
@Data
public class NowStatsDataExcel {
//组织、网格名称
@ExcelProperty(value = "组织名称")
@ColumnWidth(25)
private String orgName;
//注册居民数
@ExcelProperty(value = "注册居民数")
@ColumnWidth(20)
private Integer resiUserCount;
//注册党员数
@ExcelProperty(value = "注册党员数")
@ColumnWidth(20)
private Integer partyMemberCount;
//事件总数
@ExcelProperty(value = "事件总数")
@ColumnWidth(20)
private Integer icEventCount;
//居民上报事件数【小程序端随手拍随时讲】
@ExcelProperty(value = "居民上报事件数")
@ColumnWidth(20)
private Integer resiEventCount;
//平台录入事件数【数字平台录入的事件数】
@ExcelProperty(value = "平台录入事件数")
@ColumnWidth(20)
private Integer pcEventCount;
//项目总数
@ExcelProperty(value = "项目总数")
@ColumnWidth(20)
private Integer projectCount;
//议题转项目数
@ExcelProperty(value = "议题转项目数")
@ColumnWidth(20)
private Integer issueProjectCount;
//事件立项数
@ExcelProperty(value = "事件立项数")
@ColumnWidth(20)
private Integer icEventProjectCount;
//直接立项项目数
@ExcelProperty(value = "立项数")
@ColumnWidth(20)
private Integer agencyProjectCount;
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/PartymemberService.java

@ -0,0 +1,12 @@
package com.epmet.dataaggre.service;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import java.util.List;
public interface PartymemberService {
List<NowStatsDataResultDTO> getNowPart(NowStatsDataFormDTO formDTO);
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -306,4 +306,6 @@ public interface DataStatsService {
Map<String, Integer> getMemberMap(String agencyId);
PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO);
List<NowStatsDataResultDTO> nowStatsData(NowStatsDataFormDTO formDTO);
}

117
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -40,10 +40,13 @@
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.service.PartymemberService;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.govproject.GovProjectService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -86,6 +89,12 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService;
@Autowired
private GovOrgService govOrgService;
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private GovProjectService govProjectService;
@Autowired
private PartymemberService partymemberService;
/**
* @Param formDTO
@ -2310,4 +2319,112 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
PageInfo<MemberProjectInfoResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
@Override
public List<NowStatsDataResultDTO> nowStatsData(NowStatsDataFormDTO formDTO) {
//1.必要参数校验及处理
String startTimeForm = formDTO.getStartTime();
if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(startTimeForm)) {
throw new RenException("请选择开始时间或查询累计值");
}
//2.查询组织信息,判断要查询下级是组织还是网格数据
ScreenAgencyOrGridListDTO agencyGrid = govOrgService.getSubAgencyOrGridList(formDTO.getCustomerId(), formDTO.getAgencyId());
if (null == agencyGrid) {
return new ArrayList<>();
}
//组织或网格Id集合
List<String> idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList());
formDTO.setDataType(!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) ? OrgTypeEnum.AGENCY.getCode() : OrgTypeEnum.GRID.getCode());
formDTO.setIdList(idList);
//3.按条件分别查询统计各业务实时数据
//3-1.注册居民、注册党员数
List<NowStatsDataResultDTO> user = epmetUserService.getNowResiUser(formDTO);
List<NowStatsDataResultDTO> party = partymemberService.getNowPart(formDTO);
//3-2.事件总数、居民上报事件数、平台录入事件数
List<NowStatsDataResultDTO> event = govProjectService.getNowIcEvent(formDTO);
//3-3.项目总数、议题转项目数、事件立项数、组织立项数
List<NowStatsDataResultDTO> project = govProjectService.getNowProject(formDTO);
Map<String, NowStatsDataResultDTO> userMap = new HashMap<>();
Map<String, NowStatsDataResultDTO> partyMap = new HashMap<>();
Map<String, NowStatsDataResultDTO> eventMap = new HashMap<>();
Map<String, NowStatsDataResultDTO> projectMap = new HashMap<>();
if ("grid".equals(formDTO.getDataType())) {
userMap = CollectionUtils.isEmpty(user) ? new HashMap<>() : user.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1));
partyMap = CollectionUtils.isEmpty(party) ? new HashMap<>() : party.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1));
eventMap = CollectionUtils.isEmpty(event) ? new HashMap<>() : event.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1));
projectMap = CollectionUtils.isEmpty(project) ? new HashMap<>() : project.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1));
}
//4.封装数据
List<NowStatsDataResultDTO> resultDTOList = new ArrayList<>();
NowStatsDataResultDTO export = new NowStatsDataResultDTO();
export.setOrgName("合计");
for (ScreenAgencyOrGridListDTO.AgencyGrid org : agencyGrid.getAgencyGridList()) {
NowStatsDataResultDTO dto = new NowStatsDataResultDTO();
dto.setOrgId(org.getOrgId());
dto.setOrgName(org.getOrgName());
//网格数据sql已统计好
if ("grid".equals(formDTO.getDataType())) {
if (userMap.containsKey(org.getOrgId())) {
dto.setResiUserCount(userMap.get(org.getOrgId()).getResiUserCount());
}
if (partyMap.containsKey(org.getOrgId())) {
dto.setPartyMemberCount(partyMap.get(org.getOrgId()).getPartyMemberCount());
}
if (eventMap.containsKey(org.getOrgId())) {
dto.setIcEventCount(eventMap.get(org.getOrgId()).getIcEventCount());
dto.setResiEventCount(eventMap.get(org.getOrgId()).getResiEventCount());
dto.setPcEventCount(eventMap.get(org.getOrgId()).getPcEventCount());
}
if (projectMap.containsKey(org.getOrgId())) {
dto.setProjectCount(projectMap.get(org.getOrgId()).getProjectCount());
dto.setIssueProjectCount(projectMap.get(org.getOrgId()).getIssueProjectCount());
dto.setIcEventProjectCount(projectMap.get(org.getOrgId()).getIcEventProjectCount());
dto.setAgencyProjectCount(projectMap.get(org.getOrgId()).getAgencyProjectCount());
}
} else {
//组织数据 需要java计算结果
int resiUserCount = (int) user.stream().filter(u -> u.getPids().contains(org.getOrgId())).count();
dto.setResiUserCount(resiUserCount);
int partyMemberCount = (int) party.stream().filter(p -> p.getPids().contains(org.getOrgId())).count();
dto.setPartyMemberCount(partyMemberCount);
int resiEventCount = (int) event.stream().filter(e -> e.getPids().contains(org.getOrgId()) && "0".equals(e.getSourceType())).count();
int pcEventCount = (int) event.stream().filter(e -> e.getPids().contains(org.getOrgId()) && !"0".equals(e.getSourceType())).count();
int icEventCount = resiEventCount + pcEventCount;
dto.setIcEventCount(icEventCount);
dto.setResiEventCount(resiEventCount);
dto.setPcEventCount(pcEventCount);
int issueProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "issue".equals(p.getOrigin())).count();
int icEventProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "ic_event".equals(p.getOrigin())).count();
int agencyProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "agency".equals(p.getOrigin())).count();
int projectCount = issueProjectCount + icEventProjectCount + agencyProjectCount;
dto.setProjectCount(projectCount);
dto.setIssueProjectCount(issueProjectCount);
dto.setIcEventProjectCount(icEventProjectCount);
dto.setAgencyProjectCount(agencyProjectCount);
}
resultDTOList.add(dto);
if (formDTO.isExport()) {
export.setResiUserCount(export.getResiUserCount() + dto.getResiUserCount());
export.setPartyMemberCount(export.getPartyMemberCount() + dto.getPartyMemberCount());
export.setIcEventCount(export.getIcEventCount() + dto.getIcEventCount());
export.setResiEventCount(export.getResiEventCount() + dto.getResiEventCount());
export.setPcEventCount(export.getPcEventCount() + dto.getPcEventCount());
export.setProjectCount(export.getProjectCount() + dto.getProjectCount());
export.setIssueProjectCount(export.getIssueProjectCount() + dto.getIssueProjectCount());
export.setIcEventProjectCount(export.getIcEventProjectCount() + dto.getIcEventProjectCount());
export.setAgencyProjectCount(export.getAgencyProjectCount() + dto.getAgencyProjectCount());
}
}
if (formDTO.isExport()) {
resultDTOList.add(export);
}
return resultDTOList;
}
}

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -1,6 +1,8 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
@ -236,4 +238,6 @@ public interface EpmetUserService {
Integer countVolunteers(String customerId, String agencyId, String staffOrgIds, String search, String resiCategory);
List<IcResiUserEntity> listVolunteers(String customerId, String agencyId, String staffOrgIds, String search, String resiCategory);
List<NowStatsDataResultDTO> getNowResiUser(NowStatsDataFormDTO formDTO);
}

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -15,6 +15,8 @@ import com.epmet.constant.BadgeConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.*;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO;
@ -90,6 +92,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
private IcResiUserDao icResiUserDao;
@Resource
private CustomerFootBarService customerFootBarService;
@Resource
private RegisterRelationDao registerRelationDao;
/**
* @Description 根据UserIds查询
@ -912,4 +916,11 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return icResiUserDao.listVolunteersByCategory(customerId, agencyId, staffOrgIds, search, resiCategory);
}
}
@Override
public List<NowStatsDataResultDTO> getNowResiUser(NowStatsDataFormDTO formDTO) {
//实时统计组织/网格下小程序端注册居民数
List<NowStatsDataResultDTO> list = registerRelationDao.selectNowResiUser(formDTO);
return list;
}
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
@ -289,4 +290,6 @@ public interface GovOrgService {
List<ResourceInfoResultDTO> getEnterpriseInfos(CoverageHomeSearchFormDTO formDTO);
Integer getEnterpriseInfosCount(CoverageHomeSearchFormDTO formDTO);
ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String customerId, String agencyId);
}

60
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -14,6 +14,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.DingTextBriefNessFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
@ -39,6 +40,9 @@ import com.epmet.dataaggre.dto.epmetuser.result.CustomerStaffResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.*;
import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.result.*;
@ -1194,12 +1198,8 @@ public class GovOrgServiceImpl implements GovOrgService {
dto.setOrgId(grid.getId());
dto.setOrgType(OrgConstant.GRID);
dto.setOrgName(grid.getGridName());
if (projectMap.containsKey(grid.getId())) {
dto.setProjectCount(projectMap.get(grid.getId()));
}
if (closedMap.containsKey(grid.getId())) {
dto.setClosedCount(closedMap.get(grid.getId()));
}
dto.setProjectCount(projectMap.getOrDefault(grid.getId(), NumConstant.ZERO));
dto.setClosedCount(closedMap.getOrDefault(grid.getId(), NumConstant.ZERO));
if (memberMap.containsKey(grid.getId())) {
dto.setMemberCount(Math.toIntExact(memberMap.get(grid.getId())));
if (NumConstant.ZERO != dto.getMemberCount()) {
@ -1302,12 +1302,9 @@ public class GovOrgServiceImpl implements GovOrgService {
//统计关闭项目数
Map<String, Integer> closedMap = govProjectService.getMemberClosedProjectMap(formDTO);
result.getList().forEach(item -> {
if (projectMap.containsKey(item.getStaffId())) {
item.setProjectCount(projectMap.get(item.getStaffId()));
}
if (projectMap.containsKey(item.getStaffId())) {
item.setClosedCount(closedMap.get(item.getStaffId()));
}
item.setProjectCount(projectMap.getOrDefault(item.getStaffId(), NumConstant.ZERO));
item.setClosedCount(closedMap.getOrDefault(item.getStaffId(), NumConstant.ZERO));
if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(item.getOrgId());
if (null != agencyInfo) {
@ -1474,4 +1471,43 @@ public class GovOrgServiceImpl implements GovOrgService {
public Integer getEnterpriseInfosCount(CoverageHomeSearchFormDTO formDTO) {
return cityManagementDao.getEnterpriseInfosCount(formDTO);
}
@Override
public ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String customerId, String agencyId) {
ScreenAgencyOrGridListDTO resultDTO = new ScreenAgencyOrGridListDTO();
List<ScreenAgencyOrGridListDTO.AgencyGrid> agencyGridList = new ArrayList<>();
//1.查询组织信息
CustomerAgencyEntity dto = customerAgencyDao.selectById(agencyId);
if (dto == null) {
log.error(String.format("组织信息不存在,组织Id->%s", agencyId));
return new ScreenAgencyOrGridListDTO();
}
//2.根据组织级别判断查询直属组织或网格列表
List<ScreenCustomerAgencyDTO> agencyList = new ArrayList<>();
List<ScreenCustomerGridDTO> gridList = new ArrayList<>();
if (!"community".equals(dto.getLevel())) {
//2-1.直属下级组织列表
agencyList = customerAgencyDao.getSubAgencyListByAgency(customerId, agencyId);
agencyList.forEach(gr->{
ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid();
org.setOrgId(gr.getAgencyId());
org.setOrgName(gr.getAgencyName());
agencyGridList.add(org);
});
} else {
//2-2.直属下级网格列表
gridList = customerGridDao.getSubGridList(customerId, agencyId);
gridList.forEach(gr->{
ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid();
org.setOrgId(gr.getGridId());
org.setOrgName(gr.getGridName());
agencyGridList.add(org);
});
}
resultDTO.setLevel(dto.getLevel());
resultDTO.setAgencyGridList(agencyGridList);
return resultDTO;
}
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java

@ -1,6 +1,8 @@
package com.epmet.dataaggre.service.govproject;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO;
import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO;
@ -180,4 +182,7 @@ public interface GovProjectService {
*/
List<EventInfoResultDTO> getEventInfos(CoverageHomeSearchFormDTO formDTO);
List<NowStatsDataResultDTO> getNowIcEvent(NowStatsDataFormDTO formDTO);
List<NowStatsDataResultDTO> getNowProject(NowStatsDataFormDTO formDTO);
}

14
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java

@ -21,8 +21,10 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.govproject.IcEventDao;
import com.epmet.dataaggre.dao.govproject.ProjectDao;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
@ -716,7 +718,7 @@ public class GovProjectServiceImpl implements GovProjectService {
*/
@Override
public Map<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> list = projectDao.getMemberProjectCount(formDTO);
List<OrgCountDTO> list = projectDao.getMemberClosedProjectCount(formDTO);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
@ -797,4 +799,14 @@ public class GovProjectServiceImpl implements GovProjectService {
return icEventDao.getEventInfos(formDTO);
}
@Override
public List<NowStatsDataResultDTO> getNowIcEvent(NowStatsDataFormDTO formDTO) {
return icEventDao.getIcEvent(formDTO);
}
@Override
public List<NowStatsDataResultDTO> getNowProject(NowStatsDataFormDTO formDTO) {
return projectDao.getNowProject(formDTO);
}
}

24
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/PartymemberServiceImpl.java

@ -0,0 +1,24 @@
package com.epmet.dataaggre.service.impl;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.service.PartymemberService;
import com.epmet.dataaggre.service.resipartymember.ResiPartymemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class PartymemberServiceImpl implements PartymemberService {
@Autowired
private ResiPartymemberService resiPartymemberService;
@Override
public List<NowStatsDataResultDTO> getNowPart(NowStatsDataFormDTO formDTO) {
return resiPartymemberService.getNowPart(formDTO);
}
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/ResiPartymemberService.java

@ -0,0 +1,12 @@
package com.epmet.dataaggre.service.resipartymember;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import java.util.List;
public interface ResiPartymemberService {
List<NowStatsDataResultDTO> getNowPart(NowStatsDataFormDTO formDTO);
}

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/impl/ResiPartymemberServiceImpl.java

@ -0,0 +1,29 @@
package com.epmet.dataaggre.service.resipartymember.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.resipartymember.ResiPartymemberDao;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.service.resipartymember.ResiPartymemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
@DataSource(DataSourceConstant.RESI_PARTYMEMBER)
public class ResiPartymemberServiceImpl implements ResiPartymemberService {
@Autowired
private ResiPartymemberDao resiPartymemberDao;
@Override
public List<NowStatsDataResultDTO> getNowPart(NowStatsDataFormDTO formDTO) {
return resiPartymemberDao.getNowPart(formDTO);
}
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml

@ -169,6 +169,11 @@ dynamic:
url: @datasource.druid.heart.url@
username: @datasource.druid.heart.username@
password: @datasource.druid.heart.password@
partymember:
driver-class-name: com.mysql.cj.jdbc.Driver
url: @datasource.druid.partymember.url@
username: @datasource.druid.partymember.username@
password: @datasource.druid.partymember.password@
feign:
hystrix:
enabled: true

40
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml

@ -3,4 +3,44 @@
<mapper namespace="com.epmet.dataaggre.dao.epmetuser.RegisterRelationDao">
<select id="selectNowResiUser" resultType="com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO">
<choose>
<when test="dataType != null and dataType == 'agency' ">
SELECT
agency_id orgId,
agency_id_path pids
FROM register_relation
WHERE del_flag = '0'
AND first_register = '1'
AND customer_id = #{customerId}
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
</when>
<otherwise>
SELECT
grid_id orgId,
SUM(first_register = '1') resiUserCount
FROM
register_relation
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
GROUP BY grid_id
</otherwise>
</choose>
</select>
</mapper>

17
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

@ -309,4 +309,21 @@
OR PIDS LIKE CONCAT('%', #{agencyId}, '%'))
</select>
<select id="getSubAgencyListByAgency" resultType="com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO">
SELECT
customer_id AS customerId,
id AS agencyId,
organization_name AS agencyName,
level AS level,
area_code AS areaCode,
parent_area_code AS parentAreaCode,
pids
FROM
customer_agency
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND pid = #{agencyId}
</select>
</mapper>

15
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml

@ -181,4 +181,19 @@
AND cg.DEL_FLAG = '0'
</select>
<select id="getSubGridList" resultType="com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO">
SELECT
customer_id AS customerId,
id AS gridId,
grid_name AS gridName,
pid AS parentAgencyId,
pids AS allParentIds
FROM
customer_grid
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND pid = #{agencyId}
</select>
</mapper>

44
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml

@ -27,4 +27,48 @@
AND EVENT_CONTENT LIKE CONCAT('%',#{name},'%')
</if>
</select>
<select id="getIcEvent" resultType="com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO">
<choose>
<when test="dataType != null and dataType == 'agency' ">
SELECT
agency_id orgId,
grid_pids pids,
source_type sourceType
FROM ic_event
WHERE del_flag = '0'
AND customer_id = #{customerId}
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
</when>
<otherwise>
SELECT
grid_id orgId,
COUNT(id) icEventCount,
SUM(source_type = '0') resiEventCount,
SUM(source_type != '0') pcEventCount
FROM
ic_event
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
GROUP BY grid_id
</otherwise>
</choose>
</select>
</mapper>

43
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml

@ -539,4 +539,47 @@
AGENCY_ID
</select>
<select id="getNowProject" resultType="com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO">
<choose>
<when test="dataType != null and dataType == 'agency' ">
SELECT
agency_id orgId,
org_id_path pids,
origin origin
FROM project
WHERE del_flag = '0'
AND customer_id = #{customerId}
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
</when>
<otherwise>
SELECT
grid_id orgId,
COUNT(id) projectCount,
SUM(origin = 'issue') issueProjectCount,
SUM(origin = 'ic_event') icEventProjectCount,
SUM(origin = 'agency') agencyProjectCount
FROM
project
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
GROUP BY grid_id
</otherwise>
</choose>
</select>
</mapper>

46
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resipartymember/ResiPartymemberDao.xml

@ -0,0 +1,46 @@
<?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.dataaggre.dao.resipartymember.ResiPartymemberDao">
<select id="getNowPart" resultType="com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO">
<choose>
<when test="dataType != null and dataType == 'agency' ">
SELECT
agency_id orgId,
agency_id_path pids
FROM partymember_register_relation
WHERE del_flag = '0'
AND first_register = '1'
AND customer_id = #{customerId}
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
</when>
<otherwise>
SELECT
grid_id orgId,
SUM(first_register = '1') partyMemberCount
FROM
partymember_register_relation
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
<if test=" null != startTime and startTime != '' ">
AND created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND created_time <![CDATA[ <= ]]> #{endTime}
</if>
GROUP BY grid_id
</otherwise>
</choose>
</select>
</mapper>

5
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -43,6 +43,11 @@
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>pli-power-base-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

17
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java

@ -0,0 +1,17 @@
package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
public interface PliPowerService {
/**
* 访客登出
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author zhy
* @date 2022/5/30 10:25
*/
Result visitorLogout(VisitorLogoutFormDTO formDTO);
}

31
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java

@ -0,0 +1,31 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
import com.epmet.plugin.power.feign.PliPowerFeignClient;
import com.epmet.service.PliPowerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description
* @ClassName StatsUserServiceImpl
* @Auth wangc
* @Date 2020-06-29 09:41
*/
@Service
public class PliPowerServiceImpl implements PliPowerService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PliPowerFeignClient pliPowerFeignClient;
@Override
public Result visitorLogout(VisitorLogoutFormDTO formDTO) {
return pliPowerFeignClient.visitorLogout(formDTO);
}
}

41
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java

@ -0,0 +1,41 @@
package com.epmet.task;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO;
import com.epmet.service.PliPowerService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 访客登出
*
* @author zhy
* @date 2022/5/30 10:23
*/
@Component("pliVisitorLogoutTask")
public class PliVisitorLogoutTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PliPowerService pliPowerService;
@Override
public void run(String params) {
logger.info("VisitorLogoutTask定时任务正在执行,参数为:{}", params);
VisitorLogoutFormDTO formDTO = new VisitorLogoutFormDTO();
if (StringUtils.isNotBlank(params)) {
formDTO = JSON.parseObject(params, VisitorLogoutFormDTO.class);
}
Result result = pliPowerService.visitorLogout(formDTO);
if (result.success()) {
logger.info("VisitorLogoutTask定时任务执行成功");
} else {
logger.error("VisitorLogoutTask定时任务执行失败:" + result.getMsg());
}
}
}

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java

@ -86,7 +86,7 @@ public class IcBulidingAddFormDTO implements Serializable {
/**
* 排序
*/
@NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class})
// @NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class})
private BigDecimal sort = NumConstant.ZERO_DECIMAL;
/**

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java

@ -41,4 +41,6 @@ public class StaffListResultDTO implements Serializable {
*/
private String mobile="";
private Boolean staffEnabledStatus = false;
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -325,6 +325,7 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
sf.setStaffName(stf.getStaffName());
sf.setStaffHeadPhoto(stf.getStaffHeadPhoto());
sf.setGender(stf.getGender());
sf.setStaffEnabledStatus(true);
}
});
//人员角色信息
@ -374,7 +375,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
});
});
});
resultDTO.setAgencyStaffList(agencyStaffList);
Map<Boolean, List<StaffListResultDTO>> collect = agencyStaffList.stream().collect(Collectors.groupingBy(StaffListResultDTO::getStaffEnabledStatus));
resultDTO.setAgencyStaffList(CollectionUtils.isNotEmpty(collect.get(true)) ? collect.get(true) : new ArrayList<>());
resultDTO.setDepartmentList(departmentList);
resultDTO.setGridList(gridList);
return resultDTO;

6
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java

@ -51,7 +51,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.Date;
@ -107,10 +106,11 @@ public class DepartmentServiceImpl implements DepartmentService {
Result<AddDepartmentResultDTO> result = new Result<AddDepartmentResultDTO>();
AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO();
CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class);
if (formDTO.getTotalUser() > NumConstant.ZERO) {
if (null != formDTO.getTotalUser() && formDTO.getTotalUser() > NumConstant.ZERO) {
entity.setTotalUser(formDTO.getTotalUser());
}else{
entity.setTotalUser(NumConstant.ZERO);
}
entity.setTotalUser(NumConstant.ZERO);
//1:查询当前组织机构信息,获取客户Id
CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getAgencyId());
entity.setCustomerId(parentEntity.getCustomerId());

73
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java

@ -0,0 +1,73 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
public class OrgProjectListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -3317804468566708838L;
/**
* 组织/网格Id
*/
private String orgId;
/**
* 组织agency 网格grid
*/
private String orgType;
/**
* 上报渠道 来源议题issue 项目立项:agency 事件:ic_event 工作人员上报:work_event
*/
private String origin;
/**
* 上报人姓名
*/
private String staffName;
/**
* 手机号
*/
private String mobile;
//手机号对应工作人员Id集合
private List<String> staffIds;
/**
* 事件内容
*/
private String backGround;
/**
* 事件类型 一类二类Id集合
*/
private List<String> firstIdList;
private List<String> secondIdList;
/**
* 事件状态 处理中 pending已结案 closed
*/
private String status;
/**
* 起始上报时间 精确到秒
*/
private String startTime;
/**
* 终止上报时间 精确到秒
*/
private String endTime;
/**
* 处置选项 筛选自己参与的项目 有值就按staffId查
*/
private String staffId;
/**
* 分页参数
*/
private Integer pageNo = 1;
private Integer pageSize = 20;
private Boolean isPage = true;
//token中信息
private String userId;
private String customerId;
}

2
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@ -29,6 +30,7 @@ public class ProjectResponseFormDTO implements Serializable {
/**
* 公开答复内容
*/
@NotBlank(message = "公开答复不能为空")
@Length(max = 1000, message = "公开答复不能超过1000个字符")
private String publicReply;
/**

2
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@ -30,6 +31,7 @@ public class ReturnFromDTO implements Serializable {
/**
* 公开答复内容
*/
@NotBlank(message = "公开答复不能为空")
@Length(max = 1000, message = "公开答复不能超过1000个字符")
private String publicReply;
/**

1
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java

@ -22,6 +22,7 @@ public class TransferFormDTO implements Serializable {
@NotBlank(message = "项目人员关联Id不能为空")
private String projectStaffId;
@NotBlank(message = "公开答复不能为空")
@Length(max=1000,message = "公开答复内容不能超过1000位")
private String publicReply;

106
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java

@ -0,0 +1,106 @@
package com.epmet.dto.result;
import com.epmet.dto.form.FileDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class OrgProjectListResultDTO implements Serializable {
private static final long serialVersionUID = 2374701362057175388L;
/**
* 项目ID
*/
private String projectId;
/**
* 所属组织ID
*/
private String agencyId;
/**
* 上报渠道 agency:网格上报 ic_event:居民上报 work_event:巡查上报 issue:议题上报
*/
private String origin;
/**
* 一级分类
*/
private String firstName;
private String firstId;
/**
* 二级分类
*/
private String secondName;
private String secondId;
/**
* 事件标题
*/
private String title;
/**
* 所属网格
*/
private String gridName;
private String gridId;
/**
* 地址
*/
private String address;
/**
* 报事人
*/
private String staffName;
private String staffId;
/**
* 上报人电话
*/
private String mobile;
/**
* 上报时间
*/
private String createdTime;
/**
* 事件内容
*/
private String backGround;
/**
* 结案说明
*/
private String publicReply;
/**
* 办结时间
*/
private String endTime;
/**
* 办结部门
*/
private String departmentName;
/**
* 处理建议[创建节点的公开答复]
*/
private String createPublicReply;
/**
* 图片url集合
*/
private List<FileDTO> urlList;
private String imageUrl;
/**
* 状态 处理中 pending已结案 closed
*/
private String status;
private String statusValue;
/**
* 是否需要自己处理 true:需要 false:不需要
*/
private Boolean processable = false;
}

64
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -17,11 +17,21 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.NumConstant;
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.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
@ -30,15 +40,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.excel.OrgProjectListExcel;
import com.epmet.excel.ProjectExcel;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.service.ProjectService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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;
@ -51,6 +66,7 @@ import java.util.Map;
*/
@RestController
@RequestMapping("project")
@Slf4j
public class ProjectController {
@Autowired
@ -387,4 +403,52 @@ public class ProjectController {
public Result<List<ProjectDTO>> staffPendingProject(@RequestBody ProjectListFromDTO fromDTO){
return new Result<List<ProjectDTO>>().ok(projectService.staffPendingProject(fromDTO));
}
/**
* Desc: 数字平台-项目管理列表
*/
@PostMapping("orgprojectlist")
public Result<PageData<OrgProjectListResultDTO>> orgProjectList(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO) {
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
return new Result<PageData<OrgProjectListResultDTO>>().ok(projectService.orgProjectList(formDTO));
}
@PostMapping("orgprojectexport")
public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
formDTO.setIsPage(false);
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.ONE_THOUSAND);
try {
String fileName = "项目管理导出表" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectListExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<OrgProjectListResultDTO> data = null;
List<OrgProjectListExcel> list = null;
do {
data = projectService.orgProjectList(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), OrgProjectListExcel.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();
}
}
}
}

1
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java

@ -299,4 +299,5 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
List<ProjectManageListResultDTO> getProjectManageList(ProjectManageListFormDTO formDTO);
List<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO);
}

2
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java

@ -56,7 +56,7 @@ public class ProjectProcessEntity extends BaseEpmetEntity {
* 负负责人ID
*/
private String staffId;
private String staffName;
/**
* 处理结案close退回return部门流转transfer创建项目created
*/

126
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java

@ -0,0 +1,126 @@
package com.epmet.excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import java.util.List;
/**
* 事件管理表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-17
*/
@Data
public class OrgProjectListExcel {
private static final long serialVersionUID = 2374701362057175388L;
/**
* 上报渠道 agency:网格上报 resi_event:居民上报 work_event:巡查上报 issue:议题上报
*/
@ExcelProperty(value = "上报渠道")
@ColumnWidth(25)
private String origin;
/**
* 一级分类名称
*/
@ExcelProperty(value = "一级分类")
@ColumnWidth(20)
private String firstName;
/**
* 二级分类名称
*/
@ExcelProperty(value = "二级分类")
@ColumnWidth(20)
private String secondName;
/**
* 事件标题
*/
@ExcelProperty(value = "事件标题")
@ColumnWidth(30)
private String title;
/**
* 所属网格
*/
@ExcelProperty(value = "所属网格")
@ColumnWidth(30)
private String gridName;
/**
* 地址
*/
@ExcelProperty(value = "地址")
@ColumnWidth(30)
private String address;
/**
* 报事人
*/
@ExcelProperty(value = "报事人")
@ColumnWidth(20)
private String staffName;
/**
* 上报人电话
*/
@ExcelProperty(value = "上报人电话")
@ColumnWidth(20)
private String mobile;
/**
* 上报时间
*/
@ExcelProperty(value = "上报时间")
@ColumnWidth(25)
private String createdTime;
/**
* 事件内容
*/
@ExcelProperty(value = "事件内容")
@ColumnWidth(40)
private String backGround;
/**
* 结案说明
*/
@ExcelProperty(value = "结案说明")
@ColumnWidth(30)
private String publicReply;
/**
* 办结时间
*/
@ExcelProperty(value = "办结时间")
@ColumnWidth(25)
private String endTime;
/**
* 办结部门
*/
@ExcelProperty(value = "办结部门")
@ColumnWidth(30)
private String departmentName;
/**
* 处理建议[创建节点的公开答复]
*/
@ExcelProperty(value = "处理建议")
@ColumnWidth(25)
private String createPublicReply;
/**
* 图片url集合
*/
@ExcelProperty(value = "图片")
@ColumnWidth(30)
private String imageUrl;
/**
* 状态 处理中 pending已结案 closed
*/
@ExcelProperty(value = "状态")
@ColumnWidth(20)
private String status;
}

1
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -396,4 +396,5 @@ public interface ProjectService extends BaseService<ProjectEntity> {
void projectListExport(HttpServletResponse response,ProjectManageListFormDTO formDTO) throws IOException;
List<ProjectDTO> staffPendingProject(ProjectListFromDTO fromDTO);
PageData<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO);
}

13
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -25,10 +25,13 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
@ -250,6 +253,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
}
//2:项目处理进展列表新增数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(staffEntity.getCustomerId(), staffEntity.getStaffId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = ConvertUtils.sourceToTarget(formDTO, ProjectProcessEntity.class);
processEntity.setCustomerId(staffEntity.getCustomerId());
processEntity.setDepartmentName(staffEntity.getDepartmentName());
@ -260,6 +267,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
processEntity.setDepartmentId(staffEntity.getDepartmentId());
processEntity.setGridId(staffEntity.getGridId());
processEntity.setOrgIdPath(staffEntity.getOrgIdPath());
processEntity.setStaffName(staffInfo.getRealName());
projectProcessDao.insert(processEntity);
//3:项目人员关联表新增部门流转数据
List<TickStaffFormDTO> staffList = formDTO.getStaffList();
@ -636,6 +644,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
}
//2:项目处理进展列表新增数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(staffEntity.getCustomerId(), staffEntity.getStaffId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = ConvertUtils.sourceToTarget(formDTO, ProjectProcessEntity.class);
processEntity.setCustomerId(staffEntity.getCustomerId());
processEntity.setDepartmentName(staffEntity.getDepartmentName());
@ -648,6 +660,7 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
processEntity.setOrgIdPath(staffEntity.getOrgIdPath());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setStaffName(staffInfo.getRealName());
projectProcessDao.insert(processEntity);
//2-1.项目附件表新增数据
if ((null != formDTO.getPublicFile() && formDTO.getPublicFile().size() > NumConstant.ZERO)

121
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -41,17 +41,13 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.*;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectSatisfactionDetailDao;
import com.epmet.dao.ProjectSatisfactionStatisticsDao;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.excel.ProjectListExportExcel;
import com.epmet.feign.*;
import com.epmet.redis.ProjectRedis;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.TopicAttachmentFormDTO;
@ -158,6 +154,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectSatisfactionDetailDao satisfactionDetailDao;
@Autowired
private IcEventService icEventService;
@Autowired
private ProjectStaffDao projectStaffDao;
private final static String ONE_DAY = "<1";
@ -496,6 +494,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(fromDTO.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(operatorProjectReference.getCustomerId());
@ -513,6 +512,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
ProjectDTO projectDto = ConvertUtils.sourceToTarget(projectEntity, ProjectDTO.class);
projectDto.setUpdatedTime(projectDto.getCreatedTime());
projectProcessEntity.setCostWorkdays(getDetentionDays(projectDto));
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
ProjectOrgRelationEntity orientRelation = relationDao.selectByProjectStaffId(operatorProjectReference.getId());
@ -698,7 +698,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("com.epmet.service.impl.ProjectServiceImpl.closed,找不到结案工作人员的相关记录,参数:{}",JSON.toJSONString(fromDTO));
throw new RenException("找不到结案工作人员的相关记录");
}
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(fromDTO.getCustomerId(), fromDTO.getUserId());
//结案记录加入项目进展表
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
@ -719,6 +719,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setCostWorkdays(getDetentionDays(projectDto));
projectProcessEntity.setAssistanceUnitType(fromDTO.getAssistanceUnitType());
projectProcessEntity.setAssistanceUnitId(fromDTO.getAssistanceUnitId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//保存附件
@ -912,6 +913,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(sourceProjectStaff.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId());
@ -925,6 +927,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(fromDTO.getPublicReply());
projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark());
projectProcessEntity.setStaffId(fromDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//将人员关系添加到项目关联表
@ -1187,6 +1190,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
baseDao.insert(projectEntity);
//3:项目处理进展表新增数据
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(issueDTO.getCustomerId(), formDTO.getStaffId());
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(issueDTO.getCustomerId());
@ -1197,6 +1201,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (issueDTO.getOrgId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -1403,6 +1408,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -1416,6 +1422,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(formDTO.getPublicReply());
projectProcessEntity.setInternalRemark(formDTO.getInternalRemark());
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目节点历时
@ -2115,6 +2122,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//结案记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(sourceProjectStaff.getCustomerId(), fromDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(fromDTO.getProjectId());
projectProcessEntity.setCustomerId(sourceProjectStaff.getCustomerId());
@ -2128,6 +2136,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setPublicReply(fromDTO.getPublicReply());
projectProcessEntity.setInternalRemark(fromDTO.getInternalRemark());
projectProcessEntity.setStaffId(fromDTO.getUserId());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -2294,6 +2303,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staffInfo = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -2309,6 +2319,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
projectProcessEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
projectProcessEntity.setStaffName(staffInfo.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -2429,6 +2440,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
ProjectStaffDTO projectStaff = projectStaffService.get(formDTO.getProjectStaffId());
//处理响应记录加入项目进展表
CustomerStaffInfoCacheResult staff = getStaffInfo(projectStaff.getCustomerId(), formDTO.getUserId());
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
@ -2443,6 +2455,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
projectProcessEntity.setInternalRemark(formDTO.getInternalRemark());
projectProcessEntity.setStaffId(formDTO.getUserId());
projectProcessEntity.setIsSend(NumConstant.ONE);
projectProcessEntity.setStaffName(staff.getRealName());
projectProcessService.insert(projectProcessEntity);
//项目附件表新增数据 sun 2020.12.22
@ -3454,4 +3467,100 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return projectList;
}
private CustomerStaffInfoCacheResult getStaffInfo(String customerId, String staffId) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
return staffInfo;
}
@Override
public PageData<OrgProjectListResultDTO> orgProjectList(OrgProjectListFormDTO formDTO) {
//1.整理查询条件
if(StringUtils.isEmpty(formDTO.getOrgType())){
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException("获取工作人员信息失败");
}
formDTO.setOrgId(staffInfo.getAgencyId());
formDTO.setOrgType("agency");
}
if (StringUtils.isNoneBlank(formDTO.getMobile())) {
//有手机号筛选条件的选按手机号查找工作人员,在按staffId查项目
GetByRealNamesFormDTO dto = new GetByRealNamesFormDTO();
dto.setCustomerId(formDTO.getCustomerId());
dto.setMobile(formDTO.getMobile());
Result<List<CustomerStaffDTO>> staffResult = epmetUserOpenFeignClient.getByRealNames(dto);
if (!staffResult.success()) {
throw new RenException("获取工作人员基础信息失败......");
}
if (null != staffResult.getData() && staffResult.getData().size() > NumConstant.ZERO) {
List<String> staffIds = staffResult.getData().stream().map(CustomerStaffDTO::getUserId).collect(Collectors.toList());
formDTO.setStaffIds(staffIds);
}
}
//2.按条件筛选数据 列表/导出查询
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage());
List<OrgProjectListResultDTO> list = baseDao.orgProjectList(formDTO);
PageInfo<OrgProjectListResultDTO> pageInfo = new PageInfo<>(list);
if (list.size() < NumConstant.ONE) {
return new PageData<>(list, pageInfo.getTotal());
}
//3.封装数据
//3-1.查询分类信息
IssueProjectCategoryDictListFormDTO dictFormDto = new IssueProjectCategoryDictListFormDTO();
dictFormDto.setCustomerId(formDTO.getCustomerId());
Result<List<IssueProjectCategoryDictDTO>> categoryRes = govIssueOpenFeignClient.getCategoryList(dictFormDto);
if (!categoryRes.success() || org.springframework.util.CollectionUtils.isEmpty(categoryRes.getData())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取项目分类名称异常");
}
Map<String, String> categoryMap = categoryRes.getData().stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getId, IssueProjectCategoryDictDTO::getCategoryName));
//3-2.封装数据
for (OrgProjectListResultDTO dto : list) {
//分类名称
dto.setFirstName(categoryMap.get(dto.getFirstId()));
dto.setSecondName(categoryMap.get(dto.getSecondId()));
try {
//工作人员基础信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), dto.getStaffId());
if (null != staffInfo) {
dto.setStaffName(staffInfo.getRealName());
dto.setMobile(staffInfo.getMobile());
}
//拼接网格名
if (StringUtils.isNoneBlank(dto.getGridId())) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId());
if (null != gridInfo) {
dto.setGridName((StringUtils.isEmpty(gridInfo.getAllParentName()) ? "" : gridInfo.getAllParentName() + "-") + gridInfo.getGridNamePath());
}
} else {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId());
if (null != agencyInfo) {
dto.setGridName((StringUtils.isEmpty(agencyInfo.getAllParentName()) ? "" : agencyInfo.getAllParentName() + "-") + agencyInfo.getOrganizationName());
}
}
} catch (Exception e) {
log.warn("获取组织/网格缓存失败");
}
//图片url拼接
if (!org.springframework.util.CollectionUtils.isEmpty(dto.getUrlList())) {
String imageUrl = StringUtils.join(dto.getUrlList().stream().map(FileDTO::getUrl).collect(Collectors.toList())," <br/> ");
dto.setImageUrl(imageUrl);
}
//判断未结案项目是否涉及需要当前工作人员处理[列表查询需要,导出的不需要这段逻辑]
if (formDTO.getIsPage() && "pending".equals(dto.getStatusValue())) {
//查询当前工作人员是否存在当前项目的未处理节点
ProjectStaffDTO projectStaff = projectStaffDao.selectLatestByProjectIdAndStaffId(dto.getProjectId(), formDTO.getUserId());
if (null != projectStaff) {
dto.setProcessable(true);
}
}
}
return new PageData<>(list, pageInfo.getTotal());
}
}

15
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -427,6 +427,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -437,6 +441,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -760,6 +765,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -770,6 +779,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());
@ -1281,6 +1291,10 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
projectService.insert(projectEntity);
//3-2.项目进展表新增第一个节点数据
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败");
}
ProjectProcessEntity processEntity = new ProjectProcessEntity();
processEntity.setProjectId(projectEntity.getId());
processEntity.setCustomerId(formDTO.getCustomerId());
@ -1291,6 +1305,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
processEntity.setInternalRemark(formDTO.getInternalRemark());
processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId());
processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType());
processEntity.setStaffName(staffInfo.getRealName());
agencyDeptGrid.getAgencyList().forEach(agency -> {
if (loginUser.getAgencyId().equals(agency.getId())) {
processEntity.setDepartmentName(agency.getOrganizationName());

2
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql

@ -0,0 +1,2 @@
ALTER TABLE `epmet_gov_project`.`project_process`
ADD COLUMN `STAFF_NAME` varchar(64) NULL COMMENT '负责人姓名' AFTER `STAFF_ID`;

117
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -620,4 +620,121 @@
GROUP BY t.PROJECT_ID
ORDER BY p.CREATED_TIME DESC
</select>
<resultMap id="OrgProjectListMap" type="com.epmet.dto.result.OrgProjectListResultDTO">
<id property="projectId" column="id" />
<id property="agencyId" column="agency_id" />
<result property="origin" column="origin"/>
<result property="title" column="title"/>
<result property="gridId" column="grid_id"/>
<result property="address" column="locate_address"/>
<result property="staffId" column="created_by"/>
<result property="createdTime" column="created_time"></result>
<result property="backGround" column="back_ground"></result>
<result property="status" column="status"></result>
<result property="statusValue" column="statusValue"></result>
<result property="firstId" column="category_pids"></result>
<result property="secondId" column="category_id"></result>
<result property="publicReply" column="public_reply"></result>
<result property="endTime" column="end_time"></result>
<result property="departmentName" column="department_name"></result>
<result property="createPublicReply" column="public_reply"></result>
<collection property="urlList" ofType="com.epmet.dto.form.FileDTO" column="id" select="getIndexExplainTreeByPid">
</collection>
</resultMap>
<select id="orgProjectList" resultMap="OrgProjectListMap">
SELECT
p.id,
p.agency_id,
( CASE WHEN p.origin = 'issue' THEN '议题上报' WHEN p.origin = 'ic_event' THEN '居民上报' WHEN p.origin = 'work_event' THEN '巡查上报' WHEN p.origin = 'agency' THEN '网格上报' ELSE '' END ) AS origin,
p.title,
p.grid_id,
p.locate_address,
p.created_by,
DATE_FORMAT(p.created_time, '%Y-%m-%d %H:%i:%s') AS created_time,
p.back_ground,
( CASE WHEN p.`STATUS` = 'pending' THEN '处理中' WHEN p.`STATUS` = 'closed' THEN '已结案' ELSE '' END ) AS status,
p.`status` AS statusValue,
pc.category_pids,
pc.category_id,
pp.public_reply,
DATE_FORMAT(pp.end_time, '%Y-%m-%d %H:%i:%s') AS end_time,
pp.department_name,
ppc.public_reply
FROM
project p
<!-- 项目分类现在是只能选一个二类,查询只查一个分类数据 -->
INNER JOIN (
select PROJECT_ID,category_pids,category_id
from project_category
where del_flag = '0' and customer_id = #{customerId}
group by project_id
ORDER BY created_time desc
)pc ON p.id = pc.project_id
<if test="firstIdList != null and firstIdList.size() > 0"><!-- 一类查询条件 -->
<foreach collection="firstIdList" item="firstId" open="AND pc.category_pids IN (" separator="," close=")">
#{firstId}
</foreach>
</if>
<if test="secondIdList != null and secondIdList.size() > 0"><!-- 二类查询条件 -->
<foreach collection="secondIdList" item="secondId" open="AND pc.category_id IN (" separator="," close=")">
#{secondId}
</foreach>
</if>
LEFT JOIN project_process pp ON p.id = pp.project_id AND pp.operation = 'close'
INNER JOIN project_process ppc ON p.id = ppc.project_id AND ppc.operation = 'created'
<if test="staffName != null and staffName != ''"><!-- 上报人姓名对应查询条件,上报人就是对应的创建节点的人 -->
AND ppc.staff_name like concat('%', #{staffName}, '%')
</if>
<if test="staffId != null and staffId != ''"><!-- 处置选项对应查询条件,查自己涉及要干的活的项目 -->
INNER JOIN(SELECT DISTINCT PROJECT_ID FROM project_staff WHERE del_flag = '0' AND staff_id = #{staffId} ) ps ON p.id = ps.project_id
</if>
WHERE
p.del_flag = '0'
AND p.customer_id = #{customerId}
<if test="orgType != null and orgType != ''"><!-- 组织/网格对应查询条件 -->
<choose>
<when test="orgType == 'agency'">
AND p.org_id_path like concat('%', #{orgId}, '%')
</when>
<when test="orgType == 'grid'">
AND p.grid_id = #{orgId}
</when>
</choose>
</if>
<if test="origin != null and origin != ''">
AND p.origin = #{origin}
</if>
<if test="staffIds != null and staffIds.size() > 0"><!-- 上报人手机号对应查询条件 -->
<foreach collection="staffIds" item="createdId" open="AND p.created_by IN (" separator="," close=")">
#{createdId}
</foreach>
</if>
<if test="backGround != null and backGround != ''">
AND p.back_ground like concat('%', #{backGround}, '%')
</if>
<if test="status != null and status != ''">
AND p.status = #{status}
</if>
<if test=" null != startTime and startTime != '' ">
AND p.created_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="null != endTime and endTime != '' ">
AND p.created_time <![CDATA[ <= ]]> #{endTime}
</if>
</select>
<select id="getIndexExplainTreeByPid" resultType="com.epmet.dto.form.FileDTO"><!-- 项目创建节点的图片附件 -->
SELECT
ppa.attachment_url AS url
FROM
project_process pp
INNER JOIN project_process_attachment ppa ON pp.id = ppa.process_id AND ppa.attachment_type = 'image' AND ppa.del_flag = '0'
WHERE
pp.del_flag = '0'
and pp.operation IN('created', 'close')
AND pp.project_id = #{projectId}
ORDER BY
pp.created_time ASC, ppa.created_time ASC
</select>
</mapper>

6
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml

@ -92,7 +92,11 @@
ID AS processId,
OPERATION_NAME AS processName,
UNIX_TIMESTAMP(created_time) AS processTime,
DEPARTMENT_NAME,
CASE
WHEN STAFF_NAME IS NULL THEN
DEPARTMENT_NAME
ELSE CONCAT( DEPARTMENT_NAME, '(', STAFF_NAME, ')' )
END AS "departmentName",
PUBLIC_REPLY,
INTERNAL_REMARK,
IS_SEND,

10
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java

@ -44,6 +44,16 @@ public class PartymemberRegisterRelationDTO implements Serializable {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 网格Id (customer_grid.id)
*/

10
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java

@ -40,6 +40,16 @@ public class PartymemberRegisterRelationEntity extends BaseEpmetEntity {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 网格Id (customer_grid.id)
*/

10
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java

@ -5,7 +5,10 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.*;
@ -601,6 +604,13 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService
PartymemberRegisterRelationEntity registerRelationEntity = new PartymemberRegisterRelationEntity();
registerRelationEntity.setCustomerId(partyMemberInfoDTO.getCustomerId());
registerRelationEntity.setGridId(partyMemberInfoDTO.getGridId());
//表中新增字段 为其赋值
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(partyMemberInfoDTO.getGridId());
if (null == gridInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格缓存失败", "获取网格缓存失败");
}
registerRelationEntity.setAgencyId(gridInfo.getPid());
registerRelationEntity.setAgencyIdPath(gridInfo.getPids());
registerRelationEntity.setUserId(partyMemberInfoDTO.getUserId());
registerRelationEntity.setFirstRegister(1);
registerRelationEntity.setRegister(1);

71
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java

@ -0,0 +1,71 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2022/8/5 15:03
* @DESC
*/
@Data
public class PaCustomerDTO implements Serializable {
/**
* 客户id本主键和oper_crm.customer.id一致
*/
private String id;
/**
* 客户名称默认是根组织名称
*/
private String customerName;
/**
* 是否已经完成客户信息初始化 0未初始化1已初始化
*/
private Integer isInitialize;
/**
* 客户类型 mini 微信小程序客户 app 第三方app客户
*/
private String type;
/**
* 数据来源(dev:开发 test:体验 prod:生产)
*/
private String source;
/**
* 删除标识0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

10
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java

@ -44,6 +44,16 @@ public class RegisterRelationDTO implements Serializable {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 用户Id (user.id)
*/

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java

@ -23,4 +23,8 @@ public class GetByRealNamesFormDTO implements Serializable {
* 工作人员姓名集合
*/
private Set<String> realNames;
/**
* 手机号模糊查询
*/
private String mobile;
}

25
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/8/5 11:11
* @DESC
*/
@Data
public class IcUserMatchGridFormDTO implements Serializable {
private static final long serialVersionUID = -5252136149475817567L;
public interface IcUserMatchGridForm{}
@NotBlank(message = "idCard不能为空",groups = IcUserMatchGridForm.class)
private String idCard;
@NotBlank(message = "appId不能为空",groups = IcUserMatchGridForm.class)
private String appId;
}

22
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/8/5 11:14
* @DESC
*/
@Data
public class IcUserMatchGridResultDTO implements Serializable {
private static final long serialVersionUID = -3215965796907113918L;
private String gridId;
private String customerId;
private String gridName;
}

12
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -1293,5 +1293,17 @@ public class IcResiUserController implements ResultDataResolver {
return new Result<PageData<Map<String, Object>>>().ok(icResiUserService.listResiZhzl(pageFormDTO));
}
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param tokenDto
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
@PostMapping("icUserMatchGrid")
public Result<IcUserMatchGridResultDTO> icUserMatchGrid(@RequestBody IcUserMatchGridFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, IcUserMatchGridFormDTO.IcUserMatchGridForm.class);
return new Result<IcUserMatchGridResultDTO>().ok(icResiUserService.icUserMatchGrid(formDTO));
}
}

10
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java

@ -40,6 +40,16 @@ public class RegisterRelationEntity extends BaseEpmetEntity {
*/
private String customerId;
/**
* 所属组织机构Id
*/
private String agencyId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 用户Id (user.id)
*/

9
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -496,4 +496,13 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
* @return
*/
PageData<Map<String, Object>> listResiZhzl(IcResiUserPageFormDTO pageFormDTO);
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO);
}

52
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@ -3244,4 +3245,55 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
pageInfo.setList(list);
return new PageData<>(pageInfo.getList(), pageInfo.getTotal());
}
/**
* Desc: 居民首次进入小程序可以根据输入身份证信息查询在数字社区居民信息中的网格匹配不成功提示
* @param formDTO
* @author zxc
* @date 2022/8/5 11:17
*/
@Override
public IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO) {
PaCustomerDTO customerInfo = getCustomerInfo(formDTO.getAppId());
if (null == customerInfo){
throw new EpmetException("根据APPID查询客户信息失败:"+formDTO.getAppId());
}
LambdaQueryWrapper<IcResiUserEntity> qw = new LambdaQueryWrapper<>();
qw.eq(IcResiUserEntity::getCustomerId,customerInfo.getId())
.eq(IcResiUserEntity::getIdCard,formDTO.getIdCard());
IcResiUserEntity icResiUserEntity = baseDao.selectOne(qw);
if (null == icResiUserEntity){
throw new EpmetException(EpmetErrorCode.NOT_MATCH_IC_USER_ERROR.getCode());
}
IcUserMatchGridResultDTO result = new IcUserMatchGridResultDTO();
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(icResiUserEntity.getGridId());
if (null == gridInfo){
throw new EpmetException("查询网格信息失败:"+icResiUserEntity.getGridId());
}
result.setCustomerId(customerInfo.getId());
result.setGridId(icResiUserEntity.getGridId());
result.setGridName(gridInfo.getGridNamePath());
return result;
}
public PaCustomerDTO getCustomerInfo(String appId) {
JSONObject jsonObject = new JSONObject();
String data = HttpClientManager.getInstance().sendPostByJSON("https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/" + appId, JSON.toJSONString(jsonObject)).getData();
logger.info("ThirdLoginServiceImpl.getCustomerInfo:httpclient->url:https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/ ,结果->" + data);
JSONObject toResult = JSON.parseObject(data);
Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class);
if (null != toResult.get("code")) {
mapToResult.setCode(((Integer) toResult.get("code")).intValue());
}
if (!mapToResult.success()) {
logger.error(String.format("根据appId查询客户Id失败,对应appId->" + appId));
throw new RenException(mapToResult.getMsg());
}
Object PublicCustomerResultDTO = mapToResult.getData();
JSONObject json = JSON.parseObject(PublicCustomerResultDTO.toString());
Map<String, Object> map = (Map) json.get("customer");
PaCustomerDTO customer = ConvertUtils.mapToEntity(map, PaCustomerDTO.class);
logger.info("小程序登陆third服务获取客户用户信息PaCustomerDTO->" + customer);
return customer;
}
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java

@ -23,7 +23,11 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.UserConstant;
@ -344,6 +348,13 @@ public class RegisterRelationServiceImpl extends BaseServiceImpl<RegisterRelatio
RegisterRelationEntity entity = new RegisterRelationEntity();
entity.setCustomerId(userResiInfoDTO.getCustomerId());
entity.setGridId(userResiInfoDTO.getGridId());
//表中新增字段 为其赋值
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(userResiInfoDTO.getGridId());
if (null == gridInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格缓存失败", "获取网格缓存失败");
}
entity.setAgencyId(gridInfo.getPid());
entity.setAgencyIdPath(gridInfo.getPids());
entity.setUserId(userResiInfoDTO.getUserId());
//首次注册用户 (0表示不参与计数 1表示参与计数)
entity.setFirstRegister(NumConstant.ONE_STR);

11
epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml

@ -470,9 +470,14 @@
WHERE
del_flag = '0'
AND customer_id = #{customerId}
<foreach collection="realNames" item="name" open="AND real_name IN (" separator="," close=")">
#{name}
</foreach>
<if test="realNames != null and realNames.size() > 0">
<foreach collection="realNames" item="name" open="AND real_name IN (" separator="," close=")">
#{name}
</foreach>
</if>
<if test="mobile != null and mobile != ''">
AND mobile LIKE concat('%', #{mobile}, '%')
</if>
</select>
<select id="gridStaffMobileList" resultType="com.epmet.dto.result.GridMobileListResultDTO"></select>

Loading…
Cancel
Save