Browse Source

Merge branches 'dev' and 'dev_ic_v2' of http://121.42.41.42:7070/r/epmet-cloud into dev_ic_v2

master
yinzuomei 4 years ago
parent
commit
e143af2701
  1. 26
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/BaseService.java
  2. 55
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/impl/BaseServiceImpl.java
  3. 3
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java
  4. 38
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  5. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolRecordDTO.java
  6. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java
  7. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordListResultDTO.java
  8. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  9. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StaffPatrolRecordEntity.java
  10. 161
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  11. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  12. 1
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  13. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  14. 34
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  15. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  16. 5
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/CompartmentResultDTO.java
  17. 8
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/ScoreListResultDTO.java
  18. 5
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java
  19. 5
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java
  20. 11
      epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencyScoreDao.xml
  21. 11
      epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCommunityScoreDao.xml
  22. 11
      epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexGridScoreDao.xml
  23. 1
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml
  24. 15
      epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml
  25. 3
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java
  26. 6
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/result/EventInfoResultDTO.java
  27. 7
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/GridIssueCountResultDTO.java
  28. 98
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/GridUserInfoDTO.java
  29. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  30. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java
  31. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueMainDailyDao.java
  32. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  33. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java
  34. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java
  35. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridMonthlyDao.java
  36. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java
  37. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
  38. 113
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java
  39. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictDepartmentServiceImpl.java
  40. 48
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java
  41. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java
  42. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java
  43. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java
  44. 35
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  45. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java
  46. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java
  47. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java
  48. 147
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
  49. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/CustomerProjectCategoryDictService.java
  50. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/CustomerProjectCategoryDictServiceImpl.java
  51. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/FactRegUserGridMonthlyService.java
  52. 17
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/FactRegUserGridMonthlyServiceImpl.java
  53. 6
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java
  54. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java
  55. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml
  56. 23
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueMainDailyDao.xml
  57. 129
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  58. 46
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  59. 4
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml
  60. 3
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcoll/FactIndexGovrnAblityOrgMonthlyDao.xml
  61. 13
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml
  62. 19
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridMonthlyDao.xml
  63. 16
      epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java
  64. BIN
      epmet-module/data-statistical/data-statistical-server/src/test/java/resources/疑难杂症之-数据名词解释及算法.docx
  65. BIN
      epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注.xlsx
  66. BIN
      epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx
  67. BIN
      epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重(新客户适用)-党群e事通和亿联互助平台在用.xlsx
  68. 9
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java
  69. 24
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  70. 53
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  71. 33
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java
  72. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java
  73. 49
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  74. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  75. 161
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseConflictsResolveDTO.java
  76. 136
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseGridInfoDTO.java
  77. 191
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseGridUserDTO.java
  78. 35
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExDeptDTO.java
  79. 33
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExUserDTO.java
  80. 4
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/ExDeptFormDTO.java
  81. 2
      epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/StaffBaseInfoFormDTO.java
  82. 2
      epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml
  83. 1
      epmet-module/open-data-worker/open-data-worker-server/pom.xml
  84. 22
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/ExDeptController.java
  85. 15
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/ExUserController.java
  86. 41
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/BaseGridInfoDao.java
  87. 41
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/BaseGridUserDao.java
  88. 1
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/ExDeptDao.java
  89. 11
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/ExUserDao.java
  90. 187
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseConflictsResolveEntity.java
  91. 1
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseDisputeProcessEntity.java
  92. 106
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseGridInfoEntity.java
  93. 161
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseGridUserEntity.java
  94. 21
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java
  95. 33
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExUserEntity.java
  96. 14
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java
  97. 19
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java
  98. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java
  99. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java
  100. 14
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java

26
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/BaseService.java

@ -123,5 +123,31 @@ public interface BaseService<T> {
*/
boolean deleteBatchIds(Collection<? extends Serializable> idList);
/**
* <p>
* 存在更新记录否插入一条记录
* </p>
*
* @param entity 实体对象
*/
boolean saveOrUpdate(T entity);
/**
* <p>
* 批量修改插入
* </p>
*
* @param entityList 实体对象集合
*/
boolean saveOrUpdateBatch(Collection<T> entityList);
/**
* <p>
* 批量修改插入
* </p>
*
* @param entityList 实体对象集合
* @param batchSize 更新批次数量
*/
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
}

55
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/impl/BaseServiceImpl.java

@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
@ -31,6 +33,7 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 基础服务类所有Service都要继承
@ -298,4 +301,56 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T> implements Bas
public boolean deleteBatchIds(Collection<? extends Serializable> idList) {
return SqlHelper.delBool(baseDao.deleteBatchIds(idList));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdate(T entity) {
if (null != entity) {
Class<?> cls = entity.getClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
Object idVal = ReflectionKit.getMethodValue(cls, entity, tableInfo.getKeyProperty());
return StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal)) ? insert(entity) : updateById(entity);
}
return false;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdateBatch(Collection<T> entityList) {
return saveOrUpdateBatch(entityList, 100);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize) {
Assert.notEmpty(entityList, "error: entityList must not be empty");
Class<?> cls = currentModelClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
try (SqlSession batchSqlSession = sqlSessionBatch()) {
int i = 0;
for (T entity : entityList) {
Object idVal = ReflectionKit.getMethodValue(cls, entity, keyProperty);
if (StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal))) {
batchSqlSession.insert(sqlStatement(SqlMethod.INSERT_ONE), entity);
} else {
MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
param.put(Constants.ENTITY, entity);
batchSqlSession.update(sqlStatement(SqlMethod.UPDATE_BY_ID), param);
}
// 不知道以后会不会有人说更新失败了还要执行插入 😂😂😂
if (i >= 1 && i % batchSize == 0) {
batchSqlSession.flushStatements();
}
i++;
}
batchSqlSession.flushStatements();
}
return true;
}
}

3
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java

@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
@ -14,7 +15,7 @@ import java.io.Serializable;
@AllArgsConstructor
public class DisputeProcessMQMsg implements Serializable {
private String customerId;
private String projectId;
private List<String> projectId;
/**
* 操作类型新增:add 修改删除:edit
*/

38
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -743,44 +743,6 @@ public class DateUtils {
return minusMonthId;
}
/**
* @Description 根据传入的时间维度判断格式
* @param dimension
* @return
* @author wangc
* @date 2020.09.24 10:11
**/
public static String identifyTimeDimension(String dimension){
//yyyyMMdd DATE_PATTERN_YYYYMMDD
//yyyyMM DATE_PATTERN_YYYYMM
//yyyy DATE_PATTERN_YYYY
//yyyyWcc
//yyyyQc
if(dimension.length() == NumConstant.EIGHT){
SimpleDateFormat df = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
try{ df.parse(dimension); }catch (ParseException e){ return null; }
return "date";
}else if(dimension.length() == NumConstant.FOUR){
SimpleDateFormat df = new SimpleDateFormat(DATE_PATTERN_YYYY);
try{df.parse(dimension);}catch (ParseException e){return null;}
return "year";
}else if(dimension.length() == NumConstant.SEVEN){
if(dimension.contains("W")){
return "week";
}else return null;
}else if(dimension.length() == NumConstant.SIX){
if(dimension.contains("Q")){
return "quarter";
}else{
SimpleDateFormat df = new SimpleDateFormat(DATE_PATTERN_YYYYMM);
try{df.parse(dimension);}catch (ParseException e){return null;}
return "month";
}
}else return null;
}
/**
* 指定月份的开始时间
* @param date

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolRecordDTO.java

@ -88,6 +88,11 @@ public class StaffPatrolRecordDTO implements Serializable {
*/
private String status;
/**
* 是否手动结束 手动:1定时任务传参:0
*/
private Integer isHandEnd;
/**
* 删除标识 0.未删除 1.已删除
*/

2
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java

@ -15,7 +15,7 @@ import java.io.Serializable;
public class PatrolDailySumResult implements Serializable {
private static final long serialVersionUID = 310405655189243944L;
private String fullAgencyId;
private String orgId;
private Integer patrolTotal;
private Integer totalTime;
}

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordListResultDTO.java

@ -45,4 +45,9 @@ public class PatrolRecordListResultDTO implements Serializable {
*/
private List<PatrolRecordDetailDTO> details;
/**
* 是否手动结束 手动:1定时任务传参:0
*/
private Integer isHandEnd;
}

4
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java

@ -39,12 +39,12 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
/**
* desc:获取巡查次数和时间
* @param agencyFullIdList
* @param orgIdList
* @param startDateId
* @param endDateId
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(@Param("agencyFullIdList") List<String> agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId);
List<PatrolDailySumResult> getPatrolSumList(@Param("orgIdList") List<String> orgIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId);
/**
* @Description 直属组织或网格下巡查数据

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StaffPatrolRecordEntity.java

@ -88,4 +88,9 @@ public class StaffPatrolRecordEntity extends BaseEpmetEntity {
*/
private String status;
/**
* 是否手动结束 手动:1定时任务传参:0
*/
private Integer isHandEnd;
}

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

@ -1,54 +1,54 @@
package com.epmet.dataaggre.service.datastats.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
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.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
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.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
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.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
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.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
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.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
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.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
* @Author sun
@ -1538,24 +1538,24 @@ public class DataStatsServiceImpl implements DataStatsService {
return null;
}
List<String> gridIdList = subAgencyList.stream().map(ScreenCustomerGridDTO::getGridId).collect(Collectors.toList());
//查询组织的话题转议题数据
//查询网格议题数据
List<SubGridFormDTO.Topic> toIssueStart = dataStatsDao.getSubGridTopicShiftIssue(gridIdList, breforeStartDate);
List<SubGridFormDTO.Topic> toIssueEnd = dataStatsDao.getSubGridTopicShiftIssue(gridIdList, formDTO.getEndDateId());
Map<String, Integer> toIssueStartMap = toIssueStart.stream().collect(Collectors.toMap(SubGridFormDTO.Topic::getGridId, SubGridFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
Map<String, Integer> toIssueEndMap = toIssueEnd.stream().collect(Collectors.toMap(SubGridFormDTO.Topic::getGridId, SubGridFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
//查询组织的议题转项目数据
List<SubGridIssueResultDTO> toProjectStart = dataStatsDao.getSubGridIssue(gridIdList, breforeStartDate);
List<SubGridIssueResultDTO> toProjectEnd = dataStatsDao.getSubGridIssue(gridIdList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubGridIssueResultDTO::getGridId, SubGridIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubGridIssueResultDTO::getGridId, SubGridIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
//查询网格项目数据
List<SubGridProjectResultDTO> toProjectStart = dataStatsDao.getSubGridProject(gridIdList, breforeStartDate);
List<SubGridProjectResultDTO> toProjectEnd = dataStatsDao.getSubGridProject(gridIdList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getProjectTotal, (o1, o2) -> o1));
//查询组织已关闭的项目数据
List<SubGridProjectResultDTO> closeProjectStart = dataStatsDao.getSubGridProject(gridIdList, breforeStartDate);
List<SubGridProjectResultDTO> closeProjectEnd = dataStatsDao.getSubGridProject(gridIdList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = closeProjectStart.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//List<SubGridProjectResultDTO> closeProjectStart = dataStatsDao.getSubGridProject(gridIdList, breforeStartDate);
//List<SubGridProjectResultDTO> closeProjectEnd = dataStatsDao.getSubGridProject(gridIdList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//巡查次数和时间
List<PatrolDailySumResult> patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(gridIdList,formDTO.getStartDateId(),formDTO.getEndDateId());
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1));
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getOrgId, o -> o, (o1, o2) -> o1));
subAgencyList.forEach(agency->{
String gridId = agency.getGridId();
@ -1566,7 +1566,7 @@ public class DataStatsServiceImpl implements DataStatsService {
resultDTO.setIssueToProjectTotal(getTotal(toProjectStartMap,toProjectEndMap,gridId));
resultDTO.setClosedProjectTotal(getTotal(closeProjectStartMap,closeProjectEndMap,gridId));
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(agency.getAllParentIds());
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(gridId);
setPatrolAttr(resultDTO, patrolRecordDTO);
result.add(resultDTO);
});
@ -1578,25 +1578,24 @@ public class DataStatsServiceImpl implements DataStatsService {
}
List<String> agencyList = subAgencyList.stream().map(ScreenCustomerAgencyDTO::getAgencyId).collect(Collectors.toList());
//查询组织的话题转议题数据
//查询组织的议题数据
List<SubAgencyFormDTO.Topic> toIssueStart = dataStatsDao.getSubAgencyTopicShiftIssue(agencyList, breforeStartDate);
List<SubAgencyFormDTO.Topic> toIssueEnd = dataStatsDao.getSubAgencyTopicShiftIssue(agencyList, formDTO.getEndDateId());
Map<String, Integer> toIssueStartMap = toIssueStart.stream().collect(Collectors.toMap(SubAgencyFormDTO.Topic::getAgencyId, SubAgencyFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
Map<String, Integer> toIssueEndMap = toIssueEnd.stream().collect(Collectors.toMap(SubAgencyFormDTO.Topic::getAgencyId, SubAgencyFormDTO.Topic::getShiftedIssueTotal, (o1, o2) -> o1));
//查询组织的议题转项目数据
List<SubAgencyIssueResultDTO> toProjectStart = dataStatsDao.getSubAgencyIssue(agencyList, breforeStartDate);
List<SubAgencyIssueResultDTO> toProjectEnd = dataStatsDao.getSubAgencyIssue(agencyList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubAgencyIssueResultDTO::getAgencyId, SubAgencyIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubAgencyIssueResultDTO::getAgencyId, SubAgencyIssueResultDTO::getShiftProjectTotal, (o1, o2) -> o1));
//查询组织的项目数据
List<SubAgencyProjectResultDTO> toProjectStart = dataStatsDao.getSubAgencyProject(agencyList, breforeStartDate);
List<SubAgencyProjectResultDTO> toProjectEnd = dataStatsDao.getSubAgencyProject(agencyList, formDTO.getEndDateId());
Map<String, Integer> toProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getProjectTotal, (o1, o2) -> o1));
Map<String, Integer> toProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getProjectTotal, (o1, o2) -> o1));
//查询组织已关闭的项目数据
List<SubAgencyProjectResultDTO> closeProjectStart = dataStatsDao.getSubAgencyProject(agencyList, breforeStartDate);
List<SubAgencyProjectResultDTO> closeProjectEnd = dataStatsDao.getSubAgencyProject(agencyList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = closeProjectStart.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//List<SubAgencyProjectResultDTO> closeProjectStart = dataStatsDao.getSubAgencyProject(agencyList, breforeStartDate);
//List<SubAgencyProjectResultDTO> closeProjectEnd = dataStatsDao.getSubAgencyProject(agencyList, formDTO.getEndDateId());
Map<String, Integer> closeProjectStartMap = toProjectStart.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
Map<String, Integer> closeProjectEndMap = toProjectEnd.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1));
//巡查次数和时间
List<String> agencyFullIds = subAgencyList.stream().map(o -> o.getPids().concat(StrConstant.COLON).concat(o.getAgencyId())).collect(Collectors.toList());
List<PatrolDailySumResult> patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(agencyFullIds,breforeStartDate,formDTO.getEndDateId());
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1));
List<PatrolDailySumResult> patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(agencyList,formDTO.getStartDateId(),formDTO.getEndDateId());
Map<String, PatrolDailySumResult> patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getOrgId, o -> o, (o1, o2) -> o1));
subAgencyList.forEach(agency->{
String agencyId = agency.getAgencyId();
@ -1606,8 +1605,7 @@ public class DataStatsServiceImpl implements DataStatsService {
resultDTO.setTopicToIssueTotal(getTotal(toIssueStartMap,toIssueEndMap,agencyId));
resultDTO.setIssueToProjectTotal(getTotal(toProjectStartMap,toProjectEndMap,agencyId));
resultDTO.setClosedProjectTotal(getTotal(closeProjectStartMap,closeProjectEndMap,agencyId));
String fullAgencyId = agency.getPids().concat(StrConstant.COLON).concat(agencyId);
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(fullAgencyId);
PatrolDailySumResult patrolRecordDTO = patrolListMap.get(agencyId);
setPatrolAttr(resultDTO,patrolRecordDTO);
result.add(resultDTO);
});
@ -1944,13 +1942,14 @@ public class DataStatsServiceImpl implements DataStatsService {
CustomerDataManageResultDTO resultDTO = new CustomerDataManageResultDTO();
List<CustomerDataManageResultDTO.CustomerDataManage> dataManageList = new ArrayList<>();
//1.必要参数校验及处理
if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) {
String startTimeForm = formDTO.getStartTime();
if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(startTimeForm)) {
throw new RenException("请选择开始时间或查询累计值");
}
//入参有开始时间的则需要减去一天
if (StringUtils.isNotBlank(formDTO.getStartTime())) {
if (StringUtils.isNotBlank(startTimeForm)) {
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
Date date = format.parse(formDTO.getStartTime());
Date date = format.parse(startTimeForm);
Date yesterday = DateUtils.addDateDays(date, -1);
formDTO.setStartTime(format.format(yesterday));
}
@ -1983,8 +1982,10 @@ public class DataStatsServiceImpl implements DataStatsService {
List<CustomerDataManageResultDTO.CustomerDataManage> projectEnd = dataStatsDao.projectList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> pEndMap = new HashMap<>();
projectEnd.stream().forEach(u->pEndMap.put(u.getOrgId(),u));
//巡查数据不区分区间差值,只计算累计值,人员做去重处理且是有巡查记录的人员
List<CustomerDataManageResultDTO.CustomerDataManage> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO);
//巡查数据不区分区间差值,只计算累计值,人员做去重处理且是有巡查记录的人员 ==
CustomerDataManageFormDTO patrolForm = ConvertUtils.sourceToTarget(formDTO,CustomerDataManageFormDTO.class);
patrolForm.setStartTime(startTimeForm);
List<CustomerDataManageResultDTO.CustomerDataManage> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(patrolForm);
//4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> uStartMap = new HashMap<>();

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

@ -35,12 +35,12 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
/**
* desc:获取组织或网格的 时间段内的总次数等
* @param agencyList
* @param orgIdList
* @param startDateId
* @param endDateId
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(List<String> agencyList, String startDateId, String endDateId);
List<PatrolDailySumResult> getPatrolSumList(List<String> orgIdList, String startDateId, String endDateId);
/**
* @Description 直属组织或网格下巡查数据

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

@ -209,6 +209,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
dto.setStatus(record.getStatus());
dto.setPatrolStartTime(DateUtils.format(record.getPatrolStartTime(), DateUtils.DATE_TIME_PATTERN));
dto.setPatrolEndTime(DateUtils.format(record.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN));
dto.setIsHandEnd(record.getIsHandEnd());
Integer minutes;
if (("patrolling").equals(record.getStatus())) {
minutes = DateUtils.calculateMin(record.getPatrolStartTime(), new Date());

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

@ -28,14 +28,14 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
/**
* desc:获取组织或网格的 时间段内的总次数等
*
* @param agencyFullIdList
* @param orgIdList
* @param startDateId
* @param endDateId
* @return
*/
@Override
public List<PatrolDailySumResult> getPatrolSumList(List<String> agencyFullIdList, String startDateId, String endDateId) {
return baseDao.getPatrolSumList(agencyFullIdList,startDateId,endDateId);
public List<PatrolDailySumResult> getPatrolSumList(List<String> orgIdList, String startDateId, String endDateId) {
return baseDao.getPatrolSumList(orgIdList,startDateId,endDateId);
}
/**

34
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -221,7 +221,7 @@
agency_id AS agencyId,
issue_total AS shiftedIssueTotal
FROM
fact_topic_issue_agency_daily
fact_issue_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
@ -266,7 +266,7 @@
grid_id AS gridId,
issue_total AS shiftedIssueTotal
FROM
fact_topic_issue_grid_daily
fact_issue_grid_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
@ -831,9 +831,15 @@
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
<if test='startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
@ -871,9 +877,15 @@
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
<if test='startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
@ -911,9 +923,15 @@
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
<if test='startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
@ -951,9 +969,15 @@
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
<if test='startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
@ -991,9 +1015,15 @@
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
<if test='startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>

11
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

@ -2,16 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao">
<select id="getPatrolSumList" resultType="com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult">
<foreach collection="agencyFullIdList" item="fullAgencyId" separator="UNION ALL">
<foreach collection="orgIdList" item="orgId" separator="UNION ALL">
SELECT
LEFT (GRID_PIDS,LENGTH( #{fullAgencyId} )) fullAgencyId,
#{orgId} orgId,
sum(patrol_total) patrolTotal,
sum(TOTAL_TIME) totalTime
FROM stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND date_id BETWEEN #{startDateId} and #{endDateId}
AND GRID_PIDS like CONCAT( #{fullAgencyId},'%')
GROUP BY fullAgencyId
AND date_id <![CDATA[>=]]> #{startDateId}
AND date_id <![CDATA[<=]]> #{endDateId}
AND GRID_PIDS like CONCAT('%', #{orgId},'%')
GROUP BY orgId
</foreach>
</select>

5
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/CompartmentResultDTO.java

@ -16,6 +16,11 @@ public class CompartmentResultDTO implements Serializable {
private static final long serialVersionUID = 7963177476365327829L;
/**
* 组织对应的客户Id
*/
private String customerId = "";
/**
* 当前所选组织
*/

8
epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/ScoreListResultDTO.java

@ -44,6 +44,12 @@ public class ScoreListResultDTO implements Serializable {
private Double subAgencyWeight;
/**
* 下级指数=indexTotalOriginScore-selfOriginScore
*/
private Double subOriginScore;
/**
* 下级指数四舍五入前端不用此值
*/
private Double subOriginScoreBak;
}

5
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java

@ -264,6 +264,7 @@ public class IndexServiceImpl implements IndexService {
indexRank.setServiceAbility(getRound(indexRank.getServiceAbility()));
indexRank.setTotalIndex(getRound(indexRank.getPartyDevAbility() + indexRank.getGovernAbility() + indexRank.getServiceAbility()));
});
subAgencyIndexRankResultDTOS.sort(Comparator.comparing(SubAgencyIndexRankResultDTO::getTotalIndex).reversed());
return subAgencyIndexRankResultDTOS;
}
@ -297,6 +298,7 @@ public class IndexServiceImpl implements IndexService {
rank.setTotalIndex(getRound(rank.getPartyDevAbility() + rank.getGovernAbility() + rank.getServiceAbility()));
});
}
subAgencyIndexRankResultDTOS.sort(Comparator.comparing(AnNingSubAgencyIndexRankResultDTO::getTotalIndex).reversed());
return subAgencyIndexRankResultDTOS;
}
@ -316,6 +318,7 @@ public class IndexServiceImpl implements IndexService {
indexRank.setServiceAbility(getRound(indexRank.getServiceAbility()));
indexRank.setTotalIndex(getRound(indexRank.getPartyDevAbility() + indexRank.getGovernAbility() + indexRank.getServiceAbility()));
});
subAgencyIndexRankResultDTOS.sort(Comparator.comparing(SubAgencyIndexRankResultDTO::getTotalIndex).reversed());
return subAgencyIndexRankResultDTOS;
}
@ -437,6 +440,7 @@ public class IndexServiceImpl implements IndexService {
indexRank.setOrgType("street");
indexRank.setTotalIndex(getRound(indexRank.getPartyDevAbility() + indexRank.getGovernAbility() + indexRank.getServiceAbility()));
});
streetList.sort(Comparator.comparing(SubAgencyIndexRankResultDTO::getTotalIndex).reversed());
return streetList;
}
// 网格会根据中央区选择具体某个街道,变化
@ -446,6 +450,7 @@ public class IndexServiceImpl implements IndexService {
indexRank.setOrgType("grid");
indexRank.setTotalIndex(getRound(indexRank.getPartyDevAbility() + indexRank.getGovernAbility() + indexRank.getServiceAbility()));
});
gridList.sort(Comparator.comparing(SubAgencyIndexRankResultDTO::getTotalIndex).reversed());
return gridList;
}

5
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/fact/impl/FactIndexServiceImpl.java

@ -305,7 +305,8 @@ public class FactIndexServiceImpl implements FactIndexService {
//3.根据组织级别拼接查询条件,判断查询不同数据表
//区县级、乡镇街道级
if ("district".equals(agency.getAgencyLevel()) || "street".equals(agency.getAgencyLevel())) {
if ("district".equals(agency.getAgencyLevel())) {
//这里 给孔村镇街道降级为 街道
if ("district".equals(agency.getAgencyLevel()) && !"2fe0065f70ca0e23ce4c26fca5f1d933".equals(agency.getCustomerId())) {
formDTO.setAllParentIndexCode(FactConstant.QUAN_QU_XIANG_GUAN + ":" + formDTO.getIndexCode());
} else {
formDTO.setAllParentIndexCode(FactConstant.JIE_DAO_XIANG_GUAN + ":" + formDTO.getIndexCode());
@ -336,7 +337,7 @@ public class FactIndexServiceImpl implements FactIndexService {
list.stream().filter(dto -> dto.getIndexCode().equals(result.getKey())).forEach(l -> {
result.setShowType(l.getValueType());
//整数
if (FactConstant.DECIMAL.equals(l.getValueType())) {
if (FactConstant.INTEGER.equals(l.getValueType())) {
BigDecimal num = new BigDecimal(result.getValue()).setScale(0, BigDecimal.ROUND_HALF_UP);
result.setValue(num.toString());
}

11
epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexAgencyScoreDao.xml

@ -31,11 +31,14 @@
ROUND(self.self_score,1) AS selfOriginScore,
self.SELF_WEIGHT AS agencyWeight,
ROUND(self.sub_score*fact.WEIGHT, 1) AS "subAgencyScore",
ROUND(self.sub_score,1) AS subOriginScore,
ROUND(self.sub_score,1) AS subOriginScoreBak,
ROUND(fact.score,1)-ROUND(self.self_score,1) as subOriginScore,
self.SUB_WEIGHT AS subAgencyWeight
FROM
fact_index_agency_score fact
INNER JOIN fact_index_agency_self_sub_score self ON fact.agency_id = self.agency_id
INNER JOIN fact_index_agency_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code
WHERE
@ -60,7 +63,9 @@
self.SUB_WEIGHT AS "subWeight"
FROM
fact_index_agency_score fact
INNER JOIN fact_index_agency_self_sub_score self ON fact.agency_id = self.agency_id
INNER JOIN fact_index_agency_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code
WHERE

11
epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexCommunityScoreDao.xml

@ -31,11 +31,14 @@
ROUND(self.self_score, 1) AS selfOriginScore,
self.SELF_WEIGHT AS agencyWeight,
ROUND(ROUND(self.sub_score,1)*fact.WEIGHT, 1) AS "subAgencyScore",
ROUND(self.sub_score, 1) AS subOriginScore,
ROUND(self.sub_score, 1) AS subOriginScoreBak,
ROUND(fact.score,1)-ROUND(self.self_score, 1) as subOriginScore,
self.SUB_WEIGHT AS subAgencyWeight
FROM
fact_index_community_score fact
INNER JOIN fact_index_community_self_sub_score self ON fact.agency_id = self.agency_id
INNER JOIN fact_index_community_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code
WHERE
@ -60,7 +63,9 @@
self.SUB_WEIGHT AS "subWeight"
FROM
fact_index_community_score fact
INNER JOIN fact_index_community_self_sub_score self ON fact.agency_id = self.agency_id
INNER JOIN fact_index_community_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code
WHERE

11
epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactIndexGridScoreDao.xml

@ -31,11 +31,14 @@
ROUND(self.self_score, 1) AS selfOriginScore,
self.SELF_WEIGHT AS agencyWeight,
ROUND(ROUND(self.sub_score,1)*fact.WEIGHT, 1) AS "subAgencyScore",
ROUND(self.sub_score, 1) AS subOriginScore,
ROUND(self.sub_score, 1) AS subOriginScoreBak,
ROUND(fact.score,1)-ROUND(self.self_score, 1) as subOriginScore,
self.SUB_WEIGHT AS subAgencyWeight
FROM
fact_index_grid_score fact
INNER JOIN fact_index_grid_self_sub_score self ON fact.grid_id = self.grid_id
INNER JOIN fact_index_grid_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.grid_id = self.grid_id
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code
@ -61,7 +64,9 @@
self.SUB_WEIGHT AS "subWeight"
FROM
fact_index_grid_score fact
INNER JOIN fact_index_grid_self_sub_score self ON fact.grid_id = self.grid_id
INNER JOIN fact_index_grid_self_sub_score self ON
fact.CUSTOMER_ID = self.CUSTOMER_ID
AND fact.grid_id = self.grid_id
AND fact.agency_id = self.agency_id
AND fact.month_id = self.month_id
AND fact.index_code = self.parent_index_code

1
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml

@ -192,6 +192,7 @@
<select id="getAgencyInfoByAegncyId" resultType="com.epmet.evaluationindex.screen.dto.result.CompartmentResultDTO">
SELECT
CUSTOMER_ID AS customerId,
agency_id AS agencyId,
agency_name AS name,
level AS level,

15
epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml

@ -307,12 +307,21 @@
</if>
WHERE
score.del_flag = '0'
score.del_flag = '0'
AND score.MONTH_ID = #{monthId,jdbcType=VARCHAR}
<if test="customerId != null and customerId != ''">
AND score.CUSTOMER_ID = #{customerId,jdbcType=VARCHAR}
</if>
AND score.PARENT_ID = #{agencyId,jdbcType=VARCHAR}
AND score.MONTH_ID = #{monthId,jdbcType=VARCHAR}
<!--孔村镇ID 则跳过 直接查社区级别的-->
<choose>
<when test="agencyId == '1234085031077498881'">
AND org.PIDS like concat(#{agencyId},'%')
AND org.LEVEL = 'community'
</when>
<otherwise>
AND score.PARENT_ID = #{agencyId,jdbcType=VARCHAR}
</otherwise>
</choose>
<choose>
<when test="orgType != null and orgType != ''">
AND score.ORG_TYPE = #{orgType,jdbcType=VARCHAR}

3
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
@ -14,7 +15,7 @@ import java.io.Serializable;
public class EventInfoFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 8479649048108914555L;
private String customerId;
private String projectId;
private List<String> projectId;
/**
* 操作类型新增:add 修改删除:edit
*/

6
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/result/EventInfoResultDTO.java

@ -24,7 +24,7 @@ public class EventInfoResultDTO implements Serializable {
*/
private String customerId;
private Integer detpId;
private String orgId;
private String reporterId;
@ -47,7 +47,7 @@ public class EventInfoResultDTO implements Serializable {
* 事件类别
*/
private String eventCategory;
private String parentEventCategory;
/**
* 上报时间 YYYY-MM-DD HH:MM:SS
*/
@ -78,6 +78,8 @@ public class EventInfoResultDTO implements Serializable {
*/
private String successfulOrNo;
private String status;
/**
* 办结层级
01省自治区直辖市

7
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/GridIssueCountResultDTO.java

@ -1,8 +1,10 @@
package com.epmet.dto.extract.form;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author zxc
@ -27,4 +29,9 @@ public class GridIssueCountResultDTO implements Serializable {
* 网格ID
*/
private String gridId;
/**
* 网格议题转项目率
*/
private BigDecimal issueToProjectRatio = NumConstant.ZERO_DECIMAL;
}

98
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/GridUserInfoDTO.java

@ -79,104 +79,6 @@ public class GridUserInfoDTO implements Serializable {
*/
private String sex;
/**
* 民族[字典表主键]
*/
private String nation;
/**
* 政治面貌[字典表主键]
*/
private String paerty;
/**
* 出生日期[YYYY-MM-DD]
*/
private Date birthday;
/**
* 学历[字典表主键]
*/
private String education;
/**
* 入职时间
*/
private Date entryDate;
/**
* 是否离职
*/
private String isLeave;
/**
* 离职时间
*/
private Date leaveDate;
/**
* 网格员年收入
*/
private String income;
/**
* 是否社区两委委员[YN]
*/
private String isCommittee;
/**
* 是否社区工作者[YN]
*/
private String isCommunityWorkers;
/**
* 是否社会工作者[YN]
*/
private String isSocialWorker;
/**
* 是否村民小组长[YN
*/
private String isVillageLeader;
/**
* 是否警务助理[YN]
*/
private String isPoliceAssistant;
/**
* 是否人民调解员[YN]
*/
private String isMediator;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -601,16 +601,15 @@ public class DemoController {
private CalGridIndexService calGridIndexService;
@PostMapping("gridparty")
public void gridParty(){
String customerId = "45687aa479955f9d06204d415238f7cc";
// String customerId = "epmettest";
String monthId = "202009";
public Result gridParty(@RequestParam("customerId")String customerId,@RequestParam("monthId")String monthId){
calGridIndexService.calGridIndexPartyAbility(customerId,monthId);
return new Result();
}
@PostMapping("gridgovern")
public void gridGovern(@RequestParam("customerId")String customerId,@RequestParam("monthId")String monthId){
public Result gridGovern(@RequestParam("customerId")String customerId,@RequestParam("monthId")String monthId){
calGridIndexService.calGridIndexGovernAbility(customerId,monthId);
return new Result();
}
@PostMapping("gridservice")

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java

@ -1,7 +1,9 @@
package com.epmet.controller.external;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.screen.*;
import com.epmet.dto.screen.form.CategoryDictFormDTO;
import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO;
@ -13,6 +15,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 事件/项目采集接口入口
* @ClassName ScreenProjectDataCollController
@ -135,6 +140,15 @@ public class ScreenProjectDataCollController {
param.setCustomerId(customerId);
ValidatorUtils.validateEntity(param, ScreenCollFormDTO.CustomerIdShowGroup.class, ScreenCollFormDTO.DateIdShowGroup.class, ScreenCollFormDTO.DataListShowGroup.class);
projectDataService.collect(param);
//发送MQ消息,上报事件
param.getDataList().forEach(item -> {
List<String> projectList = new ArrayList<>();
projectList.add(item.getProjectId());
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(param.getCustomerId(), projectList, SystemMessageType.PROJECT_ADD);
projectDataService.sendProjectChangeMq(msg);
});
return new Result();
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueMainDailyDao.java

@ -67,13 +67,13 @@ public interface FactOriginIssueMainDailyDao extends BaseDao<FactOriginIssueMain
List<GridIssueCountResultDTO> selectIssueTotal(@Param("customerId") String customerId,@Param("monthId") String monthId);
/**
* @Description 查询俩月的网格议题总数
* @Description 查询议题转项目总数
* @param customerId
* @param monthId
* @author zxc
* @date 2020/9/18 10:20 上午
*/
List<GridIssueCountResultDTO> selectIssueTotalTwoMonthPlus(@Param("customerId")String customerId,@Param("monthId") String monthId,@Param("minusMonthId") String minusMonthId);
List<GridIssueCountResultDTO> selectIssueTotalShiftProject(@Param("customerId")String customerId, @Param("monthId") String monthId);
/**
* @Description 网格总项目数

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -207,7 +207,7 @@ public interface ScreenCustomerAgencyDao extends BaseDao<ScreenCustomerAgencyEnt
*/
List<ScreenProjectOrgDailyDTO> selectAgencyByCustomer(@Param("customerId")String customerId);
List<ScreenProjectOrgDailyDTO> selectAgencyByAreaCode(String areaCode);
List<ScreenProjectOrgDailyDTO> selectAgencyByAreaCode(@Param("areaCode") String areaCode);
/**
* @Description 根据areaCode查询下级组织

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java

@ -68,7 +68,7 @@ public interface ScreenProjectDataDao extends BaseDao<ScreenProjectDataEntity> {
int updateProjectSatisfactionScore(@Param("projectId")String projectId, @Param("score")BigDecimal score);
List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectId") String projectId);
List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectIds") List<String> projectIds);
/**
* @Description 查询网格下的项目分类

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java

@ -48,7 +48,9 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao<ScreenProjec
* @author zxc
* @date 2021/2/2 上午11:09
*/
List<ProjectOrgMonthlyResultDTO> selectQuantityOrgMonthly(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityOrgMonthly(
@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos,
@Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityOrgMonthlyByAgency(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
/**
@ -58,7 +60,9 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao<ScreenProjec
* @author zxc
* @date 2021/2/2 下午3:03
*/
List<ProjectOrgMonthlyResultDTO> selectQuantityGrandOrgMonthly(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityGrandOrgMonthly(
@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos,
@Param("monthId") String monthId);
List<ProjectOrgMonthlyResultDTO> selectQuantityGrandOrgMonthlyByAgency(@Param("agencyInfos") List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, @Param("monthId") String monthId);

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/user/FactRegUserGridMonthlyDao.java

@ -48,6 +48,16 @@ public interface FactRegUserGridMonthlyDao extends BaseDao<FactRegUserGridMonthl
*/
List<GridUserCountResultDTO> selectGridUserCount(String customerId, String monthId);
/**
* 网格相关-党建能力网格群众用户数网格党员用户数
* 从fact_reg_user_grid_daily这个表 sum增量为了与运营端数据导出一致
*
* @param customerId
* @param monthId
* @return
*/
List<GridUserCountResultDTO> selectGridUserCountFromDaily(@Param("customerId") String customerId, @Param("monthId")String monthId);
/**
* 查询网格下各用户数量
* @author zhaoqifeng

1
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java

@ -123,4 +123,5 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
*/
private String latestPatrolStatus;
}

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java

@ -27,6 +27,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.PreDestroy;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
@ -154,14 +155,20 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
logger.info("consumer projectChanged msg success,{}",aBoolean);
//发送项目数据上报的mq消息
String type;
if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
type = SystemMessageType.PROJECT_ADD;
} else {
type = SystemMessageType.PROJECT_EDIT;
if ("6f203e30de1a65aab7e69c058826cd80".equals(customerId)) {
if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation()) || "close".equals(msgObj.getOperation())) {
String type;
if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
type = SystemMessageType.PROJECT_ADD;
} else {
type = SystemMessageType.PROJECT_EDIT;
}
List<String> projectList = new ArrayList<>();
projectList.add(msgObj.getProjectId());
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, projectList, type);
SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
}
}
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, msgObj.getProjectId(), type);
SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】消费项目变动消息失败:",e);

113
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.service.evaluationindex.extract.dataToIndex.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
@ -35,11 +36,8 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@ -100,7 +98,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
return true;
}
// 网格群众用户数 , 网格党员用户数
List<GridUserCountResultDTO> gridUserCountList = userGridMonthlyService.selectGridUserCount(customerId, monthId);
List<GridUserCountResultDTO> gridUserCountList = userGridMonthlyService.selectGridUserCountFromDaily(customerId, monthId);
// 网格党员人均提出话题数
List<CreateTopicCountResultDTO> partyCreateTopicCountList = topicMainService.selectCreateTopicCount(customerId, monthId, NumConstant.ONE);
// 网格群众人均提出话题数
@ -112,9 +110,9 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
// 网格的发文数量
List<PublishCountResultDTO> publishCountList = articlePublishedGridDailyService.selectArticlePublishCount(customerId, monthId);
// 网格议题转项目率
List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId));
List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT);
List<GridProjectCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueTotalList, gridProjectTotalList);
List<GridIssueCountResultDTO> gridIssueTotalShiftProjectList = issueExtractService.selectIssueTotalShiftProject(customerId, monthId);
List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId);
List<GridIssueCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueTotalShiftProjectList, gridIssueTotalList);
// 建群党员数
List<PartyCreateGroupCountResultDTO> partyCreateGroupCountList = groupExtractService.selectPartyCreateGroupCount(customerId, monthId);
//结合目前产品,数据来源:话题评论、议题表决
@ -310,9 +308,13 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
List<GridIssueCountResultDTO> gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId);
//网格总项目数 从议题根据状态获取
List<GridProjectCountResultDTO> gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT);
log.info("网格总项目数{}", JSON.toJSONString(gridProjectTotalList));
//网格议题转项目率
List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId));
List<GridProjectCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridProjectTotalList);
List<GridIssueCountResultDTO> gridIssueCountList = issueExtractService.selectIssueTotalShiftProject(customerId, monthId);
log.info("网格近两个月的议题{}", JSON.toJSONString(gridIssueCountList));
List<GridIssueCountResultDTO> gridIssueShiftProjectRatio = getGridIssueShiftProjectRatio(gridIssueCountList, gridIssueTotalList);
log.info("网格议题转项目率{}", JSON.toJSONString(gridIssueShiftProjectRatio));
//网格自治项目数 从议题创建到项目关闭,包括处理人,自始至终没有出过议题所属网格
List<AutoNoMyResultDTO> projectAutoNoMyList = projectLogService.selectProjectAutoNoMy(customerId, monthId);
Map<String,Integer> autoMap = new HashMap<>(16);
@ -323,8 +325,10 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
});
}
//网格办结项目数
List<GridProjectClosedTotalResultDTO> gridProjectClosedTotalList = projectMainService.selectGridClosedProject(result.stream().map(m -> m.getGridId()).collect(Collectors.toList()), monthId, ExtractConstant.CLOSED);
List<String> allGridIds = result.stream().map(GovernAbilityGridMonthlyFormDTO::getGridId).collect(Collectors.toList());
List<GridProjectClosedTotalResultDTO> gridProjectClosedTotalList = projectMainService.selectGridClosedProject(allGridIds, monthId, ExtractConstant.CLOSED);
//网格吹哨部门准确率 【没被退回的项目数/项目总数 】
//获取网格 存在的项目id及网格Id 没有项目的网格需要过滤出来
List<TransferRightRatioResultDTO> transferRightRatioResultDTOS = projectMainService.selectTransferRightRatio(customerId, monthId);
List<TransferRightRatioResultDTO> transferRightRatioResultDTOS1 = projectLogService.selectNotReturn(customerId, monthId);
if (!CollectionUtils.isEmpty(transferRightRatioResultDTOS1)){
@ -334,16 +338,19 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
}else {
transferRightRatioResultDTOS.forEach(r -> r.setStatus(false));
}
Set<String> haveNotProjectSet = new HashSet<>(allGridIds);
Map<String, List<TransferRightRatioResultDTO>> groupByGridProject = transferRightRatioResultDTOS.stream().collect(Collectors.groupingBy(TransferRightRatioResultDTO::getGridId));
Map<String,BigDecimal> notReturnMap = new HashMap<>(16);
groupByGridProject.forEach((grid,project) -> {
AtomicReference<Integer> count = new AtomicReference<>(NumConstant.ZERO);
AtomicInteger count = new AtomicInteger(NumConstant.ZERO);
project.forEach(p -> {
if (p.getStatus().equals(false)){
count.getAndSet(count.get() + NumConstant.ONE);
count.incrementAndGet();
}
});
notReturnMap.put(grid,getRound(new BigDecimal(count.get()/project.size()).multiply(NumConstant.ONE_HUNDRED_DECIMAL)));
notReturnMap.put(grid,getRound(new BigDecimal(count.get()).divide(new BigDecimal(project.size()),NumConstant.EIGHT,BigDecimal.ROUND_HALF_UP).multiply(NumConstant.ONE_HUNDRED_DECIMAL)));
//把有项目数的网格剔除 只剩下没有项目的网格
haveNotProjectSet.remove(grid);
});
//网格内解决的项目的满意度
//项目评价(分值定义下非常满意100,满意80,不满意(一般)60)的人数的平均分(每个项目的参加人数的分数和/评论人数=一个项目的平均分)+其他项目得分/已关闭项目总数
@ -353,33 +360,23 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
// 根据网格分组
Map<String, List<ProjectEvaluateResultDTO>> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId));
groupByGrid.forEach((gridId,projectEvaluateInfoList) -> {
Map<String,Integer> scoreMap = new HashMap<>(16);
// 根据项目分组
Map<String, List<ProjectEvaluateResultDTO>> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId));
groupByProject.forEach((projectId,projectList) -> {
projectList.forEach(project -> {
switch (project.getActionCode()) {
case ExtractConstant.EVALUATE_BAD:
project.setScore(ProjectEvaluateConstant.BAD);
break;
case ExtractConstant.EVALUATE_GOOD:
project.setScore(ProjectEvaluateConstant.GOOD);
break;
case ExtractConstant.EVALUATE_PERFECT:
project.setScore(ProjectEvaluateConstant.PERFECT);
break;
default:
log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", project.getActionCode());
}
});
Integer projectAllScore = projectList.stream().mapToInt(ProjectEvaluateResultDTO::getScore).sum();
scoreMap.put(projectId,projectAllScore/projectList.size());
});
AtomicReference<Integer> allScore = new AtomicReference<>(0);
scoreMap.forEach((k,v) -> {
allScore.set(++v);
projectEvaluateInfoList.forEach(p -> {
switch (p.getActionCode()) {
case ExtractConstant.EVALUATE_BAD:
p.setScore(ProjectEvaluateConstant.BAD);
break;
case ExtractConstant.EVALUATE_GOOD:
p.setScore(ProjectEvaluateConstant.GOOD);
break;
case ExtractConstant.EVALUATE_PERFECT:
p.setScore(ProjectEvaluateConstant.PERFECT);
break;
default:
log.warn("calGridIndexGovernAbility other projectEvaluate,actionCode:{}", p.getActionCode());
}
});
resultSatisfactionScore.put(gridId,getRound(new BigDecimal(allScore.get()/scoreMap.size())));
Integer projectAllScore = projectEvaluateInfoList.stream().collect(Collectors.summingInt(ProjectEvaluateResultDTO::getScore));
resultSatisfactionScore.put(gridId,getRound(new BigDecimal(projectAllScore/projectEvaluateInfoList.size())));
});
}
String quarterId = DateUtils.getQuarterId(monthId);
@ -397,15 +394,23 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
}
});
}
// 2. 网格总项目数,网格议题转项目率
if (!CollectionUtils.isEmpty(gridIssueTotalList)){
// 2.网格议题转项目率
if (!CollectionUtils.isEmpty(gridIssueShiftProjectRatio)){
gridIssueShiftProjectRatio.forEach(projectTotal -> {
if (r.getGridId().equals(projectTotal.getGridId())){
r.setProjectTotal(projectTotal.getProjectTotal());
r.setIssueToProjectRatio(projectTotal.getIssueToProjectRatio());
}
});
}
// 网格总项目数
if (!CollectionUtils.isEmpty(gridProjectTotalList)){
gridProjectTotalList.forEach(projectTotal -> {
if (r.getGridId().equals(projectTotal.getGridId())) {
r.setProjectTotal(projectTotal.getProjectTotal());
}
});
}
// 3. 网格办结项目数
if (!CollectionUtils.isEmpty(gridProjectClosedTotalList)){
gridProjectClosedTotalList.forEach(closed -> {
@ -422,6 +427,10 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
}
});
}
//如果项目数为0 则准确率设置为100
if (haveNotProjectSet.contains(r.getGridId())){
r.setTransferRightRatio(new BigDecimal(100));
}
// 5. 网格内解决的项目的满意度
if (!CollectionUtils.isEmpty(resultSatisfactionScore)){
resultSatisfactionScore.forEach((k, v) -> {
@ -545,22 +554,22 @@ public class CalGridIndexServiceImpl implements CalGridIndexService {
/**
* @Description
* @param gridIssueTotalList
* @param gridProjectTotalList
* @param gridIssueTotalList 网格下已转项目的议题
* @param gridIssueAllTotalList 网格下所有议题
* @author zxc
* @date 2020/9/19 2:53 下午
*/
public List<GridProjectCountResultDTO> getGridIssueShiftProjectRatio(List<GridIssueCountResultDTO> gridIssueTotalList,List<GridProjectCountResultDTO> gridProjectTotalList){
if (!CollectionUtils.isEmpty(gridIssueTotalList) && !CollectionUtils.isEmpty(gridProjectTotalList)) {
gridProjectTotalList.forEach(project -> {
public List<GridIssueCountResultDTO> getGridIssueShiftProjectRatio(List<GridIssueCountResultDTO> gridIssueTotalList,List<GridIssueCountResultDTO> gridIssueAllTotalList){
if (!CollectionUtils.isEmpty(gridIssueTotalList) && !CollectionUtils.isEmpty(gridIssueAllTotalList)) {
gridIssueAllTotalList.forEach(allIssue -> {
gridIssueTotalList.forEach(issue -> {
if (project.getGridId().equals(issue.getGridId())) {
project.setIssueToProjectRatio(getRound(new BigDecimal(project.getProjectTotal() / issue.getIssueTotal()).multiply(NumConstant.ONE_HUNDRED_DECIMAL)));
if (allIssue.getGridId().equals(issue.getGridId())) {
allIssue.setIssueToProjectRatio(getRound(new BigDecimal(issue.getIssueTotal()).divide(new BigDecimal(allIssue.getIssueTotal()),NumConstant.EIGHT,BigDecimal.ROUND_HALF_UP).multiply(NumConstant.ONE_HUNDRED_DECIMAL)));
}
});
});
}
return gridProjectTotalList;
return gridIssueAllTotalList;
}
/**

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictDepartmentServiceImpl.java

@ -42,9 +42,8 @@ public class IndexCollDistrictDepartmentServiceImpl implements IndexCollDistrict
@Override
public void saveDepartmentAbility(String customerId, String dateId) {
{
//当前日期前一天
Date date = DateUtils.getBeforeDay(DateUtils.stringToDate(dateId, DateUtils.DATE_PATTERN_YYYYMM));
Date date = DateUtils.stringToDate(dateId, DateUtils.DATE_PATTERN_YYYYMM);
//获取日期相关维度
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date);
//获取区直部门列表
@ -118,10 +117,16 @@ public class IndexCollDistrictDepartmentServiceImpl implements IndexCollDistrict
if (CollectionUtils.isNotEmpty(handle)) {
list.forEach(entity -> handle.stream().filter(dto -> dto.getOrgId().equals(entity.getDeptId())).forEach(item -> {
if (item.getCount() != NumConstant.ZERO) {
BigDecimal count = new BigDecimal(item.getCount());
BigDecimal count = null != item.getCount() && NumConstant.ZERO != item.getCount() ? new BigDecimal(item.getCount()) : BigDecimal.ZERO;
BigDecimal sum = new BigDecimal(item.getSum());
BigDecimal one = new BigDecimal(NumConstant.ONE);
entity.setClosedProjectRatio(one.divide(sum.divide(count), NumConstant.SIX, RoundingMode.HALF_UP));
//entity.setClosedProjectRatio(one.divide(sum.divide(count), NumConstant.SIX, RoundingMode.HALF_UP));
if (count.compareTo(BigDecimal.ZERO) == 1) {
//如果count>0
entity.setClosedProjectRatio(sum.divide(count).setScale(NumConstant.SIX, RoundingMode.HALF_UP));
} else {
entity.setClosedProjectRatio(BigDecimal.ZERO);
}
}
}));
}
@ -130,5 +135,4 @@ public class IndexCollDistrictDepartmentServiceImpl implements IndexCollDistrict
factIndexGovrnAblityDeptMonthlyService.deleteByCustomer(customerId, dimId.getMonthId());
factIndexGovrnAblityDeptMonthlyService.saveList(list);
}
}
}

48
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java

@ -42,7 +42,8 @@ public class IndexOriginExtractServiceImpl implements IndexOriginExtractService
private IndexCollCommunityService indexCollCommunityService;
@Autowired
private IndexCollDistrictService indexCollDistrictService;
@Autowired
private IndexCollDistrictDepartmentService indexCollDistrictDepartmentService;
/**
* desc从统计库对象抽取指标数据
*
@ -80,49 +81,88 @@ public class IndexOriginExtractServiceImpl implements IndexOriginExtractService
private void submitJob(ExtractIndexFormDTO param) {
CountDownLatch countDownLatch = new CountDownLatch(2);
long start = System.currentTimeMillis();
final String customerId = param.getCustomerId();
final String monthId = param.getMonthId();
threadPool.submit(() -> {
try {
calCpcIndexService.calCpcPartyAbility(customerId, monthId);
long startCpc = System.currentTimeMillis();
//calCpcIndexService.calCpcPartyAbility(customerId, monthId);
log.error("党员相关-党建能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startCpc, param.getCustomerId());
} catch (Exception e) {
log.error("抽取【党员相关数据】发生异常,参数:" + JSON.toJSONString(param), e);
}finally {
countDownLatch.countDown();
}
});
threadPool.submit(() -> {
try {
long startGridGovern = System.currentTimeMillis();
calGridIndexService.calGridIndexGovernAbility(customerId, monthId);
log.error("网格相关-治理能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startGridGovern, param.getCustomerId());
} catch (Exception e) {
log.error("抽取【网格治理能力数据】发生异常,参数:" + JSON.toJSONString(param), e);
}
try {
long startGridParty = System.currentTimeMillis();
calGridIndexService.calGridIndexPartyAbility(customerId, monthId);
log.error("网格相关-党建能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startGridParty, param.getCustomerId());
} catch (Exception e) {
log.error("抽取【网格党建能力数据】发生异常,参数:" + JSON.toJSONString(param), e);
}
try {
long startGridService = System.currentTimeMillis();
calGridIndexService.calGridIndexServiceAbility(customerId, monthId);
log.error("网格相关-服务能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startGridService, param.getCustomerId());
} catch (Exception e) {
log.error("抽取【网格服务能力数据】发生异常,参数:" + JSON.toJSONString(param), e);
}
try{
//dimAgency
long startCommunity = System.currentTimeMillis();
indexCollCommunityService.saveCommunityAbility(customerId, monthId);
log.error("社区相关-三大能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startCommunity, param.getCustomerId());
}catch (Exception e){
log.error("抽取【社区治理能力-社区党建能力-服务能力】发生异常,参数:" + JSON.toJSONString(param), e);
}
try{
//dimAgency
long startStreet = System.currentTimeMillis();
indexCollStreetService.saveStreetAbility(customerId, monthId);
log.error("街道相关-三大能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startStreet, param.getCustomerId());
}catch (Exception e){
log.error("抽取【街道治理能力-街道党建能力-服务能力】发生异常,参数:" + JSON.toJSONString(param), e);
}
try{
//dimAgency
indexCollCommunityService.saveCommunityAbility(customerId, monthId);
long startDept = System.currentTimeMillis();
indexCollDistrictDepartmentService.saveDepartmentAbility(customerId, monthId);
log.error("区直部门相关-治理能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startDept, param.getCustomerId());
}catch (Exception e){
log.error("抽取【社区治理能力-社区党建能力-服务能力】发生异常,参数:" + JSON.toJSONString(param), e);
log.error("抽取【区直部门治理能力】发生异常,参数:" + JSON.toJSONString(param), e);
}
try{
//dimAgency
long startDistrict = System.currentTimeMillis();
indexCollDistrictService.saveDistrictAbility(customerId, monthId);
log.error("全区相关-三大能力执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-startDistrict, param.getCustomerId());
}catch (Exception e){
log.error("抽取【全区治理能力-全区党建能力-服务能力】发生异常,参数:" + JSON.toJSONString(param), e);
}
countDownLatch.countDown();
});
try {
countDownLatch.await();
} catch (InterruptedException e) {
log.error("indexOriginExtractAll countDownLatch exception", e);
}
log.error("indexOriginExtractAll执行完毕======总耗时:{}ms,customerId:{}",System.currentTimeMillis()-start, param.getCustomerId());
}
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java

@ -47,7 +47,7 @@ public interface IssueExtractService {
* @author zxc
* @date 2020/9/18 10:20 上午
*/
List<GridIssueCountResultDTO> selectIssueTotalTwoMonth(String customerId, String monthId, String minusMonthId);
List<GridIssueCountResultDTO> selectIssueTotalShiftProject(String customerId, String monthId);
/**
* @Description 网格总项目数

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java

@ -269,8 +269,8 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl<FactOr
//每个机关的项目平均耗时
BigDecimal avgCost = new BigDecimal(total).divide(new BigDecimal(v.size()),4, BigDecimal.ROUND_HALF_UP);
efficiencyMap.put(k,BigDecimal.ONE.divide(avgCost,4, BigDecimal.ROUND_HALF_UP));
//efficiencyMap.put(k,BigDecimal.ONE.divide(avgCost,4, BigDecimal.ROUND_HALF_UP));
efficiencyMap.put(k, null == avgCost ? BigDecimal.ZERO : avgCost.setScale(6, BigDecimal.ROUND_HALF_UP));
}else{
efficiencyMap.put(k,BigDecimal.ZERO);
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java

@ -268,8 +268,8 @@ public class IssueExtractServiceImpl implements IssueExtractService {
* @date 2020/9/18 10:20 上午
*/
@Override
public List<GridIssueCountResultDTO> selectIssueTotalTwoMonth(String customerId, String monthId, String minusMonthId) {
return issueMainDailyDao.selectIssueTotalTwoMonthPlus(customerId, monthId, minusMonthId);
public List<GridIssueCountResultDTO> selectIssueTotalShiftProject(String customerId, String monthId) {
return issueMainDailyDao.selectIssueTotalShiftProject(customerId, monthId);
}
/**

35
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java

@ -2,6 +2,7 @@ package com.epmet.service.evaluationindex.extract.toscreen.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.distributedlock.LockConstants;
import com.epmet.commons.tools.enums.EnvEnum;
@ -209,6 +210,17 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
threadPool.submit(() -> {
//公众参与排行(注册人数、参与人数、话题数、议题数、项目数)screen_public_party_total_data
try {
ScreenCentralZoneDataFormDTO screenCentralZone = new ScreenCentralZoneDataFormDTO();
screenCentralZone.setCustomerId(customerId);
screenCentralZone.setDateId(dateId);
//中央区 screen_user_total_data
try {
screenCentralZoneDataAbsorptionService.centralZoneDataHub(screenCentralZone);
} catch (Exception e) {
log.error("中央区抽取到大屏失败,customerId为:" + customerId + "dateId为:" + dateId, e);
}
try {
publicPartiTotalDataExtractService.extractPublicPartiTotalData(customerId, dateId);
} catch (Exception e) {
@ -229,6 +241,15 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
log.error("基层治理-难点赌点抽取到大屏失败,customerId为:" + customerId + "dateId为:" + dateId, e);
}
}
try {
//基层治理 - 热心市民 screen_party_user_rank_data
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);
param.setDateId(dateId);
screenGrassrootsGovernDataAbsorptionService.userScoreDataHub(param);
} catch (Exception e) {
log.error("大屏热心市民/党员得分数据写入失败,参数为:{}" + customerId+ StrConstant.HYPHEN +dateId, e);
}
} finally {
latch.countDown();
log.info("extractDaily 2 thread run end ========= dateId:{},customerId:{}", dateId, customerId);
@ -236,15 +257,6 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
});
threadPool.submit(() -> {
try {
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);
param.setDateId(dateId);
//中央区 screen_user_total_data
try {
screenCentralZoneDataAbsorptionService.centralZoneDataHub(param);
} catch (Exception e) {
log.error("中央区抽取到大屏失败,customerId为:" + customerId + "dateId为:" + dateId, e);
}
try {
// 项目(事件)分析按网格_按天统计
@ -426,7 +438,8 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
} catch (Exception e) {
log.error("党建引领抽取到大屏失败,参数为:" + JSON.toJSONString(formDTO), e);
}
try {
//已经挪到天抽取的抽取里了
/* try {
//基层治理 - 热心市民 screen_party_user_rank_data
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);
@ -434,7 +447,7 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
screenGrassrootsGovernDataAbsorptionService.userScoreDataHub(param);
} catch (Exception e) {
log.error("大屏热心市民/党员得分数据写入失败,参数为:{}" + JSON.toJSONString(formDTO), e);
}
}*/
try {
// 项目(事件)数量分析按网格_按月统计
screenProjectQuantityGridMonthlyService.extractionProjectGridMonthly(customerId, monthId);

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java

@ -88,6 +88,10 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
**/
@Override
public void userScoreDataHub(ScreenCentralZoneDataFormDTO param) {
if (StringUtils.isNotBlank(param.getDateId()) && param.getDateId().length()!= NumConstant.EIGHT){
log.error("userScoreDataHub param dateId must be dateId(eg:20211212)");
return;
}
//1.查询出客户下的网格注册用户
List<ScreenPartyUserRankDataEntity> registeredUsers = userService.getRegisteredUserList(param.getCustomerId());
@ -100,19 +104,15 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
Map<String, Integer> pointMap = userPointService.getUserPointMap(param.getCustomerId());
//4.查询出客户下党员的分值
String dateId = param.getDateId();
if (StringUtils.isEmpty(dateId)) {
//如果没有传月份,则使用当前时间的上一个月
final String finalDateId = dateId;
String currentMonthId = DateUtils.getBeforeNMonth(0);
if (StringUtils.isEmpty(dateId) || dateId.contains(currentMonthId)) {
//如果没有传月份 或者传的为日期为当前月则,则使用当前时间的上一个月
dateId = DateUtils.getBeforeNMonth(NumConstant.ONE);
} else {
String dateType = DateUtils.identifyTimeDimension(dateId);
if (StringUtils.isEmpty(dateType) || !StringUtils.equalsAny(dateType, "date", "month")) {
dateId = DateUtils.getBeforeNMonth(NumConstant.ONE);
} else if (StringUtils.equals(dateType, "date")) {
dateId = dateId.substring(NumConstant.ZERO, dateId.length() - NumConstant.TWO);
}
dateId = dateId.substring(NumConstant.ZERO, dateId.length() - NumConstant.TWO);
}
final String finalDateId = dateId;
// 查询党员积分
// 查询党员指标得分 按月查
Map<String, BigDecimal> scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(), dateId);
//剔除垃圾数据

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java

@ -137,7 +137,7 @@ public interface ScreenProjectDataService extends BaseService<ScreenProjectDataE
* @Author zhaoqifeng
* @Date 2021/10/15 14:22
*/
List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize);
List<ScreenProjectDataDTO> getProjectList(String customerId, List<String> projectId, Integer pageNo, Integer pageSize);
/**
* 项目变更MQ

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java

@ -48,12 +48,12 @@ import com.epmet.service.evaluationindex.screen.ScreenProjectDataService;
import com.epmet.service.stats.CustomerProjectCategoryDictService;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -298,7 +298,7 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
* @Date 2021/10/15 14:22
*/
@Override
public List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize) {
public List<ScreenProjectDataDTO> getProjectList(String customerId, List<String> projectId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
return baseDao.selectProjectList(customerId, projectId);
}

147
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java

@ -1,7 +1,9 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.OrgTypeConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.dto.basereport.form.EventInfoFormDTO;
@ -19,6 +21,7 @@ import com.epmet.dto.user.result.MidPatrolDetailResult;
import com.epmet.dto.user.result.MidPatrolRecordResult;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity;
import com.epmet.entity.stats.CustomerProjectCategoryDictEntity;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.service.DataReportingService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerAgencyService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerGridService;
@ -38,6 +41,9 @@ import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
/**
* @dscription 省网格化平台数据上报--数据查询
* @author sun
@ -61,6 +67,8 @@ public class DataReportingServiceImpl implements DataReportingService {
private StatsStaffPatrolService statsStaffPatrolService;
@Resource
private CustomerProjectCategoryDictService customerProjectCategoryDictService;
@Resource
private OperCrmOpenFeignClient operCrmOpenFeignClient;
/**
* @Author sun
@ -110,25 +118,6 @@ public class DataReportingServiceImpl implements DataReportingService {
st.setUserType(dto.getWorkType().equals("fulltime") ? "01" : "02");
st.setPhonenumber(dto.getMobile());
st.setSex(0 == dto.getGender() ? "9" : dto.getGender().toString());
st.setNation("01");
st.setPaerty("13");
st.setBirthday(new Date());
st.setEducation("20");
st.setEntryDate(new Date());
st.setIsLeave("N");
//st.setLeaveDate();
st.setIncome("05");
st.setIsCommittee("Y");
st.setIsCommunityWorkers("Y");
st.setIsSocialWorker("Y");
st.setIsVillageLeader("Y");
st.setIsPoliceAssistant("N");
st.setIsMediator("Y");
st.setDelFlag(dto.getDelFlag());
st.setCreatedBy(dto.getCreatedBy());
st.setCreatedTime(dto.getCreatedTime());
st.setUpdatedBy(dto.getUpdatedBy());
st.setUpdatedTime(dto.getUpdatedTime());
}
});
@ -153,18 +142,31 @@ public class DataReportingServiceImpl implements DataReportingService {
if(CollectionUtils.isEmpty(projectList)) {
return Collections.emptyList();
}
Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap = new HashMap<>();
Result<String> parentCustomer = operCrmOpenFeignClient.getExternalAndParentCustomerId(formDTO.getCustomerId());
if (StringUtils.isNotBlank(parentCustomer.getData())) {
epmetCodeMap = customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData());
}
Map<String, CustomerProjectCategoryDictEntity> codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());;
//项目ID不为空时,因为只有一条,可以直接处理
if (StringUtils.isNotEmpty(formDTO.getProjectId())) {
Map<String, CustomerProjectCategoryDictEntity> finalEpmetCodeMap = epmetCodeMap;
if (CollectionUtils.isNotEmpty(formDTO.getProjectId())) {
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project);
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(project.getOrgId());
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
dto.setOrgId(project.getOrgId());
if (null != agency) {
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
}
} else {
ScreenCustomerGridDTO grid = screenCustomerGridService.getGridById(project.getOrgId());
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
dto.setOrgId(project.getOrgId());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
}
return dto;
}).collect(Collectors.toList());
@ -173,41 +175,65 @@ public class DataReportingServiceImpl implements DataReportingService {
Map<String, ScreenCustomerAgencyEntity> agencyMap = screenCustomerAgencyService.getAgencyList(formDTO.getCustomerId());
Map<String, ScreenCustomerGridDTO> gridMap = screenCustomerGridService.getGridList(formDTO.getCustomerId());
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project);
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId());
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
dto.setOrgId(project.getOrgId());
if (null != agency) {
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
}
} else {
ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId());
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
dto.setOrgId(project.getOrgId());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
}
return dto;
}).collect(Collectors.toList());
}
return list.stream().filter(item -> StringUtils.isNotBlank(item.getEventCategory())).collect(Collectors.toList());
return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new));
}
private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project) {
private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project, Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap, Map<String, CustomerProjectCategoryDictEntity> codeMap) {
EventInfoResultDTO dto = new EventInfoResultDTO();
dto.setId(project.getProjectId());
dto.setCustomerId(project.getCustomerId());
dto.setEventName(project.getProjectTitle());
dto.setReporterId(project.getProjectCreator());
String categoryCode = project.getCategoryCode().split(StrConstant.COMMA)[0];
String parentCode = null == codeMap.get(categoryCode)?null:codeMap.get(categoryCode).getParentCategoryCode();
//如果是孔村、榆山、锦水的项目需要关联分类字典表
if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId()) ||
"44876154d10d7cb7affd92000f84f833".equals(project.getCustomerId()) ||
"46c55cb862d6d5e6d05d2ab61a1cc07e".equals(project.getCustomerId())) {
CustomerProjectCategoryDictEntity categoryEntity = customerProjectCategoryDictService.getByCategoryCode(project.getCustomerId(), categoryCode);
CustomerProjectCategoryDictEntity categoryEntity = codeMap.get(categoryCode);
if (null != categoryEntity) {
categoryCode = categoryEntity.getEpmetCategoryCode();
String code = categoryEntity.getEpmetCategoryCode();
if (StringUtils.isBlank(code)) {
//没有对应平阴的分类code,那么一级分类和二级分类都为空
categoryCode = null;
parentCode = null;
} else {
//如果是对应一级分类,则二级分类为空。如果对应平阴二级分类,则取对应的一级分类
CustomerProjectCategoryDictEntity epmetCode = epmetCodeMap.get(code);
if (NumConstant.ONE == epmetCode.getLevel()) {
categoryCode = null;
parentCode = code;
} else {
categoryCode = code;
parentCode = epmetCode.getParentCategoryCode();
}
}
} else {
categoryCode = null;
parentCode = null;
}
}
dto.setEventCategory(categoryCode);
dto.setParentEventCategory(parentCode);
dto.setReportTime(project.getProjectCreateTime());
dto.setHappenDate(DateUtils.parseDate(DateUtils.format(project.getProjectCreateTime()), DateUtils.DATE_PATTERN));
dto.setHappenPlace(project.getProjectAddress());
@ -219,16 +245,18 @@ public class DataReportingServiceImpl implements DataReportingService {
if (OrgTypeConstant.AGENCY.equals(project.getFinishOrgType())) {
//如果是孔村的项目办结层级需要降一级
if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId())) {
switch (project.getFinishOrgLevel()) {
case OrgTypeConstant.DISTRICT:
dto.setCompleteLevel("04");
break;
case OrgTypeConstant.STREET:
case OrgTypeConstant.COMMUNITY:
dto.setCompleteLevel("06");
break;
default:
break;
if (StringUtils.isNotBlank(project.getFinishOrgLevel())) {
switch (project.getFinishOrgLevel()) {
case OrgTypeConstant.DISTRICT:
dto.setCompleteLevel("3");
break;
case OrgTypeConstant.STREET:
case OrgTypeConstant.COMMUNITY:
dto.setCompleteLevel("4");
break;
default:
break;
}
}
} else {
dto.setCompleteLevel(getCompleteLevel(project.getFinishOrgLevel()));
@ -238,13 +266,15 @@ public class DataReportingServiceImpl implements DataReportingService {
String[] orgIds = project.getOrgIdPath().split(StrConstant.COLON);
int size = orgIds.length;
ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(orgIds[size - 1]);
dto.setCompleteLevel(getCompleteLevel(agency.getLevel()));
if (null != agency) {
dto.setCompleteLevel(getCompleteLevel(agency.getLevel()));
}
} else {
//办结组织是网格时,办结层级为网格
dto.setCompleteLevel("07");
dto.setCompleteLevel("5");
}
}
dto.setStatus(getProjectStatus(project.getProjectStatusCode()));
dto.setCompleteTime(project.getCloseCaseTime());
dto.setLat(project.getLatitude());
dto.setLng(project.getLongitude());
@ -254,15 +284,28 @@ public class DataReportingServiceImpl implements DataReportingService {
private String getCompleteLevel(String level) {
switch (level) {
case OrgTypeConstant.PROVINCE:
return "01";
return "0";
case OrgTypeConstant.CITY:
return "02";
return "1";
case OrgTypeConstant.DISTRICT:
return "03";
return "2";
case OrgTypeConstant.STREET:
return "04";
return "3";
case OrgTypeConstant.COMMUNITY:
return "06";
return "4";
default:
return null;
}
}
private String getProjectStatus(String status) {
switch (status) {
case ProjectConstant.PENDING:
return "01";
case ProjectConstant.CLOSED:
return "02";
case ProjectConstant.CLOSED_CASE:
return "03";
default:
return null;
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/CustomerProjectCategoryDictService.java

@ -24,6 +24,7 @@ import com.epmet.entity.issue.IssueProjectCategoryDictEntity;
import com.epmet.entity.stats.CustomerProjectCategoryDictEntity;
import java.util.List;
import java.util.Map;
/**
* 客户项目分类字典表
@ -65,4 +66,6 @@ public interface CustomerProjectCategoryDictService extends BaseService<Customer
* @Date 2021/10/15 16:33
*/
CustomerProjectCategoryDictEntity getByCategoryCode(String customerId, String categoryCode);
Map<String, CustomerProjectCategoryDictEntity> getByCategoryCodeMap(String customerId);
}

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/CustomerProjectCategoryDictServiceImpl.java

@ -34,7 +34,11 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 客户项目分类字典表
@ -135,4 +139,15 @@ public class CustomerProjectCategoryDictServiceImpl extends BaseServiceImpl<Cust
wrapper.eq(CustomerProjectCategoryDictEntity::getCustomerId, customerId);
return baseDao.selectOne(wrapper);
}
@Override
public Map<String, CustomerProjectCategoryDictEntity> getByCategoryCodeMap(String customerId) {
LambdaQueryWrapper<CustomerProjectCategoryDictEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerProjectCategoryDictEntity::getCustomerId, customerId);
List<CustomerProjectCategoryDictEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.toMap(CustomerProjectCategoryDictEntity::getCategoryCode, Function.identity()));
}
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/FactRegUserGridMonthlyService.java

@ -104,6 +104,16 @@ public interface FactRegUserGridMonthlyService extends BaseService<FactRegUserGr
*/
List<GridUserCountResultDTO> selectGridUserCount(String customerId,String monthId);
/**
* 网格相关-党建能力网格群众用户数网格党员用户数
* 从fact_reg_user_grid_daily这个表 sum增量为了与运营端数据导出一致
*
* @param customerId
* @param monthId
* @return
*/
List<GridUserCountResultDTO> selectGridUserCountFromDaily(String customerId,String monthId);
/**
* 查询网格下各用户数量
*

17
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/user/impl/FactRegUserGridMonthlyServiceImpl.java

@ -20,16 +20,15 @@ package com.epmet.service.stats.user.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.stats.user.FactRegUserGridMonthlyDao;
import com.epmet.dto.extract.result.GridUserCountResultDTO;
import com.epmet.dto.stats.user.FactRegUserGridMonthlyDTO;
import com.epmet.entity.stats.user.FactRegUserGridMonthlyEntity;
import com.epmet.service.stats.user.FactRegUserGridMonthlyService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -112,6 +111,20 @@ public class FactRegUserGridMonthlyServiceImpl extends BaseServiceImpl<FactRegUs
return baseDao.selectGridUserCount(customerId, monthId);
}
/**
* 网格相关-党建能力网格群众用户数网格党员用户数
* 从fact_reg_user_grid_daily这个表 sum增量为了与运营端数据导出一致
*
* @param customerId
* @param monthId
* @return
*/
@Override
public List<GridUserCountResultDTO> selectGridUserCountFromDaily(String customerId, String monthId) {
return baseDao.selectGridUserCountFromDaily(customerId, monthId);
}
@Override
public List<FactRegUserGridMonthlyDTO> getGridUserCountByCustomer(String customerId, String monthId) {
return baseDao.selectGridUserCountByCustomer(customerId, monthId);

6
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java

@ -76,16 +76,14 @@ public abstract class ScoreCalculator<T> {
throw new RuntimeException("入参数组错误:请设置sourceValue");
}
BigDecimal x = coefficient.multiply(convertValue2BigDecimal(sourceValue).subtract(minValue));
if (correlation == Correlation.POSITIVE) {
// 正相关
BigDecimal x = coefficient.multiply(convertValue2BigDecimal(sourceValue).subtract(minValue));
BigDecimal score = minScore.add(x);
return score;
} else if (correlation == Correlation.NEGATIVE) {
// 负相关
BigDecimal x = coefficient.multiply(convertValue2BigDecimal(sourceValue).subtract(minValue));
BigDecimal score = minScore.add(x);
return maxScore.subtract(score, MathContext.DECIMAL32);
return maxScore.subtract(x, MathContext.DECIMAL32);
} else {
throw new RuntimeException("错误的相关性");
}

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java

@ -76,19 +76,24 @@ public class BatchScoreCalculator {
if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) {
//*((max-min)/ (Math.PI/2))+min
//Math.atan(new Double(vo.getSampleValue().toString()))*
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString())))
.multiply(
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP)))
.add(minScoreValue).setScale(6, RoundingMode.HALF_UP);
if (Correlation.POSITIVE.getCode().equals(scoreCalculator.getCorrelation().getCode())) {
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString())))
.multiply(
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP)))
.add(minScoreValue).setScale(6, RoundingMode.HALF_UP);
}else{
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString())))
.multiply(
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP)).multiply(new BigDecimal(-1)))
.add(maxScoreValue).setScale(6, RoundingMode.HALF_UP);
}
} else {
normalizeValue = scoreCalculator.normalize(getFinalSampleValue(vo.getSampleValue(), threshold));
}
//如果是负相关 则用100-归一后的值为最大值减
/* //如果是负相关 则用100-归一后的值为最大值减
if (Correlation.NEGATIVE.getCode().equals(scoreCalculator.getCorrelation().getCode())) {
normalizeValue = maxScoreValue.subtract(normalizeValue);
}
}*/
}
//如果归一后的值小于0 则置为0
if (normalizeValue.compareTo(NumConstant.ZERO_DECIMAL)<=-1){

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml

@ -3,17 +3,19 @@
<mapper namespace="com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao">
<!-- 查询建群党员数 -->
<!-- 查询建群党员数: 网格内 建立群组的 党员数(去重) -->
<select id="selectPartyCreateGroupCount" resultType="com.epmet.dto.extract.result.PartyCreateGroupCountResultDTO">
SELECT
GRID_ID,
COUNT( ID ) AS partyCreateGroupCount
COUNT( distinct GROUP_OWNER_ID ) AS partyCreateGroupCount
FROM
fact_origin_group_main_daily
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
AND IS_OWNER_PARTY='1'
AND GROUP_STATE='approved'
GROUP BY GRID_ID
</select>

23
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueMainDailyDao.xml

@ -164,18 +164,19 @@
)t
</select>
<!-- 查询俩月的网格议题总数 -->
<select id="selectIssueTotalTwoMonthPlus" resultType="com.epmet.dto.extract.form.GridIssueCountResultDTO">
<!-- 查询议题转项目总数 -->
<select id="selectIssueTotalShiftProject" resultType="com.epmet.dto.extract.form.GridIssueCountResultDTO">
SELECT
COUNT( ID ) AS issueTotal,
GRID_ID
m.GRID_ID,
COUNT(m.ID) AS issueTotal
FROM
fact_origin_issue_main_daily
WHERE
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
AND (MONTH_ID = #{monthId} OR MONTH_ID = #{minusMonthId})
GROUP BY GRID_ID
fact_origin_issue_main_daily m INNER JOIN
fact_origin_issue_log_daily l ON m.ID = l.ISSUE_ID
WHERE m.DEL_FLAG = '0'
AND m.MONTH_ID = #{monthId}
AND m.CUSTOMER_ID = #{customerId}
AND l.ACTION_CODE = 'shift_project'
GROUP BY GRID_ID
</select>
<!-- 查询党员发布议题数 -->
@ -377,4 +378,4 @@
GROUP BY
a.ID
</select>
</mapper>
</mapper>

129
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

@ -47,7 +47,7 @@
</select>
<!-- 查询项目评价信息 -->
<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO">
<!--<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO">
SELECT
ACTION_CODE,
ORG_ID AS gridId,
@ -60,6 +60,34 @@
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
AND (ACTION_CODE = 'bad' OR ACTION_CODE = 'good' OR ACTION_CODE = 'perfect')
</select>-->
<select id="selectProjectEvaluate" resultType="com.epmet.dto.extract.result.ProjectEvaluateResultDTO">
SELECT
IFNULL(en.actionCode,'good') AS actionCode,
cl.projectId,
cl.gridId
FROM
(SELECT
ld.PROJECT_ID AS projectId,
ld.ORG_ID AS gridId
FROM fact_origin_project_log_daily ld
WHERE ld.DEL_FLAG = 0
AND ld.CUSTOMER_ID = #{customerId}
AND ld.ACTION_CODE IN('close')
AND ld.ORG_TYPE = 'grid'
AND ld.MONTH_ID = #{monthId}
) cl
LEFT JOIN
(SELECT
IFNULL(ld.ACTION_CODE,'good') AS actionCode,
ld.ORG_ID AS gridId,
ld.PROJECT_ID AS projectId
FROM fact_origin_project_log_daily ld
WHERE ld.DEL_FLAG = 0
AND ld.ACTION_CODE IN( 'bad','good', 'perfect')
AND ld.MONTH_ID = #{monthId}
AND ld.CUSTOMER_ID = #{customerId}
) en ON (en.projectId = cl.projectId)
</select>
<!-- 网格项目自治率查询 -->
@ -92,29 +120,46 @@
COUNT( ID ) AS "count",
SUM( IFNULL( b.score, 80 ) ) AS "ratio"
FROM
( SELECT f.ID, f.AGENCY_ID FROM fact_origin_project_main_daily f
INNER JOIN dim_agency da ON f.FINISH_ORG_IDS LIKE concat('%', da.ID, '%')
AND da.AGENCY_DIM_TYPE = 'all'
AND da.`LEVEL` = #{level}
AND da.CUSTOMER_ID = #{customerId}
WHERE 1=1
AND f.MONTH_ID = #{monthId}) a
LEFT JOIN (
SELECT
PROJECT_ID,
AVG( CASE ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score
FROM
fact_origin_project_log_daily
WHERE
(ACTION_CODE = 'bad'
OR ACTION_CODE = 'good'
OR ACTION_CODE = 'perfect')
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
GROUP BY
PROJECT_ID
(
SELECT
f.ID,
log.AGENCY_ID
FROM
fact_origin_project_main_daily f
INNER JOIN fact_origin_project_log_daily log ON f.ID = log.PROJECT_ID
AND log.ACTION_CODE = 'close'
AND log.DEL_FLAG = '0'
AND log.CUSTOMER_ID = #{customerId}
AND log.MONTH_ID = #{monthId}
INNER JOIN dim_agency da ON log.PIDS LIKE concat( '%', da.ID, '%' )
AND da.AGENCY_DIM_TYPE = 'all'
AND da.`LEVEL` = #{level}
AND da.CUSTOMER_ID = #{customerId}
WHERE
1 = 1
AND f.ORIGIN = 'issue'
AND f.PROJECT_STATUS = 'closed'
AND f.CUSTOMER_ID = #{customerId}
) a
LEFT JOIN (
SELECT
l1.PROJECT_ID,
AVG( CASE l1.ACTION_CODE WHEN 'bad' THEN 60 WHEN 'perfect' THEN 100 ELSE 80 END ) AS score
FROM
fact_origin_project_log_daily l1
INNER JOIN fact_origin_project_log_daily l2 ON l1.PROJECT_ID = l2.PROJECT_ID
AND l2.ACTION_CODE = 'close'
AND l2.MONTH_ID = #{monthId}
AND l2.CUSTOMER_ID = #{customerId}
WHERE
( l1.ACTION_CODE = 'bad' OR l1.ACTION_CODE = 'good' OR l1.ACTION_CODE = 'perfect' )
AND l1.CUSTOMER_ID = #{customerId}
GROUP BY
PROJECT_ID
) b ON a.ID = b.PROJECT_ID
GROUP BY AGENCY_ID
GROUP BY
AGENCY_ID
</select>
<select id="selectDepTransferCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
@ -221,24 +266,26 @@
</select>
<!-- 查询机关办结次数 -->
<select id="selectAgencyHandledProjectCount" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">
SELECT
SUBSTRING_INDEX(main.FINISH_ORG_IDS,':',1) AS agencyId,
COUNT(main.ID) AS count
FROM fact_origin_project_main_daily main
LEFT JOIN fact_origin_project_log_daily log
ON main.ID = log.PROJECT_ID AND log.DEL_FLAG = '0' AND log.ACTION_CODE = 'close'
WHERE main.DEL_FLAG = '0'
AND main.CUSTOMER_ID = #{customerId}
<if test="null != agencies and agencies.size() > 0">
<foreach collection="agencies" item="item" open="AND ( " separator=" OR " close=" ) ">
main.FINISH_ORG_IDS LIKE concat(#{item},'%')
</foreach>
</if>
<if test='null != dimId and "" != dimId.trim()'>
AND log.ID IS NOT NULL AND log.MONTH_ID = #{dimId}
</if>
GROUP BY SUBSTRING_INDEX(main.FINISH_ORG_IDS,':',1)
SELECT
ORG_ID AS "agencyId",
COUNT( PROJECT_ID ) AS count
FROM
fact_origin_project_log_daily
WHERE
DEL_FLAG = '0'
AND ACTION_CODE = 'close'
AND CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'agency'
<if test="null != agencies and agencies.size() > 0">
<foreach collection="agencies" item="item" open="AND ( " separator=" OR " close=" ) ">
ORG_ID = #{item}
</foreach>
</if>
<if test='null != dimId and "" != dimId.trim()'>
AND MONTH_ID = #{dimId}
</if>
GROUP BY
ORG_ID
</select>
<!-- 查询评价周期内各级别机关办结的项目Id -->
<select id="selectProjectIdHandledByAgency" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">

46
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -979,35 +979,29 @@
</select>
<select id="selectAgencyClosedProjectStaticDaily" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
a.ID AS AGENCY_ID,
b.`LEVEL`,
COUNT( b.ID ) AS "sum",
SUM(
IF
( b.ORG_TYPE = 'department', 1, 0 )) AS "count"
FROM
dim_agency a
INNER JOIN (
SELECT
a.ID,
a.PIDS,
c.`LEVEL`,
b.ORG_TYPE
a.ID AS AGENCY_ID,
a.`LEVEL`,
COUNT( b.PROJECT_ID ) AS "sum",
SUM(IF( b.ORG_TYPE = 'department', 1, 0 )) AS "count"
FROM
fact_origin_project_main_daily a
INNER JOIN fact_origin_project_log_daily b ON a.ID = b.PROJECT_ID
AND b.ACTION_CODE = 'close'
INNER JOIN dim_agency c ON b.AGENCY_ID = c.ID
WHERE
a.CUSTOMER_ID = #{customerId}
AND a.DATE_ID &lt;= #{dateId}
AND a.PROJECT_STATUS = 'closed'
) b ON b.PIDS LIKE CONCAT( '%', a.ID, '%' )
dim_agency a
INNER JOIN (
SELECT
PROJECT_ID,
PIDS,
ORG_TYPE
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND ACTION_CODE = 'close'
) b ON b.PIDS LIKE CONCAT( '%', a.ID, '%' )
WHERE
a.CUSTOMER_ID = #{customerId}
a.CUSTOMER_ID = #{customerId}
GROUP BY
a.ID,
b.`LEVEL`
a.ID,
a.`LEVEL`
</select>

4
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml

@ -53,7 +53,7 @@
f.ORG_ID AS "agencyId",
SUM( TIMESTAMPDIFF( MINUTE, ( DATE_FORMAT( f.INFORMED_DATE, '%Y-%m-%d %H:%i' )),
( DATE_FORMAT( f.PERIOD_TILL_REPLY_FIRSTLY, '%Y-%m-%d %H:%i' )) ) ) AS "sum",
COUNT( f.ID ) AS "count"
COUNT(DISTINCT f.PROJECT_ID) AS "count"
FROM
fact_origin_project_org_period_daily f
INNER JOIN dim_agency da ON f.ORG_ID = da.ID
@ -128,7 +128,7 @@
fp.ORG_ID,
SUM( TIMESTAMPDIFF( MINUTE, ( DATE_FORMAT( fp.INFORMED_DATE, '%Y-%m-%d %H:%i' )),
( DATE_FORMAT( fp.PERIOD_TILL_REPLY_FIRSTLY, '%Y-%m-%d %H:%i' )) ) ) AS "sum",
COUNT( fp.ID ) AS "count"
COUNT( DISTINCT fp.PROJECT_ID ) AS "count"
FROM
fact_origin_project_org_period_daily fp
INNER JOIN fact_origin_project_main_daily fm ON fp.PROJECT_ID = fm.ID

3
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/indexcoll/FactIndexGovrnAblityOrgMonthlyDao.xml

@ -249,10 +249,9 @@
AND gm.del_flag = '0'
AND gm.month_id = #{monthId}
AND gm.DATA_TYPE = #{level}
AND gm.PARENT_ID = '0'
)
WHERE sca.DEL_FLAG = '0'
AND sca.AREA_CODE LIKE CONCAT('370124','%')
AND sca.AREA_CODE LIKE CONCAT(#{areaCode},'%')
AND sca.`LEVEL` = #{level}
</select>

13
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml

@ -218,6 +218,7 @@
a.CLOSE_CASE_TIME,
a.DATA_END_TIME,
a.ALL_PARENT_IDS,
a.PROJECT_CREATOR,
a.ORIGIN,
a.CATEGORY_CODE,
b.HANDLER_ID AS finishOrg,
@ -253,8 +254,10 @@
<if test='null != customerId and "" != customerId'>
AND b.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectId and "" != projectId'>
AND b.PROJECT_ID = #{projectId}
<if test='null != projectIds and projectIds.size()>0'>
<foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
b.PROJECT_ID = #{projectId}
</foreach>
</if>
LEFT JOIN screen_customer_agency c ON b.HANDLER_ID = c.AGENCY_ID
WHERE a.DEL_FLAG = '0'
@ -263,8 +266,10 @@
<if test='null != customerId and "" != customerId'>
AND a.CUSTOMER_ID = #{customerId}
</if>
<if test='null != projectId and "" != projectId'>
AND a.PROJECT_ID = #{projectId}
<if test='null != projectIds and projectIds.size()>0'>
<foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
a.PROJECT_ID = #{projectId}
</foreach>
</if>
ORDER BY
a.CREATED_TIME ASC

19
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/user/FactRegUserGridMonthlyDao.xml

@ -110,8 +110,8 @@
<!-- 查询网格下的客户 -->
<select id="selectGridUserCount" resultType="com.epmet.dto.extract.result.GridUserCountResultDTO">
SELECT
REG_INCR,
PARTYMEMBER_INCR,
REG_INCR as userCount,
PARTYMEMBER_INCR as partyCount,
GRID_ID as orgId,
REG_TOTAL
FROM
@ -121,6 +121,21 @@
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{monthId}
</select>
<!-- 网格相关-党建能力:网格群众用户数、网格党员用户数 从fact_reg_user_grid_daily这个表 sum增量,为了与运营端数据导出一致 -->
<select id="selectGridUserCountFromDaily" parameterType="map" resultType="com.epmet.dto.extract.result.GridUserCountResultDTO">
SELECT
sum( m.REG_INCR ) AS userCount,
sum( m.PARTYMEMBER_INCR ) AS partyCount,
m.GRID_ID AS orgId
FROM
fact_reg_user_grid_daily m
WHERE
m.CUSTOMER_ID = #{customerId}
AND m.DATE_ID LIKE CONCAT(#{monthId},'%')
GROUP BY m.GRID_ID
</select>
<select id="selectGridUserCountByCustomer" resultType="com.epmet.dto.stats.user.FactRegUserGridMonthlyDTO">
SELECT
GRID_ID,

16
epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java

@ -20,10 +20,20 @@ public class MathUtilTest {
BigDecimal maxValue = new BigDecimal(100);
BigDecimal minValue = new BigDecimal(60);
BigDecimal normalizeValue = new BigDecimal(Math.atan(new Double("0")))
.multiply(
(maxValue.subtract(minValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP))).add(minValue).setScale(6, RoundingMode.HALF_UP);
//((max-min)/ (Math.PI/2))+min
BigDecimal sampleValue = new BigDecimal(Math.atan(new Double("0")));
BigDecimal normalizeValue = sampleValue
.multiply(maxValue.subtract(minValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP))
.add(minValue).setScale(6, RoundingMode.HALF_UP);
BigDecimal normalizeValue2 = sampleValue
.multiply(maxValue.subtract(minValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP).multiply(new BigDecimal(-1)))
.add(maxValue).setScale(6, RoundingMode.HALF_UP);
System.out.println(normalizeValue);
System.out.println(normalizeValue2);
//new BigDecimal(Math.atan(new Double(vo.getSampleValue().toString())) / Math.PI * 100).setScale(6, RoundingMode.HALF_UP);
}

BIN
epmet-module/data-statistical/data-statistical-server/src/test/java/resources/疑难杂症之-数据名词解释及算法.docx

Binary file not shown.

BIN
epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注.xlsx

Binary file not shown.

BIN
epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx

Binary file not shown.

BIN
epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重(新客户适用)-党群e事通和亿联互助平台在用.xlsx

Binary file not shown.

9
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java

@ -623,7 +623,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
String bindResult = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_OPEN_GET + authorizerAccessToken, JSON.toJSONString(bindInfoForm)).getData();
Map<String, Object> bindInfo = JSON.parseObject(bindResult, Map.class);
boolean bindStatus = bindInfo.containsKey(ModuleConstant.OPEN_APP_ID);
if (bindStatus != true) {
if (!bindStatus) {
Integer authCount = customerMpDao.selectAuthCount(customerId);
String openPlatformId = null;
if (authCount > 0) {
@ -658,6 +658,8 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
throw new RenException(INVALID_APP_ID);
case ModuleConstant.EIGHTY_NINE_THOUSAND:
throw new RenException(ACCOUNT_HAS_BOUND_OPEN);
default:
}
} else if (authCount > NumConstant.ZERO) {
log.info("该客户已创建过开放平台账号,直接绑定");
@ -685,6 +687,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
throw new RenException(NOT_ALLOWED_OPERATE);
case ModuleConstant.EIGHTY_NINE_THOUSAND_AND_FOUR:
throw new RenException(TO_LIMIT);
default:
}
}
//插入 binding_account
@ -706,7 +709,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
public Date countExpirationTime(String expiresIn) {
expiresIn = expiresIn + "000";
Date date = new Date();
long l = date.getTime() + Long.valueOf(expiresIn);
long l = date.getTime() + Long.parseLong(expiresIn);
date.setTime(l);
return date;
}
@ -727,7 +730,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
* @author zxc
*/
public Date sToDate(String t) {
Long aLong = Long.valueOf(t + "000");
long aLong = Long.parseLong(t + "000");
Date date = new Date();
date.setTime(aLong);
return date;

24
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -940,6 +940,18 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
*/
@Override
public void shiftProjectV2(ShiftProjectFormDTO formDTO) {
//1:查询议题数据
IssueEntity entity = baseDao.selectById(formDTO.getIssueId());
if (null == entity) {
throw new RenException(IssueConstant.SELECT_EXCEPTION);
}
if (IssueConstant.ISSUE_SHIFT_PROJECT.equals(entity.getIssueStatus())) {
throw new RenException(IssueConstant.ISSUE_SHIFT_PROJECT_EXCEPTION);
}
if (!IssueConstant.ISSUE_VOTING.equals(entity.getIssueStatus())) {
throw new RenException(IssueConstant.ISSUE_VOTING_EXCEPTION);
}
formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class));
//获取议题分类
List<IssueCategoryDTO> categoryList = issueCategoryService.getCategoryByIssue(formDTO.getIssueId());
@ -965,18 +977,6 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
}
//因需要保证议题表中的转项目时间与创建项目时间一致 因此先新增项目数据再更新议题数据
//1:查询议题数据
IssueEntity entity = baseDao.selectById(formDTO.getIssueId());
if (null == entity) {
throw new RenException(IssueConstant.SELECT_EXCEPTION);
}
if (IssueConstant.ISSUE_SHIFT_PROJECT.equals(entity.getIssueStatus())) {
throw new RenException(IssueConstant.ISSUE_SHIFT_PROJECT_EXCEPTION);
}
if (!IssueConstant.ISSUE_VOTING.equals(entity.getIssueStatus())) {
throw new RenException(IssueConstant.ISSUE_VOTING_EXCEPTION);
}
formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class));
//2:调用resi-group查询话题创建人数据(目前议题来源只有来自话题),为了到项目服务初始数据以及发送消息使用
Result<ResiTopicDTO> resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());

53
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -17,6 +17,7 @@
package com.epmet.controller;
import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
@ -29,6 +30,8 @@ import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.CustomerAgencyEntity;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.AgencyService;
import com.epmet.service.CustomerAgencyService;
import org.apache.commons.lang3.StringUtils;
@ -54,6 +57,8 @@ public class AgencyController {
private AgencyService agencyService;
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
/**
* @param formDTO
@ -97,7 +102,18 @@ public class AgencyController {
}
//当前客户下,同级组织中,组织名称不允许重复
customerAgencyService.checkAgencyName(formDTO.getAgencyName(),tokenDTO.getCustomerId(),null,formDTO.getParentAgencyId());
return new Result<AddAgencyResultDTO>().ok(agencyService.addAgencyV2(formDTO));
AddAgencyResultDTO resultDTO = agencyService.addAgencyV2(formDTO);
//2021-11-30 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDTO.getCustomerId());
mq.setOrgId(resultDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-11-30 end
return new Result<AddAgencyResultDTO>().ok(resultDTO);
}
/**
@ -111,6 +127,16 @@ public class AgencyController {
String agencyId = agencyService.addRootAgency(form);
HashMap<String, String> resultMap = new HashMap<>();
resultMap.put("agencyId", agencyId);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(form.getCustomerId());
mq.setOrgId(agencyId);
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return new Result<Map<String, String>>().ok(resultMap);
}
@ -125,7 +151,18 @@ public class AgencyController {
public Result editAgency(@LoginUser TokenDto tokenDTO, @RequestBody EditAgencyFormDTO formDTO) {
formDTO.setUserId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO, EditAgencyFormDTO.DefaultUserShowGroup.class, EditAgencyFormDTO.AddUserInternalGroup.class);
return agencyService.editAgency(formDTO);
Result result = agencyService.editAgency(formDTO);
//2021-10-18 推送mq,数据同步到中介库 start【中介库只放了组织的名称、级别,所以涉及批量修改pname的操作不涉及同步中间库】
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDTO.getCustomerId());
mq.setOrgId(formDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return result;
}
/**
@ -248,7 +285,17 @@ public class AgencyController {
**/
@PostMapping("saverootagency")
public Result saveRootAgency(@RequestBody AddAgencyAndStaffFormDTO agencyAndStaff) {
agencyService.saveRootAgency(agencyAndStaff);
String agencyId = agencyService.saveRootAgency(agencyAndStaff);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(agencyAndStaff.getAgencyDTO().getCustomerId());
mq.setOrgId(agencyId);
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return new Result();
}

33
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java

@ -1,5 +1,6 @@
package com.epmet.controller;
import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
@ -9,6 +10,8 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.CustomerGridService;
import com.epmet.service.CustomerStaffAgencyService;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,6 +31,8 @@ public class GridController {
private CustomerGridService customerGridService;
@Autowired
private CustomerStaffAgencyService customerStaffAgencyService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
/**
* 获取网格详情
@ -47,8 +52,18 @@ public class GridController {
@RequirePermission(requirePermission = RequirePermissionEnum.ORG_GRID_CREATE)
public Result<AddGridResultDTO> addGrid(@LoginUser TokenDto tokenDto, @RequestBody AddGridFormDTO addGridFormDTO){
ValidatorUtils.validateEntity(addGridFormDTO, AddGridFormDTO.AddGrid.class);
return customerGridService.addGrid(tokenDto,addGridFormDTO);
Result<AddGridResultDTO> resultDTOResult = customerGridService.addGrid(tokenDto,addGridFormDTO);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDto.getCustomerId());
mq.setOrgId(resultDTOResult.getData().getGridId());
mq.setOrgType("grid");
mq.setType("grid_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return resultDTOResult;
}
/**
@ -59,8 +74,18 @@ public class GridController {
public Result editGrid(@LoginUser TokenDto tokenDto, @RequestBody EditGridFormDTO editGridFormDTO){
ValidatorUtils.validateEntity(editGridFormDTO, EditGridFormDTO.EditGrid.class);
editGridFormDTO.setCustomerId(tokenDto.getCustomerId());
return customerGridService.editGrid(tokenDto,editGridFormDTO);
Result result = customerGridService.editGrid(tokenDto,editGridFormDTO);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(tokenDto.getCustomerId());
mq.setOrgId(editGridFormDTO.getGridId());
mq.setOrgType("grid");
mq.setType("grid_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return result;
}
/**

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java

@ -105,7 +105,7 @@ public interface AgencyService {
* @Description 单客户-添加根组织及客户管理员信息
* @Date 2020/7/16 17:13
**/
void saveRootAgency(AddAgencyAndStaffFormDTO agencyAndStaff);
String saveRootAgency(AddAgencyAndStaffFormDTO agencyAndStaff);
/**
* 添加组织V2

49
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -192,15 +192,6 @@ public class AgencyServiceImpl implements AgencyService {
//5.redis缓存
customerAgencyRedis.delete(formDTO.getAgencyId());
//2021-10-18 推送mq,数据同步到中介库 start【中介库只放了组织的名称、级别,所以涉及批量修改pname的操作不涉及同步中间库】
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(originalEntity.getCustomerId());
mq.setOrgId(formDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return result;
}
@ -241,15 +232,6 @@ public class AgencyServiceImpl implements AgencyService {
throw new RenException(CustomerAgencyConstant.DEL_EXCEPTION);
}
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(formDTO.getCustomerId());
mq.setOrgId(formDTO.getAgencyId());
mq.setOrgType("agency");
mq.setType("agency_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return result;
}
@ -406,15 +388,6 @@ public class AgencyServiceImpl implements AgencyService {
entity.setCustomerId(form.getCustomerId());
customerAgencyDao.insert(entity);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(form.getCustomerId());
mq.setOrgId(entity.getId());
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return entity.getId();
}
@ -427,7 +400,8 @@ public class AgencyServiceImpl implements AgencyService {
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveRootAgency(AddAgencyAndStaffFormDTO agencyAndStaff) {
public String saveRootAgency(AddAgencyAndStaffFormDTO agencyAndStaff) {
String agencyId = "";
CustomerAgencyDTO agencyDTO = agencyAndStaff.getAgencyDTO();
AdminStaffFromDTO staffDTO = agencyAndStaff.getStaffDTO();
@ -475,15 +449,8 @@ public class AgencyServiceImpl implements AgencyService {
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_MANAGER_ERROR.getCode(), staffResult.getMsg());
}
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(agencyDTO.getCustomerId());
mq.setOrgId(entity.getId());
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
agencyId = entity.getId();
return agencyId;
}
/**
@ -529,14 +496,6 @@ public class AgencyServiceImpl implements AgencyService {
resultDTO.setAgencyId(insertEntity.getId());
resultDTO.setAreaCode(insertEntity.getAreaCode());
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(parent.getCustomerId());
mq.setOrgId(insertEntity.getId());
mq.setOrgType("agency");
mq.setType("agency_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return resultDTO;
}

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java

@ -278,15 +278,6 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
AddGridResultDTO resultDTO = new AddGridResultDTO();
resultDTO.setGridId(customerGridEntity.getId());
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(customerAgencyDTO.getCustomerId());
mq.setOrgId(customerGridEntity.getId());
mq.setOrgType("grid");
mq.setType("grid_create");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return new Result<AddGridResultDTO>().ok(resultDTO);
}
@ -309,15 +300,6 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
customerGridDTO.setId(editGridFormDTO.getGridId());
baseDao.editGrid(customerGridDTO);
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(editGridFormDTO.getCustomerId());
mq.setOrgId(editGridFormDTO.getGridId());
mq.setOrgType("grid");
mq.setType("grid_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return new Result();
}
@ -337,14 +319,6 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
return new Result().error(EpmetErrorCode.NOT_DEL_GRID.getCode());
}
}
//2021-10-18 推送mq,数据同步到中介库 start
OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg();
mq.setCustomerId(deleteGridFormDTO.getCustomerId());
mq.setOrgId(deleteGridFormDTO.getGridId());
mq.setOrgType("grid");
mq.setType("grid_change");
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq);
//2021-10-18 end
return new Result();
}

161
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseConflictsResolveDTO.java

@ -27,7 +27,7 @@ import java.util.Date;
* 事件中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-22
* @since v1.0.0 2021-11-25
*/
@Data
public class BaseConflictsResolveDTO implements Serializable {
@ -40,38 +40,173 @@ public class BaseConflictsResolveDTO implements Serializable {
private String id;
/**
* 事件信息
* 事件所属网格ID
*/
private String eventInfo;
private Integer gridId;
/**
* 事件所属网格ID
* 网格名称
*/
private String gridName;
/**
* 事件名称
*/
private String eventName;
/**
* 发生日期
*/
private Date happenDate;
/**
* 发生地点
*/
private String happenPlace;
/**
* 事件规模
*/
private String eventScale;
/**
* 涉及人数
*/
private Integer numberInvolved;
/**
* 事件简述
*/
private String eventDescription;
/**
* 涉及单位
*/
private String relatedUnits;
/**
* 主要当事人证件代码
*/
private String identificationCode;
/**
* 主要当事人证件号码
*/
private String idCard;
/**
* 主要当事人姓名
*/
private String gridId;
private String name;
/**
*
* 主要当事人性别
*/
private String delFlag;
private String sex;
/**
* 主要当事人民族
*/
private String nation;
/**
* 主要当事人学历
*/
private String education;
/**
* 主要当事人人员类别二级
*/
private String personnelCategory;
/**
* 主要当事人居住详址
*/
private String detailAddress;
/**
* 是否解决或化解Y已解决N未解决
*/
private String successfulOrNot;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 创建人
*/
private String createdBy;
private String createBy;
/**
* 创建时间
*/
private Date createdTime;
private Date createDate;
/**
* 修改人
*/
private String updateBy;
/**
* 修改时间
*/
private Date updateDate;
/**
* 事件所属网格ID状态01待办理02待核实03办结
*/
private String status;
/**
* 事件编号自定义编号可以加前缀如py
*/
private String eventNo;
/**
* 采集来源01App02Web
*/
private String source;
/**
* 事件类别(一级)
*/
private String firstEventCategory;
/**
* 事件类别(二级)
*/
private String secondEventCategory;
/**
* 主要当事人人员类别(一级)
*/
private String firstPersonnelCategory;
/**
* 办结方式状态是办结的时候才填
*/
private String resolveWay;
/**
* 办结层级状态是办结的时候才填
*/
private String resolveGridLevel;
/**
*
* 办结时间状态是办结的时候才填
*/
private String updatedBy;
private Date resolveTime;
/**
* 更新时间
* 同步状态 0 未同步 1 已同步
*/
private Date updatedTime;
private String flag;
}

136
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseGridInfoDTO.java

@ -1,136 +0,0 @@
/**
* 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.opendata.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 网格基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Data
public class BaseGridInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 组织/网格Id
*/
private String orgId;
/**
* 网格编码
*/
private String code;
/**
* 网格名称
*/
private String gridName;
/**
* 网格层级[07:网格]
*/
private String gridLevel;
/**
* 专属网格类型[01:党政机关; 02:医院; 03:学校; 04:企业; 05:园区; 06:商圈; 07:市场; 08:景区;
*/
private String gridType;
/**
* 网格内人口规模[01:500人以下含500人; 02:500-1000人含1000人; 03:1000-1500人含1500人; 04:1500人以上]
*/
private String populationSize;
/**
* 是否成立网格党支部或网格党小组[YN]
*/
private String isPartyBranch;
/**
* 网格党组织类型[01:网格党支部; 02:网格党小组]
*/
private String partyBranchType;
/**
* 中心点质心经度
*/
private String lng;
/**
* 中心点质心纬度
*/
private String lat;
/**
* 网格颜色
*/
private String gridColor;
/**
* 空间范围
*/
private String shape;
/**
* 删除标识 0.未删除 1.已删除
*/
private Long delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

191
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/BaseGridUserDTO.java

@ -1,191 +0,0 @@
/**
* 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.opendata.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 网格员基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Data
public class BaseGridUserDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 网格Id
*/
private String gridId;
/**
* 人员Id
*/
private String staffId;
/**
* 网格编码
*/
private String code;
/**
* 网格名称
*/
private String gridName;
/**
* 网格员姓名
*/
private String nickName;
/**
* 专属网格类型[01:党政机关; 02:医院; 03:学校; 04:企业; 05:园区; 06:商圈; 07:市场; 08:景区;
*/
private String cardNum;
/**
* 网格员类型[01:专职网格员; 02:兼职网格员; 03:网格长; 04:综治机构人员; 05:职能部门人员]
*/
private String userType;
/**
* 手机号码
*/
private String phonenumber;
/**
* 性别[1:男性; 2:女性; 9:未说明的性别]
*/
private String sex;
/**
* 民族[字典表主键]
*/
private String nation;
/**
* 政治面貌[字典表主键]
*/
private String paerty;
/**
* 出生日期[YYYY-MM-DD]
*/
private Date birthday;
/**
* 学历[字典表主键]
*/
private String education;
/**
* 入职时间
*/
private Date entryDate;
/**
* 是否离职
*/
private String isLeave;
/**
* 离职时间
*/
private Date leaveDate;
/**
* 网格员年收入
*/
private String income;
/**
* 是否社区两委委员[YN]
*/
private String isCommittee;
/**
* 是否社区工作者[YN]
*/
private String isCommunityWorkers;
/**
* 是否社会工作者[YN]
*/
private String isSocialWorker;
/**
* 是否村民小组长[YN
*/
private String isVillageLeader;
/**
* 是否警务助理[YN]
*/
private String isPoliceAssistant;
/**
* 是否人民调解员[YN]
*/
private String isMediator;
/**
* 删除标识 0.未删除 1.已删除
*/
private Long delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

35
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExDeptDTO.java

@ -36,46 +36,61 @@ public class ExDeptDTO implements Serializable {
/**
* 市平台部门id
*/
private Integer deptId;
private Integer deptId;
/**
* 市平台父部门id
*/
private Integer parentId;
private Integer parentId;
/**
* 祖级列表
*/
private String ancestors;
private String ancestors;
/**
* 市平台部门/网格名称
*/
private String fullName;
private String fullName;
/**
* 市平台部门/网格简称
*/
private String deptName;
private String deptName;
/**
* 市平台部门/网格编码
*/
private String deptCode;
private String deptCode;
/**
*
* 省标准区划编码/网格编码
*/
private String gridCode;
private String gridCode;
/**
* 组织类型
*/
private String isCgorg;
/**
* 区县平台部门id
*/
private String deptIdQx;
private String qxDeptId;
/**
* 区县平台部门/网格名称
*/
private String qxDeptCode;
/**
* 区县平台部门/网格名称
*/
private String deptNameQx;
private String qxDeptName;
/**
* 区县平台客户Id
*/
private String qxCustomerId;
}

33
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/ExUserDTO.java

@ -36,41 +36,46 @@ public class ExUserDTO implements Serializable {
/**
* 市平台 用户ID
*/
private String userId;
private Integer userId;
/**
* 市平台 用户名
*/
private String userName;
private String userName;
/**
* 市平台 用户身份证
* 市平台 登录账
*/
private String idCard;
private String loginName;
/**
* 市平台 用户手机号
* 市平台所属区县街道村居或网格id
*/
private String mobile;
private String gridId;
/**
* 区县平台 用户ID
* 市平台所属部门id
*/
private String userIdQx;
private String deptId;
/**
* 区县平台 用户名
* 区县平台用户id
*/
private String userNameQx;
private String qxUserId;
/**
* 区县平台 用户账号
* 区县平台姓名/用户名称
*/
private String userAccount;
private String qxUserName;
/**
* 删除标识
* 区县平台手机号码
*/
private String delFlag;
private String qxMobile;
/**
* 区县平台客户Id
*/
private String qxCustomerId;
}

4
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/GridBaseInfoFormDTO.java → epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/ExDeptFormDTO.java

@ -12,13 +12,13 @@ import java.util.List;
* @author sun
*/
@Data
public class GridBaseInfoFormDTO implements Serializable {
public class ExDeptFormDTO implements Serializable {
private static final long serialVersionUID = -3634745091993094743L;
/**
* 客户Id
*/
@NotBlank(message = "事件标识不能为空", groups = {Grid.class})
@NotBlank(message = "客户Id不能为空", groups = {Grid.class})
private String customerId = "";
/**
* 网格Id

2
epmet-module/open-data-worker/open-data-worker-client/src/main/java/com/epmet/opendata/dto/form/StaffBaseInfoFormDTO.java

@ -18,7 +18,7 @@ public class StaffBaseInfoFormDTO implements Serializable {
/**
* 客户Id
*/
@NotBlank(message = "事件标识不能为空", groups = {Staff.class})
@NotBlank(message = "客户Id不能为空", groups = {Staff.class})
private String customerId = "";
/**
* 人员Id

2
epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-voice-server:
container_name: open-data-worker-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.69
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.1
ports:
- "8107:8107"
network_mode: host # 使用现有网络

1
epmet-module/open-data-worker/open-data-worker-server/pom.xml

@ -2,6 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>0.3.1</version>
<parent>
<artifactId>open-data-worker</artifactId>
<groupId>com.epmet</groupId>

22
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridInfoController.java → epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/ExDeptController.java

@ -19,8 +19,8 @@ package com.epmet.opendata.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.opendata.dto.form.GridBaseInfoFormDTO;
import com.epmet.opendata.service.BaseGridInfoService;
import com.epmet.opendata.dto.form.ExDeptFormDTO;
import com.epmet.opendata.service.ExDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -35,11 +35,11 @@ import org.springframework.web.bind.annotation.RestController;
* @since v1.0.0 2021-10-15
*/
@RestController
@RequestMapping("basegridinfo")
public class BaseGridInfoController {
@RequestMapping("exdept")
public class ExDeptController {
@Autowired
private BaseGridInfoService baseGridInfoService;
private ExDeptService exDeptService;
/**
@ -47,9 +47,9 @@ public class BaseGridInfoController {
* @Description 组织基础信息中间库同步
**/
@PostMapping("agencybaseinfo")
public Result getAgencyBaseInfo(@RequestBody(required = false) GridBaseInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridBaseInfoFormDTO.Grid.class);
baseGridInfoService.getAgencyBaseInfo(formDTO);
public Result getAgencyBaseInfo(@RequestBody(required = false) ExDeptFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ExDeptFormDTO.Grid.class);
exDeptService.getAgencyBaseInfo(formDTO);
return new Result();
}
@ -58,9 +58,9 @@ public class BaseGridInfoController {
* @Description 网格基础信息中间库同步
**/
@PostMapping("gridbaseinfo")
public Result getGridBaseInfo(@RequestBody(required = false) GridBaseInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridBaseInfoFormDTO.Grid.class);
baseGridInfoService.getGridBaseInfo(formDTO);
public Result getGridBaseInfo(@RequestBody(required = false) ExDeptFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ExDeptFormDTO.Grid.class);
exDeptService.getGridBaseInfo(formDTO);
return new Result();
}

15
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/BaseGridUserController.java → epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/controller/ExUserController.java

@ -19,17 +19,14 @@ package com.epmet.opendata.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.user.result.GridUserInfoDTO;
import com.epmet.opendata.dto.form.StaffBaseInfoFormDTO;
import com.epmet.opendata.service.BaseGridUserService;
import com.epmet.opendata.service.ExUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 网格员基础信息表
@ -38,11 +35,11 @@ import java.util.List;
* @since v1.0.0 2021-10-15
*/
@RestController
@RequestMapping("basegriduser")
public class BaseGridUserController {
@RequestMapping("exuser")
public class ExUserController {
@Autowired
private BaseGridUserService baseGridUserService;
private ExUserService exUserService;
/**
* @Author sun
@ -51,7 +48,7 @@ public class BaseGridUserController {
@PostMapping("staffbaseinfo")
public Result getStaffBaseInfo(@RequestBody(required = false) StaffBaseInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffBaseInfoFormDTO.Staff.class);
baseGridUserService.getStaffBaseInfo(formDTO);
exUserService.getStaffBaseInfo(formDTO);
return new Result();
}

41
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/BaseGridInfoDao.java

@ -1,41 +0,0 @@
/**
* 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.opendata.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.opendata.entity.BaseGridInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 网格基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Mapper
public interface BaseGridInfoDao extends BaseDao<BaseGridInfoEntity> {
/**
* @Author sun
* @Description 网格基础信息批量更新部分字段
**/
void updateBatch(@Param("list") List<BaseGridInfoEntity> entityList);
}

41
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/BaseGridUserDao.java

@ -1,41 +0,0 @@
/**
* 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.opendata.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.opendata.entity.BaseGridUserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 网格员基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Mapper
public interface BaseGridUserDao extends BaseDao<BaseGridUserEntity> {
/**
* @Author sun
* @Description 网格员基础信息批量更新部分字段
**/
void updateBatch(@Param("list") List<BaseGridUserEntity> entityList);
}

1
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/ExDeptDao.java

@ -18,7 +18,6 @@
package com.epmet.opendata.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.opendata.entity.BaseGridInfoEntity;
import com.epmet.opendata.entity.ExDeptEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

11
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/dao/ExUserDao.java

@ -20,6 +20,9 @@ package com.epmet.opendata.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.opendata.entity.ExUserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 系统用户中间表
@ -29,5 +32,11 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ExUserDao extends BaseDao<ExUserEntity> {
/**
* @Author sun
* @Description 网格员基础信息批量更新部分字段
**/
void updateBatch(@Param("list") List<ExUserEntity> entityList);
}

187
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseConflictsResolveEntity.java

@ -18,31 +18,196 @@
package com.epmet.opendata.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 事件中间表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-22
* @since v1.0.0 2021-11-25
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("base_conflicts_resolve")
public class BaseConflictsResolveEntity {
public class BaseConflictsResolveEntity{
private static final long serialVersionUID = 1L;
/**
* 事件信息
*/
private String eventInfo;
/**
* 事件ID
*/
private String id;
private String customerId;
/**
* 事件所属网格ID
*/
private Integer gridId;
/**
* 网格名称
*/
private String gridName;
/**
* 事件名称
*/
private String eventName;
/**
* 发生日期
*/
private Date happenDate;
/**
* 发生地点
*/
private String happenPlace;
/**
* 事件规模
*/
private String eventScale;
/**
* 涉及人数
*/
private Integer numberInvolved;
/**
* 事件简述
*/
private String eventDescription;
/**
* 涉及单位
*/
private String relatedUnits;
/**
* 主要当事人证件代码
*/
private String identificationCode;
/**
* 主要当事人证件号码
*/
private String idCard;
/**
* 主要当事人姓名
*/
private String name;
/**
* 主要当事人性别
*/
private String sex;
/**
* 主要当事人民族
*/
private String nation;
/**
* 主要当事人学历
*/
private String education;
/**
* 主要当事人人员类别二级
*/
private String personnelCategory;
/**
* 主要当事人居住详址
*/
private String detailAddress;
/**
* 是否解决或化解Y已解决N未解决
*/
private String successfulOrNot;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createDate;
/**
* 修改人
*/
private String updateBy;
/**
* 修改时间
*/
private Date updateDate;
/**
* 事件所属网格ID状态01待办理02待核实03办结
*/
private String status;
/**
* 事件编号自定义编号可以加前缀如py
*/
private String eventNo;
/**
* 采集来源01App02Web
*/
private String source;
/**
* 事件类别(一级)
*/
private String firstEventCategory;
/**
* 事件类别(二级)
*/
private String secondEventCategory;
/**
* 主要当事人人员类别(一级)
*/
private String firstPersonnelCategory;
/**
* 办结方式状态是办结的时候才填
*/
private String resolveWay;
/**
* 办结层级状态是办结的时候才填
*/
private String resolveGridLevel;
/**
* 事件所属网格ID
*/
private String gridId;
/**
* 办结时间状态是办结的时候才填
*/
private Date resolveTime;
/**
* 同步状态 0 未同步 1 已同步
*/
private String flag;
}

1
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseDisputeProcessEntity.java

@ -97,7 +97,6 @@ public class BaseDisputeProcessEntity extends BaseEpmetEntity {
* 是否办结 YN
*/
private String successfulOrNo;
/**
* 办结层级
01省自治区直辖市

106
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseGridInfoEntity.java

@ -1,106 +0,0 @@
/**
* 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.opendata.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 网格基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("base_grid_info")
public class BaseGridInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
/**
* 组织/网格Id
*/
private String orgId;
/**
* 网格编码
*/
private String code;
/**
* 网格名称
*/
private String gridName;
/**
* 网格层级[07:网格]
*/
private String gridLevel;
/**
* 专属网格类型[01:党政机关; 02:医院; 03:学校; 04:企业; 05:园区; 06:商圈; 07:市场; 08:景区;
*/
private String gridType;
/**
* 网格内人口规模[01:500人以下含500人; 02:500-1000人含1000人; 03:1000-1500人含1500人; 04:1500人以上]
*/
private String populationSize;
/**
* 是否成立网格党支部或网格党小组[YN]
*/
private String isPartyBranch;
/**
* 网格党组织类型[01:网格党支部; 02:网格党小组]
*/
private String partyBranchType;
/**
* 中心点质心经度
*/
private String lng;
/**
* 中心点质心纬度
*/
private String lat;
/**
* 网格颜色
*/
private String gridColor;
/**
* 空间范围
*/
private String shape;
}

161
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/BaseGridUserEntity.java

@ -1,161 +0,0 @@
/**
* 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.opendata.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 网格员基础信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-15
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("base_grid_user")
public class BaseGridUserEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
/**
* 网格Id
*/
private String gridId;
/**
* 人员Id
*/
private String staffId;
/**
* 网格编码
*/
private String code;
/**
* 网格名称
*/
private String gridName;
/**
* 网格员姓名
*/
private String nickName;
/**
* 专属网格类型[01:党政机关; 02:医院; 03:学校; 04:企业; 05:园区; 06:商圈; 07:市场; 08:景区;
*/
private String cardNum;
/**
* 网格员类型[01:专职网格员; 02:兼职网格员; 03:网格长; 04:综治机构人员; 05:职能部门人员]
*/
private String userType;
/**
* 手机号码
*/
private String phonenumber;
/**
* 性别[1:男性; 2:女性; 9:未说明的性别]
*/
private String sex;
/**
* 民族[字典表主键]
*/
private String nation;
/**
* 政治面貌[字典表主键]
*/
private String paerty;
/**
* 出生日期[YYYY-MM-DD]
*/
private Date birthday;
/**
* 学历[字典表主键]
*/
private String education;
/**
* 入职时间
*/
private Date entryDate;
/**
* 是否离职
*/
private String isLeave;
/**
* 离职时间
*/
private Date leaveDate;
/**
* 网格员年收入
*/
private String income;
/**
* 是否社区两委委员[YN]
*/
private String isCommittee;
/**
* 是否社区工作者[YN]
*/
private String isCommunityWorkers;
/**
* 是否社会工作者[YN]
*/
private String isSocialWorker;
/**
* 是否村民小组长[YN
*/
private String isVillageLeader;
/**
* 是否警务助理[YN]
*/
private String isPoliceAssistant;
/**
* 是否人民调解员[YN]
*/
private String isMediator;
}

21
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java

@ -65,18 +65,33 @@ public class ExDeptEntity {
private String deptCode;
/**
*
* 省标准区划编码/网格编码
*/
private String gridCode;
/**
* 组织类型
*/
private String isCgorg;
/**
* 区县平台部门id
*/
private String deptIdQx;
private String qxDeptId;
/**
* 区县平台部门/网格名称
*/
private String qxDeptCode;
/**
* 区县平台部门/网格名称
*/
private String deptNameQx;
private String qxDeptName;
/**
* 区县平台客户Id
*/
private String qxCustomerId;
}

33
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExUserEntity.java

@ -37,7 +37,7 @@ public class ExUserEntity {
/**
* 市平台 用户ID
*/
private String userId;
private Integer userId;
/**
* 市平台 用户名
@ -45,28 +45,39 @@ public class ExUserEntity {
private String userName;
/**
* 市平台 用户身份证
* 市平台 登录账
*/
private String idCard;
private String loginName;
/**
* 市平台 用户手机号
* 市平台所属区县街道村居或网格id
*/
private String mobile;
private String gridId;
/**
* 区县平台 用户ID
* 市平台所属部门id
*/
private String userIdQx;
private String deptId;
/**
* 区县平台 用户名
* 区县平台用户id
*/
private String userNameQx;
private String qxUserId;
/**
* 区县平台 用户账号
* 区县平台姓名/用户名称
*/
private String userAccount;
private String qxUserName;
/**
* 区县平台手机号码
*/
private String qxMobile;
/**
* 区县平台客户Id
*/
private String qxCustomerId;
}

14
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java

@ -4,11 +4,13 @@ import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.register.MQAbstractRegister;
import com.epmet.commons.rocketmq.register.MQConsumerProperties;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.opendata.mq.listener.OpenDataOrgChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataPatrolChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataProjectChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataStaffChangeEventListener;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
@ -19,35 +21,39 @@ import org.springframework.stereotype.Component;
@Component
public class RocketMQConsumerRegister extends MQAbstractRegister {
@Autowired
private DistributedLock distributedLock;
@Override
public void registerAllListeners(String env, MQConsumerProperties consumerProperties) {
// 客户初始化监听器注册
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_ORG_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.ORG,
"*",
new OpenDataOrgChangeEventListener());
new OpenDataOrgChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_STAFF_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.STAFF,
"*",
new OpenDataStaffChangeEventListener());
new OpenDataStaffChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_PATROL_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.PATROL,
"*",
new OpenDataPatrolChangeEventListener());
new OpenDataPatrolChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_PROJECT_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.PROJECT,
"*",
new OpenDataProjectChangeEventListener());
new OpenDataProjectChangeEventListener(distributedLock));
// ...其他监听器类似
}

19
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java

@ -9,8 +9,8 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.opendata.dto.form.GridBaseInfoFormDTO;
import com.epmet.opendata.service.BaseGridInfoService;
import com.epmet.opendata.dto.form.ExDeptFormDTO;
import com.epmet.opendata.service.ExDeptService;
import org.apache.commons.lang.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
@ -35,6 +35,13 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataOrgChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -62,22 +69,20 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
logger.info("【开放数据事件监听器】-组织信息变更-收到消息内容:{},操作:{}", msg, tags);
OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_org:%s", obj.getOrgId()),
30L, 30L, TimeUnit.SECONDS);
GridBaseInfoFormDTO dto = new GridBaseInfoFormDTO();
ExDeptFormDTO dto = new ExDeptFormDTO();
dto.setCustomerId(obj.getCustomerId());
dto.setType(obj.getType());
List<String> orgIdList = new ArrayList<>();
orgIdList.add(obj.getOrgId());
if ("agency".equals(obj.getOrgType())) {
SpringContextUtils.getBean(BaseGridInfoService.class).getAgencyBaseInfo(dto);
SpringContextUtils.getBean(ExDeptService.class).getAgencyBaseInfo(dto);
} else {
SpringContextUtils.getBean(BaseGridInfoService.class).getGridBaseInfo(dto);
SpringContextUtils.getBean(ExDeptService.class).getGridBaseInfo(dto);
}
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java

@ -37,6 +37,12 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataPatrolChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -67,10 +73,8 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr
log.warn("consumeMessage msg body is blank");
return;
}
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_patrol:%s", msgObj.getPatrolId()),
30L, 30L, TimeUnit.SECONDS);
UpsertPatrolRecordForm patrolRecordForm = new UpsertPatrolRecordForm();

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java

@ -38,6 +38,12 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataProjectChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -68,10 +74,8 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
DisputeProcessMQMsg obj = JSON.parseObject(msg, DisputeProcessMQMsg.class);
EventInfoFormDTO formDTO = ConvertUtils.sourceToTarget(obj, EventInfoFormDTO.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_project:%s", obj.getProjectId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(BaseDisputeProcessService.class).getEventinfo(formDTO);

14
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java

@ -1,7 +1,7 @@
package com.epmet.opendata.mq.listener;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
@ -11,7 +11,7 @@ import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.opendata.dto.form.StaffBaseInfoFormDTO;
import com.epmet.opendata.service.BaseGridUserService;
import com.epmet.opendata.service.ExUserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
@ -38,6 +38,12 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataStaffChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -67,10 +73,8 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre
logger.info("【开放数据事件监听器】-工作人员信息变更-收到消息内容:{}, 操作:{}, blockedMsgLabel:{}", msg, tags, pendingMsgLabel);
OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_staff:%s", obj.getOrgId()),
30L, 30L, TimeUnit.SECONDS);
@ -79,7 +83,7 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre
dto.setType(obj.getType());
List<String> staffIdList = new ArrayList<>();
staffIdList.add(obj.getOrgId());
SpringContextUtils.getBean(BaseGridUserService.class).getStaffBaseInfo(dto);
SpringContextUtils.getBean(ExUserService.class).getStaffBaseInfo(dto);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【开放数据事件监听器】-工作人员信息变更-初始化客户组织失败:".concat(ExceptionUtils.getErrorStackTrace(e)));

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save