Browse Source

Merge branch 'dev' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev

feature/evaluate
wxz 4 years ago
parent
commit
c4da1f8bb6
  1. 2
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java
  2. 91
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java
  3. 1
      epmet-cloud-generator/src/main/java/io/renren/GeneratorApplication.java
  4. 6
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  5. 6
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  6. 33
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java
  7. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  8. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  9. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  10. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  11. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberStatsFormDTO.java
  12. 2
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java
  13. 20
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PersonalPatrolListResultDTO.java
  14. 7
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffListResultDTO.java
  15. 22
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java
  16. 20
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java
  17. 39
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/enums/GridMemberDataAnalysisEnums.java
  18. 107
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java
  19. 68
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  20. 55
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java
  21. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java
  22. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java
  23. 121
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/datastats/FactGridMemberStatisticsDailyEntity.java
  24. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java
  25. 23
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  26. 24
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  27. 17
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  28. 82
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  29. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  30. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  31. 51
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java
  32. 133
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml
  33. 58
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml
  34. 48
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml
  35. 41
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/BizDataFormDTO.java
  36. 25
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/StaffPatrolStatsFormDTO.java
  37. 1
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/result/OrgStatisticsResultDTO.java
  38. 62
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/CustomerStaffGridDTO.java
  39. 181
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsDailyDTO.java
  40. 146
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsMonthlyDTO.java
  41. 61
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/CustomerGridStaffDTO.java
  42. 137
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/CustomerStaffDTO.java
  43. 122
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StaffPatrolRecordResult.java
  44. 35
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StaffRoleInfoDTO.java
  45. 147
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java
  46. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java
  47. 9
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java
  48. 4
      epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml
  49. 46
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/BizDataStatsController.java
  50. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  51. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java
  52. 34
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactGridMemberStatisticsDailyDao.java
  53. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactGridMemberStatisticsMonthlyDao.java
  54. 40
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java
  55. 55
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java
  56. 20
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  57. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java
  58. 38
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerStaffGridDao.java
  59. 63
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java
  60. 41
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java
  61. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  62. 151
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsDailyEntity.java
  63. 116
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsMonthlyEntity.java
  64. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java
  65. 40
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerStaffGridEntity.java
  66. 116
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java
  67. 17
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
  68. 40
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/BizDataStatsService.java
  69. 300
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java
  70. 41
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridMemberStatisticsDailyService.java
  71. 31
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridMemberStatisticsMonthlyService.java
  72. 24
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginIssueLogDailyService.java
  73. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java
  74. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  75. 407
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridMemberStatisticsDailyServiceImpl.java
  76. 36
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridMemberStatisticsMonthlyServiceImpl.java
  77. 53
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginIssueLogDailyServiceImpl.java
  78. 72
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java
  79. 24
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  80. 66
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java
  81. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  82. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java
  83. 22
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerStaffService.java
  84. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java
  85. 39
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerStaffServiceImpl.java
  86. 1
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java
  87. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  88. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java
  89. 30
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java
  90. 48
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java
  91. 36
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  92. 41
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.21__grid_member_statistics.sql
  93. 39
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactGridMemberStatisticsDailyDao.xml
  94. 32
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactGridMemberStatisticsMonthlyDao.xml
  95. 60
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml
  96. 102
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  97. 35
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  98. 2
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/StatsIssueDao.xml
  99. 18
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml
  100. 31
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml

2
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java

@ -4,6 +4,7 @@ import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.mq.listener.listener.AuthOperationLogListener;
import com.epmet.mq.listener.listener.PointOperationLogListener;
import com.epmet.mq.listener.listener.ProjectOperationLogListener;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
@ -33,6 +34,7 @@ public class RocketMQConsumerRegister {
if (!EnvEnum.LOCAL.getCode().equals(env)) {
register(nameServer, ConsomerGroupConstants.AUTH_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.AUTH, "*", new AuthOperationLogListener());
register(nameServer, ConsomerGroupConstants.PROJECT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT_CHANGED, "*", new ProjectOperationLogListener());
register(nameServer, ConsomerGroupConstants.POINT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.POINT, "*", new PointOperationLogListener());
}
} catch (MQClientException e) {
e.printStackTrace();

91
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java

@ -0,0 +1,91 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.PointRuleChangedMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.entity.LogOperationEntity;
import com.epmet.enums.SystemMessageTypeEnum;
import com.epmet.mq.listener.bean.log.LogOperationHelper;
import com.epmet.mq.listener.bean.log.OperatorInfo;
import com.epmet.service.LogOperationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author wxz
* @Description 积分相关日志监听器
* @return
* @date 2021.06.21 10:13
*/
public class PointOperationLogListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
try {
msgs.forEach(msg -> consumeMessage(msg));
} catch (Exception e) {
logger.error(ExceptionUtils.getErrorStackTrace(e));
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
private void consumeMessage(MessageExt messageExt) {
String opeType = messageExt.getTags();
String msg = new String(messageExt.getBody());
logger.info("积分操作日志监听器-收到消息内容:{}", msg);
PointRuleChangedMQMsg msgObj = JSON.parseObject(msg, PointRuleChangedMQMsg.class);
String content = StringUtils.isBlank(msgObj.getOperationBrief()) ? "" : msgObj.getOperationBrief();
OperatorInfo operatorInfo = LogOperationHelper.getInstance().getOperatorInfo(msgObj.getOperatorId());
LogOperationEntity logEntity = new LogOperationEntity();
logEntity.setCategory(messageExt.getTopic());
logEntity.setType(opeType);
logEntity.setTypeDisplay(SystemMessageTypeEnum.getTypeDisplay(opeType));
logEntity.setTargetId(msgObj.getRuleId());
logEntity.setIp(msgObj.getIp());
logEntity.setFromApp(msgObj.getFromApp());
logEntity.setFromClient(msgObj.getFromClient());
logEntity.setCustomerId(operatorInfo.getCustomerId());
logEntity.setOperatorId(msgObj.getOperatorId());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatingTime(msgObj.getOperatingTime());
logEntity.setContent(content);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:point_operation_log:%s:%s", logEntity.getType(), logEntity.getTargetId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(LogOperationService.class).log(logEntity);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
throw e;
} finally {
distributedLock.unLock(lock);
}
}
}

1
epmet-cloud-generator/src/main/java/io/renren/GeneratorApplication.java

@ -2,7 +2,6 @@ package io.renren;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GeneratorApplication {

6
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -37,8 +37,12 @@ public interface ConsomerGroupConstants {
String AUTH_OPERATION_LOG_GROUP = "auth_operation_log_group";
/**
* 项目操作日志小肥猪
* 项目操作日志消费组
*/
String PROJECT_OPERATION_LOG_GROUP = "project_operation_log_group";
/**
* 积分操作消费组
*/
String POINT_OPERATION_LOG_GROUP = "point_operation_log_group";
}

6
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -2,6 +2,7 @@ package com.epmet.commons.rocketmq.constants;
/**
* 话题列表常量其他服务要想发送消息到mq则应当引入epmet-commons-rocketmq模块并且使用此常量
* 用于mq中的topic
*/
public interface TopicConstants {
/**
@ -21,4 +22,9 @@ public interface TopicConstants {
* 认证
*/
String AUTH = "auth";
/**
* 积分系统话题
*/
String POINT = "point";
}

33
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java

@ -0,0 +1,33 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import java.util.Date;
/**
* 积分规则变动消息体
*/
@Data
public class PointRuleChangedMQMsg {
/**
* 操作简介
*/
private String operationBrief;
/**
* 规则的id
*/
private String ruleId;
/**
* 谁操作的
*/
private String operatorId;
private String ip;
private String fromApp;
private String fromClient;
private Date operatingTime;
}

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -86,4 +86,14 @@ public interface StrConstant {
String SPECIAL_CUSTOMER = "150282ed25c14ff0785e7e06283b6283";
//平音客户
String PY_CUSTOMER = "6f203e30de1a65aab7e69c058826cd80";
/**
* 单位积分,积分上限积分说明积分事件
*/
String POINT_CHANGE = "将%s调整为%s";
/**
* 积分规则修改的头
*/
String POINT_CHANGE_HEAD = "修改了%s规则,";
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -171,6 +171,7 @@ public enum RequirePermissionEnum {
*/
MORE_PATROL_RECORD_LIST("more_patrol_record_list","更多:日志记录:巡查记录:列表","巡查记录列表"),
MORE_SYSTEM_LOG_LIST("MORE_SYSTEM_LOG_LIST","更多:日志记录:系统日志:列表","系统日志列表"),
MORE_GRID_MEMBER_STATS_ANALYSIS("more_grid_member_stats_analysis", "更多:网格员数据分析", "更多:网格员数据分析"),
/**

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

@ -187,7 +187,10 @@ public enum EpmetErrorCode {
SIGN_IN_TIME_PASSED(8912,"当前时间已超过签到时间"),
INVITATION_NOT_EXIST(8913,"链接不存在"),
NOTICE_EXPIRATION_TIME(8914,"通知过期时间不能早于当前时间"),
NOTICE_BE_OVERDUE(8915,"通知已过期不允许再次变更");
NOTICE_BE_OVERDUE(8915,"通知已过期不允许再次变更"),
SAME_RULE_NAME(8916,"该积分事件已存在,请重新调整保存"),
UP_LIMIT_POINT(8917,"积分上限需为单位积分倍数,请重新调整保存");
private int code;

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

@ -847,4 +847,15 @@ public class DateUtils {
return DateUtils.format(date,DateUtils.DATE_TIME_PATTERN);
}
/**
* @Author sun
* @Description 获取当前日期几个自然月之前的日期yyyy-MM-dd HH:mm:ss
**/
public static String getBeforeMonthDate(int beforMonth, String dateType){
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, - beforMonth);
Date date = c.getTime();
return DateUtils.format(date,dateType);
}
}

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberStatsFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description 网格员相关统计formdto
* @author wxz
* @date 2021.07.05 15:46:23
*/
@Data
public class GridMemberStatsFormDTO {
public interface IssueProjectStats {}
@NotBlank(message = "网格ID不能为空", groups = {IssueProjectStats.class})
private String gridId;
}

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

@ -24,7 +24,7 @@ public class StaffListFormDTO implements Serializable {
@NotNull(message = "最近时间不能为空", groups = StaffListFormDTO.Staff.class)
private Integer time;
/**
* 排序字段巡查总次数patrolTotal最近开始巡查时间latestPatrolledTime
* 排序字段巡查总次数patrolTotal最近开始巡查时间latestPatrolledTime上报项目数 reportProjectCount巡查总时长totalTime
*/
@NotBlank(message = "排序条件不能为空", groups = StaffListFormDTO.Staff.class)
private String sortCode;

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

@ -0,0 +1,20 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 个人中心-网格员巡查记录-接口入参
* @Auth sun
*/
@Data
public class PersonalPatrolListResultDTO implements Serializable {
private static final long serialVersionUID = 7129564173128153335L;
//巡查总次数;巡查总时长;立项事件数
private String key;
//key对应值
private String value;
}

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

@ -1,5 +1,6 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
@ -28,5 +29,11 @@ public class StaffListResultDTO implements Serializable {
private String gender = "0";
//正在巡查中:patrolling;否则返回空字符串
private String status = "";
//上报项目数
private Integer reportProjectCount;
//巡查总时长
private String totalTime = "";
@JsonIgnore
private Integer timeNum;
}

22
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java

@ -0,0 +1,22 @@
package com.epmet.dataaggre.dto.govorg.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class GridMemberDataAnalysisFromDTO {
public interface listGridMemberDatas {}
private List<String> gridIds;
// 搜索的人员姓名
private String searchedStaffName;
private String month;
@NotBlank(message = "排序规则不能为空", groups = { listGridMemberDatas.class })
private String sort;
private Integer pageNo = 1;
private Integer pageSize = 10;
}

20
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
@Data
public class GridMemberDataAnalysisResultDTO {
private String gridId;
private String staffId;
private String staffName;
private String orgName;
private Integer projectCount;
private Integer issueToProjectCount;
private Integer closedIssueCount;
private Integer projectResponseCount;
private Integer projectTransferCount;
private Integer projectClosedCount;
}

39
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/enums/GridMemberDataAnalysisEnums.java

@ -0,0 +1,39 @@
package com.epmet.dataaggre.enums;
import java.util.ArrayList;
import java.util.List;
public enum GridMemberDataAnalysisEnums {
SORT_SORT_PROJECT_COUNT("projectCount", "project_count"),
SORT_ISSUE_TO_PROJECT_COUNT("issueToProjectCount", "issue_to_project_count"),
SORT_CLOSED_ISSUE_COUNT("closedIssueCount", "closed_issue_count"),
SORT_PROJECT_RESPONSE_COUNT("projectResponseCount", "project_response_count"),
SORT_PROJECT_TRANSFER_COUNT("projectTransferCount", "project_transfer_count"),
SORT_PROJECT_CLOSED_COUNT("projectClosedCount", "project_closed_count");
private String key;
private String value;
GridMemberDataAnalysisEnums(String key, String value) {
this.key = key;
this.value = value;
}
public static GridMemberDataAnalysisEnums get(String key) {
for (GridMemberDataAnalysisEnums gm : GridMemberDataAnalysisEnums.values()) {
if (gm.key.equals(key)) {
return gm;
}
}
return null;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}

107
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java

@ -7,12 +7,16 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberStatsFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDateListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolRecordListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PersonalPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -20,7 +24,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -33,6 +40,9 @@ public class EpmetUserController {
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private DataStatsService dataStatsService;
/**
* @Param formDTO
@ -79,5 +89,102 @@ public class EpmetUserController {
return new Result<PatrolDateListResultDTO>().ok(epmetUserService.patrolDateList(formDTO));
}
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
@PostMapping("staffpatrollist")
@RequirePermission(requirePermission = RequirePermissionEnum.MORE_PATROL_RECORD_LIST)
public Result<List<StaffListResultDTO>> staffPatrolList(@LoginUser TokenDto tokenDto, @RequestBody StaffListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffListFormDTO.Staff.class);
if (!"patrolTotal".equals(formDTO.getSortCode()) && !"latestPatrolledTime".equals(formDTO.getSortCode())
&& !"reportProjectCount".equals(formDTO.getSortCode()) && !"totalTime".equals(formDTO.getSortCode())) {
throw new RenException("参数错误,排序条件值错误");
}
if (formDTO.getTime() != 1 && formDTO.getTime() != 3) {
throw new RenException("参数错误,最近时间值不正确");
}
formDTO.setUserId(tokenDto.getUserId());
return new Result<List<StaffListResultDTO>>().ok(epmetUserService.staffPatrolList(formDTO));
}
/**
* @Description 个人中心-网格员巡查记录
* @author sun
*/
@PostMapping("personalpatrollist")
public Result<List<PersonalPatrolListResultDTO>> personalPatrolList(@LoginUser TokenDto tokenDto) {
return new Result<List<PersonalPatrolListResultDTO>>().ok(epmetUserService.personalPatrolList(tokenDto.getUserId()));
}
/**
* @Description 网格员项目议题统计数据
* @return
* @author wxz
* @date 2021.07.05 15:49
*/
@PostMapping("/gridmember/issueprojectstats")
public Result<List<Map<String, Object>>> getGridMemberIssueProjectStats(@LoginUser TokenDto loginUser) {
String userId = loginUser.getUserId();
GridMemberDataAnalysisResultDTO data = dataStatsService.getGridMemberIssueProjectStats(userId);
List<Map<String, Object>> result = convertToMapList(data);
return new Result<List<Map<String, Object>>>().ok(result);
}
/**
* @Description 将议题项目统计数据转为前端需要的格式
* @return
* @author wxz
* @date 2021.07.05 16:35
*/
private List<Map<String, Object>> convertToMapList(GridMemberDataAnalysisResultDTO data) {
Integer projectCount = data == null ? 0 : data.getProjectCount();
Integer closedIssueCount = data == null ? 0 : data.getClosedIssueCount();
Integer issueToProjectCount = data == null ? 0 : data.getIssueToProjectCount();
Integer projectClosedCount = data == null ? 0 : data.getProjectClosedCount();
Integer projectResponseCount = data == null ? 0 : data.getProjectResponseCount();
Integer projectTransferCount = data == null ? 0 : data.getProjectTransferCount();
HashMap<String, Object> projectCountMap = new HashMap<>();
projectCountMap.put("key", "直接立项数");
projectCountMap.put("value", projectCount);
projectCountMap.put("type", "project");
HashMap<String, Object> closedIssueCountMap = new HashMap<>();
closedIssueCountMap.put("key", "议题转项目数");
closedIssueCountMap.put("value", issueToProjectCount);
closedIssueCountMap.put("type", "project");
HashMap<String, Object> issueClosedCountMap = new HashMap<>();
issueClosedCountMap.put("key", "议题关闭数");
issueClosedCountMap.put("value", closedIssueCount);
issueClosedCountMap.put("type", "issue");
HashMap<String, Object> projectResponseCountMap = new HashMap<>();
projectResponseCountMap.put("key", "项目响应数");
projectResponseCountMap.put("value", projectResponseCount);
projectResponseCountMap.put("type", "project");
HashMap<String, Object> projectTransferCountMap = new HashMap<>();
projectTransferCountMap.put("key", "项目吹哨数");
projectTransferCountMap.put("value", projectTransferCount);
projectTransferCountMap.put("type", "project");
HashMap<String, Object> projectClosedCountMap = new HashMap<>();
projectClosedCountMap.put("key", "项目结案数");
projectClosedCountMap.put("value", projectClosedCount);
projectClosedCountMap.put("type", "project");
ArrayList<Map<String, Object>> maps = new ArrayList<>(6);
maps.add(projectCountMap);
maps.add(closedIssueCountMap);
maps.add(issueClosedCountMap);
maps.add(projectResponseCountMap);
maps.add(projectTransferCountMap);
maps.add(projectClosedCountMap);
return maps;
}
}

68
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java

@ -1,20 +1,35 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.govorg.form.GridMemberDataAnalysisFromDTO;
import com.epmet.dataaggre.dto.govorg.form.NextAreaCodeFormDTO;
import com.epmet.dataaggre.dto.govorg.result.AgencyGridListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govorg.result.NextAreaCodeResultDTO;
import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dto.result.PublicAndInternalFileResultDTO;
import org.apache.commons.lang3.StringUtils;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
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.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
/**
* @Author zxc
@ -27,6 +42,12 @@ public class GovOrgController {
@Autowired
private GovOrgService govOrgService;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private AggreGridService aggreGridService;
/**
* @param tokenDTO
@ -51,4 +72,51 @@ public class GovOrgController {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<NextAreaCodeResultDTO>>().ok(govOrgService.queryNextLevelAreaCodeList(formDTO));
}
/**
* @Description 网格员统计列表查询
* @return
* @author wxz
* @date 2021.07.05 11:14
*/
@PostMapping("gridmemberdataanalysis")
//@RequirePermission(requirePermission = RequirePermissionEnum.MORE_GRID_MEMBER_STATS_ANALYSIS)
public Result getGridMemberDataAnalysis(@RequestBody GridMemberDataAnalysisFromDTO input) {
ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas.class);
List<String> gridIds = input.getGridIds();
String month = input.getMonth();
Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize();
String sort = input.getSort();
String searchedStaffName = input.getSearchedStaffName();
String loginUserId = loginUserUtil.getLoginUserId();
// 排序字段检验
GridMemberDataAnalysisEnums sortType;
if ((sortType = GridMemberDataAnalysisEnums.get(sort)) == null ) {
throw new RenException(EpmetErrorCode.OPEN_API_PARAMS_MISSING.getCode(), "未知的排序方式");
}
// 用户登录状态判断
if (StringUtils.isBlank(loginUserId)) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询网格员统计数据失败");
}
// 月份格式判断
if (StringUtils.isNotBlank(month)) {
if (!month.matches("\\d{4}/\\d{2}")) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), "月份格式错误:" + month);
} else {
month = month.replace("/", "");
}
}
// 网格id为空处理
if (CollectionUtils.isEmpty(gridIds)) {
gridIds = new ArrayList<>();
}
List<GridMemberDataAnalysisResultDTO> resultList = aggreGridService.getGridMemberDataAnalysis(gridIds, searchedStaffName, loginUserId, month, sortType.getValue(), pageNo, pageSize);
return new Result().ok(resultList);
}
}

55
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java

@ -0,0 +1,55 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.dao.datastats;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.entity.datastats.FactGridMemberStatisticsDailyEntity;
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-07-05
*/
@Mapper
public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMemberStatisticsDailyEntity> {
/**
* @Description 查询网格员统计数据
* @return
* @author wxz
* @date 2021.07.05 13:19
*/
List<GridMemberDataAnalysisResultDTO > listGridMemberDataStats(@Param("gridIds") List<String> gridIds,
@Param("searchedStaffName") String searchedStaffName,
@Param("month") String month,
@Param("sort") String sort);
/**
* @Description 查询网格员议题项目统计数据
* @return
* @author wxz
* @date 2021.07.05 16:17
*/
GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(@Param("staffId") String staffId);
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java

@ -23,6 +23,7 @@ import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -41,4 +42,15 @@ public interface StaffPatrolRecordDao extends BaseDao<StaffPatrolRecordEntity> {
*/
List<StaffListResultDTO> selectPatrolList(StaffListFormDTO formDTO);
/**
* @Description 按条件查询巡查业务数据V2
* @author sun
*/
List<StaffListResultDTO> selectStaffPatrolList(StaffListFormDTO formDTO);
/**
* @Description 汇总查询当前工作人员所有巡查记录数据
* @author sun
*/
StaffListResultDTO selectPersonalPatrolList(@Param("staffId") String staffId);
}

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

@ -62,4 +62,10 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
* @Description 查询工作人员所属组织下网格列表
**/
List<CustomerGridDTO> gridListByStaffId(@Param("staffId") String staffId);
/**
* @Description 有网格列表的查询网格基本信息没有的查询工作人员所属组织级下级所有的网格信息
* @author sun
*/
List<CustomerGridDTO> getGridInfoList(@Param("gridIds") List<String> gridIds, @Param("staffId") String staffId);
}

121
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/datastats/FactGridMemberStatisticsDailyEntity.java

@ -0,0 +1,121 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.entity.datastats;
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-07-05
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("fact_grid_member_statistics_daily")
public class FactGridMemberStatisticsDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* yyyyMMdd
*/
private String dateId;
/**
* 月份ID
*/
private String monthId;
/**
* 年度ID
*/
private String yearId;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格I
*/
private String gridId;
/**
* 上级ID项目来源Agency的上级组织Id
*/
private String pid;
/**
* 所有agencyId的上级组织ID包含agencyId
*/
private String pids;
/**
* 工作人员ID
*/
private String staffId;
/**
* 工作人员姓名
*/
private String staffName;
/**
* 项目立项数
*/
private Integer projectCount;
/**
* 议题转项目数
*/
private Integer issueToProjectCount;
/**
* 议题关闭数
*/
private Integer closedIssueCount;
/**
* 项目响应数
*/
private Integer projectResponseCount;
/**
* 项目吹哨数
*/
private Integer projectTransferCount;
/**
* 项目结案数
*/
private Integer projectClosedCount;
}

20
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java

@ -0,0 +1,20 @@
package com.epmet.dataaggre.service;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import java.util.List;
/**
* @Description 聚合的网格相关service不指定具体的数据源它调用其他子service子service中指定具体数据源
* @author wxz
* @date 2021.07.05 13:06:35
*/
public interface AggreGridService {
/**
* @Description 网格员数据统计列表查询
* @return
* @author wxz
* @date 2021.07.05 11:17
*/
List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(List<String> gridIds, String searchedStaffName, String currStaffId, String month, String sort, Integer pageNo, Integer pageSize);
}

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

@ -3,9 +3,11 @@ package com.epmet.dataaggre.service.datastats;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import java.security.PrivateKey;
import java.util.List;
/**
@ -159,4 +161,25 @@ public interface DataStatsService {
* @author sun
*/
GovrnRatioResultDTO governRatio(GovrnRatioFormDTO formDTO);
/**
* @Description 查询网格员统计数据列表
* @return
* @author wxz
* @date 2021.07.05 13:13
*/
List<GridMemberDataAnalysisResultDTO> listGridMemberDataStats(List<String> gridIds,
String searchedStaffName,
String month,
String sort,
Integer pageNo,
Integer pageSize);
/**
* @Description 单个网格员议题项目统计数据
* @return
* @author wxz
* @date 2021.07.05 16:05
*/
GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(String staffId);
}

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

@ -1,20 +1,25 @@
package com.epmet.dataaggre.service.datastats.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
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.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.DimGridEntity;
import com.epmet.dataaggre.entity.datastats.FactGridMemberStatisticsDailyEntity;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -43,6 +48,9 @@ public class DataStatsServiceImpl implements DataStatsService {
@Autowired
private EvaluationIndexService indexService;
@Autowired
private FactGridMemberStatisticsDailyDao factGridMemberStatisticsDailyDao;
/**
* @Param formDTO
@ -1302,4 +1310,20 @@ public class DataStatsServiceImpl implements DataStatsService {
return resultDTO;
}
@Override
public List<GridMemberDataAnalysisResultDTO> listGridMemberDataStats(List<String> gridIds,
String searchedStaffName,
String month,
String sort,
Integer pageNo,
Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
return factGridMemberStatisticsDailyDao.listGridMemberDataStats(gridIds, searchedStaffName, month, sort);
}
@Override
public GridMemberDataAnalysisResultDTO getGridMemberIssueProjectStats(String staffId) {
return factGridMemberStatisticsDailyDao.getGridMemberIssueProjectStats( staffId);
}
}

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

@ -3,10 +3,7 @@ package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDateListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolRecordListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import java.util.List;
@ -64,4 +61,16 @@ public interface EpmetUserService {
*/
List<GridStaffResultDTO> staffGridRole(List<GridStaffResultDTO> forms, String staffName);
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
List<StaffListResultDTO> staffPatrolList(StaffListFormDTO formDTO);
/**
* @Description 个人中心-网格员巡查记录
* @author sun
*/
List<PersonalPatrolListResultDTO> personalPatrolList(String staffId);
}

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

@ -25,6 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -247,5 +249,85 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return result;
}
/**
* @Param formDTO
* @Description 更多-巡查记录-人员巡查记录列表
* @author sun
*/
@Override
public List<StaffListResultDTO> staffPatrolList(StaffListFormDTO formDTO) {
List<StaffListResultDTO> resultList = new ArrayList<>();
//1.查询网格信息供后续封装数据使用
List<CustomerGridDTO> list = govOrgService.getGridInfoList(formDTO.getGridIds(), formDTO.getUserId());
if (CollectionUtils.isEmpty(formDTO.getGridIds())) {
formDTO.setGridIds(list.stream().map(CustomerGridDTO::getId).collect(Collectors.toList()));
}
//2.按条件分页查询业务数据
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
//起始查询日期
formDTO.setPatrolStartTime(DateUtils.getBeforeMonthDate(formDTO.getTime(), "yyyyMMdd"));
resultList = staffPatrolRecordDao.selectStaffPatrolList(formDTO);
//3.封装数据并返回
resultList.forEach(re -> list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName())));
//NumberFormat numberFormat = NumberFormat.getInstance();
//numberFormat.setMaximumFractionDigits(NumConstant.ZERO);
resultList.forEach(re -> {
String totalTime = "0分钟";
if (re.getTimeNum() > NumConstant.ZERO) {
int num = re.getTimeNum() / 60;
int hour = num / 60;
int minute = num % 60;
totalTime = (hour < 1 ? "" : hour + "小时") + (minute < 1 ? "" : minute + "分钟");
}
re.setTotalTime(totalTime == "" ? "0分钟" : totalTime);
//re.setTotalTime(re.getTimeNum() < 1 ? BigDecimal.ZERO + "h" : new BigDecimal(numberFormat.format((float) re.getTimeNum() / (float) 3600)) + "h");
//re.setTotalTime(re.getTimeNum() / 60 + "分钟");
list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName()));
});
return resultList;
}
/**
* @Description 个人中心-网格员巡查记录
* @author sun
*/
@Override
public List<PersonalPatrolListResultDTO> personalPatrolList(String staffId) {
LinkedList<PersonalPatrolListResultDTO> resultList = new LinkedList<>();
//1.汇总查询当前工作人员所有巡查记录数据
StaffListResultDTO resultDTO = staffPatrolRecordDao.selectPersonalPatrolList(staffId);
if (null == resultDTO) {
return resultList;
}
//2.封装数据并返回
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.ZERO);
PersonalPatrolListResultDTO personal1 = new PersonalPatrolListResultDTO();
personal1.setKey("总次数");
personal1.setValue(resultDTO.getPatrolTotal().toString());
resultList.add(personal1);
PersonalPatrolListResultDTO personal2 = new PersonalPatrolListResultDTO();
personal2.setKey("总时长");
//personal2.setValue(resultDTO.getTimeNum() / 60 + "分钟");
String totalTime = "0分钟";
if (resultDTO.getTimeNum() > NumConstant.ZERO) {
int num = resultDTO.getTimeNum() / 60;
int hour = num / 60;
int minute = num % 60;
totalTime = (hour < 1 ? "" : hour + "小时") + (minute < 1 ? "" : minute + "分钟");
}
personal2.setValue(totalTime == "" ? "0分钟" : totalTime);
resultList.add(personal2);
PersonalPatrolListResultDTO personal3 = new PersonalPatrolListResultDTO();
personal3.setKey("事件数");
personal3.setValue(resultDTO.getReportProjectCount().toString());
resultList.add(personal3);
return resultList;
}
}

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

@ -59,4 +59,10 @@ public interface GovOrgService {
* @author sun
*/
List<GridStaffResultDTO> selectGridStaffByGridIds(List<String> gridIds, String staffName);
/**
* @Description 查询网格信息或查询当前人员所属组织下所有网格信息
* @author sun
*/
List<CustomerGridDTO> getGridInfoList(List<String> gridIds, String staffId);
}

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

@ -264,4 +264,15 @@ public class GovOrgServiceImpl implements GovOrgService {
return result;
}
/**
* @Description 查询网格信息或查询当前人员所属组织下所有网格信息
* @author sun
*/
@Override
public List<CustomerGridDTO> getGridInfoList(List<String> gridIds, String staffId) {
//1.有网格列表的查询网格基本信息,没有的查询工作人员所属组织级下级所有的网格信息
List<CustomerGridDTO> list = customerGridDao.getGridInfoList(gridIds, staffId);
return list;
}
}

51
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java

@ -0,0 +1,51 @@
package com.epmet.dataaggre.service.impl;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class AggreGridServiceImpl implements AggreGridService {
@Autowired
private GovOrgService govOrgService;
@Autowired
private DataStatsService dataStatsService;
@Override
public List<GridMemberDataAnalysisResultDTO> getGridMemberDataAnalysis(
List<String> gridIds,
String searchedStaffName,
String currStaffId,
String month,
String sort,
Integer pageNo,
Integer pageSize) {
//1.得到网格id列表
Map<String, String> gridIdAndName = new HashMap<>();
List<CustomerGridDTO> grids = govOrgService.getGridInfoList(gridIds, currStaffId);
grids.forEach(g -> {
gridIds.add(g.getId());
gridIdAndName.put(g.getId(), g.getGridName());
});
//2.查询列表,并且填充内容
List<GridMemberDataAnalysisResultDTO> records = dataStatsService.listGridMemberDataStats(gridIds, searchedStaffName, month, sort, pageNo, pageSize);
records.forEach(r -> r.setOrgName(gridIdAndName.get(r.getGridId())));
return records;
}
}

133
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao">
<resultMap type="com.epmet.dataaggre.entity.datastats.FactGridMemberStatisticsDailyEntity" id="factGridMemberStatisticsDailyMap">
<result property="id" column="ID"/>
<result property="dateId" column="DATE_ID"/>
<result property="monthId" column="MONTH_ID"/>
<result property="yearId" column="YEAR_ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="staffId" column="STAFF_ID"/>
<result property="staffName" column="STAFF_NAME"/>
<result property="projectCount" column="PROJECT_COUNT"/>
<result property="issueToProjectCount" column="ISSUE_TO_PROJECT_COUNT"/>
<result property="closedIssueCount" column="CLOSED_ISSUE_COUNT"/>
<result property="projectResponseCount" column="PROJECT_RESPONSE_COUNT"/>
<result property="projectTransferCount" column="PROJECT_TRANSFER_COUNT"/>
<result property="projectClosedCount" column="PROJECT_CLOSED_COUNT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<sql id="allColumns">
member.id,
member.date_id,
member.month_id,
member.year_id,
member.customer_id,
member.agency_id,
member.grid_id,
member.pid,
member.pids,
member.staff_id,
member.staff_name,
member.project_count,
member.issue_to_project_count,
member.closed_issue_count,
member.project_response_count,
member.project_transfer_count,
member.project_closed_count,
member.project_incr,
member.issue_to_project_incr,
member.closed_issue_incr,
member.project_response_incr,
member.project_transfer_incr,
member.project_closed_incr,
member.del_flag,
member.revision,
member.created_by,
member.created_time,
member.updated_by,
member.updated_time
</sql>
<!--查询网格员统计数据-->
<!--查询网格员统计数据-->
<select id="listGridMemberDataStats"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
select member.id,
member.date_id,
member.month_id,
member.year_id,
member.customer_id,
member.agency_id,
member.grid_id,
member.pid,
member.pids,
member.staff_id,
member.staff_name,
sum(member.project_incr) project_count,
sum(member.issue_to_project_incr) issue_to_project_count,
sum(member.closed_issue_incr) closed_issue_count,
sum(member.project_response_incr) project_response_count,
sum(member.project_transfer_incr) project_transfer_count,
sum(member.project_closed_incr) project_closed_count
from fact_grid_member_statistics_daily member
<where>
<if test="gridIds != null and gridIds.size() > 0">
<foreach collection="gridIds" item="gridId" separator="OR" open="(" close=")">
member.GRID_ID = #{gridId}
</foreach>
</if>
<if test="searchedStaffName != null and searchedStaffName != ''">
and member.STAFF_NAME like CONCAT('%',#{searchedStaffName},'%')
</if>
<if test="month != null and month != ''">
and member.MONTH_ID = #{month}
</if>
and del_flag = 0
</where>
group by member.staff_id, member.grid_id
order by ${sort} desc
</select>
<select id="getGridMemberIssueProjectStats"
resultType="com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO">
SELECT member.id,
member.date_id,
member.month_id,
member.year_id,
member.customer_id,
member.agency_id,
member.grid_id,
member.pid,
member.pids,
member.staff_id,
member.staff_name,
sum(member.project_count) project_count,
sum(member.issue_to_project_count) issue_to_project_count,
sum(member.closed_issue_count) closed_issue_count,
sum(member.project_response_count) project_response_count,
sum(member.project_transfer_count) project_transfer_count,
sum(member.project_closed_count) project_closed_count
FROM fact_grid_member_statistics_daily member
inner join (select max(mt.DATE_ID) latest_date
from fact_grid_member_statistics_daily mt
where mt.STAFF_ID = #{staffId} and mt.del_flag=0) latest_record
on (member.DATE_ID = latest_record.latest_date)
WHERE member.STAFF_ID = #{staffId}
and member.DEL_FLAG = 0
</select>
</mapper>

58
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml

@ -51,4 +51,62 @@
-->
</select>
<select id="selectStaffPatrolList" resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO">
SELECT
ssp.grid_id AS gridId,
ssp.staff_id AS staffId,
cs.real_name AS staffName,
cs.gender AS gender,
IFNULL(MAX(ssp.latest_patrol_time), '') AS patrolStartTime,
IFNULL(SUM(ssp.patrol_total), 0) AS patrolTotal,
ssp.latest_patrol_status AS STATUS,
IFNULL(SUM(ssp.report_project_count), 0) AS reportProjectCount,
IFNULL(SUM(ssp.total_time), 0) AS timeNum
FROM
stats_staff_patrol_record_daily ssp
LEFT JOIN customer_staff cs ON ssp.staff_id = cs.user_id
WHERE
ssp.del_flag = '0'
AND ssp.date_id >= #{patrolStartTime}
<if test="staffName!= null and staffName != ''">
AND cs.real_name = #{staffName}
</if>
<if test="gridIds != null and gridIds.size() > 0">
<foreach collection="gridIds" item="gridId" open="AND (" separator=" OR " close=" )" >
ssp.grid_id = #{gridId}
</foreach>
</if>
GROUP BY ssp.grid_id, ssp.staff_id
<if test="sortCode!= null and sortCode != ''">
<choose>
<when test="sortCode == 'patrolTotal' ">
ORDER BY SUM(ssp.patrol_total) DESC
</when>
<when test="sortCode == 'latestPatrolledTime' ">
ORDER BY MAX(ssp.latest_patrol_time) DESC
</when>
<when test="sortCode == 'reportProjectCount' ">
ORDER BY SUM(ssp.report_project_count) DESC
</when>
<otherwise>
ORDER BY SUM(ssp.total_time) DESC
</otherwise>
</choose>
</if>
LIMIT
#{pageNo}, #{pageSize}
</select>
<select id="selectPersonalPatrolList" resultType="com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO">
SELECT
IFNULL(SUM(ssp.patrol_total), 0) AS patrolTotal,
IFNULL(SUM(ssp.total_time), 0) AS timeNum,
IFNULL(SUM(ssp.report_project_count), 0) AS reportProjectCount
FROM
stats_staff_patrol_record_daily ssp
WHERE
ssp.del_flag = '0'
AND ssp.staff_id = #{staffId}
</select>
</mapper>

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

@ -99,4 +99,52 @@
)
</select>
<select id="getGridInfoList" resultType="com.epmet.dataaggre.dto.govorg.CustomerGridDTO">
SELECT
cg.id AS 'id',
IF (
ca.pid = '0',
IF (
ca.organization_name = '',
cg.grid_name,
CONCAT(ca.organization_name,'-',cg.grid_name)
),
CONCAT(
(select organization_name from customer_agency where id = ca.pid),
'-',
IF (
ca.organization_name = '',
cg.grid_name,
CONCAT(ca.organization_name,'-',cg.grid_name)
)
)
)AS 'gridName'
FROM
customer_grid cg
INNER JOIN customer_agency ca ON cg.pid = ca.id
WHERE
cg.del_flag = '0'
AND ca.del_flag = '0'
<choose>
<when test="gridIds != null and gridIds.size() > 0">
<foreach collection="gridIds" item="id" open="AND (" separator=" OR " close=" )" >
cg.id = #{id}
</foreach>
</when>
<otherwise>
AND cg.pids
LIKE CONCAT(
'%',
(
select agency_id
from customer_staff_agency
where del_flag = '0'
AND user_id = #{staffId}
),
'%'
)
</otherwise>
</choose>
</select>
</mapper>

41
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/BizDataFormDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.extract.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* desc: 从业务数据抽取到统计库 dto
*
* @Author zxc
* @DateTime 2020/9/16 6:01 下午
*/
@Data
public class BizDataFormDTO implements Serializable {
private static final long serialVersionUID = 2860395703825549825L;
public interface ExtractForm extends CustomerClientShowGroup {
}
@NotBlank(message = "客户ID不能为空", groups = ExtractForm.class)
private String customerId;
@NotBlank(message = "dateId不能为空", groups = ExtractForm.class)
private String dateId;
private String userId;
private String gridId;
/**
* 开始时间
*/
private String startDate;
/**
* 结束时间
*/
private String endDate;
}

25
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/StaffPatrolStatsFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.extract.form;
import lombok.Data;
import java.io.Serializable;
/**
* desc: 工作人员巡查统计参数
*
* @author LiuJanJun
* @date 2021/6/29 10:19 上午
*/
@Data
public class StaffPatrolStatsFormDTO implements Serializable {
private static final long serialVersionUID = -3639860733213306581L;
private String customerId;
private String dateId;
private String staffId;
private String gridId;
/**
* 角色key
*/
private String roleKey;
}

1
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/result/OrgStatisticsResultDTO.java

@ -15,6 +15,7 @@ public class OrgStatisticsResultDTO implements Serializable {
private static final long serialVersionUID = 9221060553279124719L;
private String customerId;
private String agencyId;
private String staffId;
private String level;
private String orgId;
private Integer count;

62
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/org/CustomerStaffGridDTO.java

@ -0,0 +1,62 @@
/**
* 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.dto.org;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 网格人员关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-20
*/
@Data
public class CustomerStaffGridDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格ID
*/
private String gridId;
/**
* 上级组织ID
*/
private String pid;
/**
* 所有上级组织ID
*/
private String pids;
/**
* 用户id, user.id
*/
private String staffId;
}

181
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsDailyDTO.java

@ -0,0 +1,181 @@
/**
* 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.dto.stats;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 网格员数据统计_日统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Data
public class FactGridMemberStatisticsDailyDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* yyyyMMdd
*/
private String dateId;
/**
* 月份ID
*/
private String monthId;
/**
* 年度ID
*/
private String yearId;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格I
*/
private String gridId;
/**
* 上级ID项目来源Agency的上级组织Id
*/
private String pid;
/**
* 所有agencyId的上级组织ID包含agencyId
*/
private String pids;
/**
* 工作人员ID
*/
private String staffId;
/**
* 工作人员姓名
*/
private String staffName;
/**
* 项目立项数
*/
private Integer projectCount;
/**
* 议题转项目数
*/
private Integer issueToProjectCount;
/**
* 议题关闭数
*/
private Integer closedIssueCount;
/**
* 项目响应数
*/
private Integer projectResponseCount;
/**
* 项目吹哨数
*/
private Integer projectTransferCount;
/**
* 项目结案数
*/
private Integer projectClosedCount;
/**
* 项目立项数日增量
*/
private Integer projectCountIncr;
/**
* 议题转项目数日增量
*/
private Integer issueToProjectIncr;
/**
* 议题关闭数日增量
*/
private Integer closedIssueIncr;
/**
* 项目响应数日增量
*/
private Integer projectResponseIncr;
/**
* 项目吹哨数日增量
*/
private Integer projectTransferIncr;
/**
* 项目结案数日增量
*/
private Integer projectClosedIncr;
/**
* 删除状态0:正常1:删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

146
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsMonthlyDTO.java

@ -0,0 +1,146 @@
/**
* 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.dto.stats;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 网格员数据统计_月统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Data
public class FactGridMemberStatisticsMonthlyDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 月份ID
*/
private String monthId;
/**
* 年度ID
*/
private String yearId;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格ID
*/
private String gridId;
/**
* 上级ID项目来源Agency的上级组织Id
*/
private String pid;
/**
* 所有agencyId的上级组织ID包含agencyId
*/
private String pids;
/**
* 工作人员ID
*/
private String staffId;
/**
* 工作人员姓名
*/
private String staffName;
/**
* 项目立项数
*/
private Integer projectCount;
/**
* 议题转项目数
*/
private Integer issueToProjectCount;
/**
* 议题关闭数
*/
private Integer closedIssueCount;
/**
* 项目响应数
*/
private Integer projectResponseCount;
/**
* 项目吹哨数
*/
private Integer projectTransferCount;
/**
* 项目结案数
*/
private Integer projectClosedCount;
/**
* 删除状态0:正常1:删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

61
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/CustomerGridStaffDTO.java

@ -0,0 +1,61 @@
/**
* 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.dto.user.result;
import lombok.Data;
import java.io.Serializable;
/**
* 政府工作人员表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-18
*/
@Data
public class CustomerGridStaffDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 网格id
*/
private String gridId;
/**
* 网格所属组织id
*/
private String agencyId;
/**
* 网格所属的所有组织id
*/
private String gridPids;
/**
* 关联User表的主键Id
*/
private String userId;
}

137
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/CustomerStaffDTO.java

@ -0,0 +1,137 @@
/**
* 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.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 政府工作人员表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-04-18
*/
@Data
public class CustomerStaffDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private String id;
/**
* 关联User表的主键Id
*/
private String userId;
/**
* 真实姓名
*/
private String realName;
/**
* 性别0.未知1男2.
*/
private Integer gender;
/**
* 邮箱
*/
private String email;
/**
* 手机号-唯一键
*/
private String mobile;
/**
* 地址
*/
private String address;
/**
* 删除标识
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* fulltime专职parttime兼职
*/
private String workType;
/**
* 头像
*/
private String headPhoto;
/**
* inactive未激活active已激活
*/
private String activeFlag;
/**
* 激活时间
*/
private Date activeTime;
/**
* 未禁用enable,已禁用diabled
*/
private String enableFlag;
/**
* 客户id
*/
private String customerId;
/**
* 角色名称
*/
private String roleName;
}

122
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StaffPatrolRecordResult.java

@ -0,0 +1,122 @@
/**
* 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.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 工作人员巡查主记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-07
*/
@Data
public class StaffPatrolRecordResult implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 网格id
*/
private String grid;
/**
* 网格所有上级id
*/
private String gridPids;
/**
* 工作人员用户id
*/
private String staffId;
/**
* 工作人员所属组织id=网格所属的组织id
*/
private String agencyId;
/**
* 巡查开始时间
*/
private Date patrolStartTime;
/**
* 巡查结束时间,前端传入
*/
private Date patrolEndTime;
/**
* 实际结束时间=操作结束巡查的时间
*/
private Date actrualEndTime;
/**
* 本次巡查总耗时单位秒结束巡查时写入
*/
private Integer totalTime;
/**
* 正在巡查中patrolling结束end
*/
private String status;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

35
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StaffRoleInfoDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.user.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/7/5 9:49
*/
@Data
public class StaffRoleInfoDTO implements Serializable {
private static final long serialVersionUID = 5005209786187370928L;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 用户ID
*/
private String staffId;
/**
* 用户名
*/
private String staffName;
}

147
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java

@ -0,0 +1,147 @@
/**
* 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.dto.user.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* []工作人员巡查记录统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-29
*/
@Data
public class StatsStaffPatrolRecordDailyDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 统计日期 关联日期dim表
*/
private String dateId;
/**
* 周ID
*/
private String weekId;
/**
* 月ID
*/
private String monthId;
/**
* 季ID
*/
private String quarterId;
/**
* 年ID
*/
private String yearId;
/**
* 网格id
*/
private String gridId;
/**
* 工作人员所属组织id=网格所属的组织id
*/
private String agencyId;
/**
* 网格所有上级id
*/
private String gridPids;
/**
* 工作人员用户id
*/
private String staffId;
/**
* 巡查次数
*/
private Integer patrolTotal;
/**
* 巡查时长 单位
*/
private Integer totalTime;
/**
* 巡查期间直接立项项目数
*/
private Integer reportProjectCount;
/**
* 最新的巡查开始时间
*/
private Date latestPatrolTime;
/**
* 最新的巡查状态 正在巡查中patrolling结束end
*/
private String latestPatrolStatus;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

14
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/DataStatisticalOpenFeignClient.java

@ -3,9 +3,7 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.extract.form.ExtractIndexFormDTO;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.dto.extract.form.ExtractScreenFormDTO;
import com.epmet.dto.extract.form.*;
import com.epmet.dto.group.form.GroupStatsFormDTO;
import com.epmet.dto.screen.form.InitCustomerIndexForm;
import com.epmet.dto.stats.form.CustomerIdAndDateIdFormDTO;
@ -256,4 +254,14 @@ public interface DataStatisticalOpenFeignClient {
@PostMapping("/data/stats/vanguard/gridvanguardstats")
Result gridVanguardStats(@RequestBody StatsFormDTO formDTO);
/**
* desc: 业务库按天统计 统一入库
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author LiuJanJun
* @date 2021/7/2 3:04 下午
*/
@PostMapping("/data/stats/bizData/stats/daily")
Result exeStatsDaily(@RequestBody BizDataFormDTO formDTO);
}

9
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/feign/impl/DataStatisticalOpenFeignClientFallBack.java

@ -4,9 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.extract.form.ExtractIndexFormDTO;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.dto.extract.form.ExtractScreenFormDTO;
import com.epmet.dto.extract.form.*;
import com.epmet.dto.group.form.GroupStatsFormDTO;
import com.epmet.dto.screen.form.InitCustomerIndexForm;
import com.epmet.dto.stats.form.CustomerIdAndDateIdFormDTO;
@ -256,4 +254,9 @@ public class DataStatisticalOpenFeignClientFallBack implements DataStatisticalOp
public Result gridVanguardStats(StatsFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "gridVanguardStats", formDTO);
}
@Override
public Result exeStatsDaily(BizDataFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL_SERVER, "exeStatsDaily", formDTO);
}
}

4
epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml

@ -9,10 +9,10 @@ services:
volumes:
- "/opt/epmet-cloud-logs/prod:/logs"
environment:
RUN_INSTRUCT: "java -Xms256m -Xmx1024m -jar ./data-stats.jar"
RUN_INSTRUCT: "java -Xms256m -Xmx1524m -jar ./data-stats.jar"
restart: "unless-stopped"
deploy:
resources:
limits:
cpus: '0.1'
memory: 1100M
memory: 1600M

46
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/BizDataStatsController.java

@ -0,0 +1,46 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.extract.form.BizDataFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description 用户统计
* @ClassName StatsUserController
* @Auth wangc
* @Date 2020-06-23 15:18
*/
@RestController
@RequestMapping("bizData/stats")
public class BizDataStatsController {
@Autowired
private BizDataStatsService bizDataStatsService;
/**
* @return com.epmet.commons.tools.utils.Result
* @param formDTO
* @description 业务库统计数据 统一入库
* @Date 2021/3/26 13:27
**/
@RequestMapping("daily")
public Result execute(@RequestBody BizDataFormDTO formDTO) {
bizDataStatsService.exeDailyAll(formDTO);
return new Result();
} /**
* @return com.epmet.commons.tools.utils.Result
* @param formDTO
* @description 工作端数据一期用户分析参与用户注册用户分析
* @Date 2021/3/26 13:27
**/
@RequestMapping("patrol")
public Result execute(@RequestBody StaffPatrolStatsFormDTO formDTO) {
bizDataStatsService.executeStaffPatrolStats(formDTO);
return new Result();
}
}

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

@ -121,6 +121,8 @@ public class DemoController {
private FactGridGovernDailyService factGridGovernDailyService;
@Autowired
private FactAgencyGovernDailyService factAgencyGovernDailyService;
@Autowired
private FactGridMemberStatisticsDailyService factGridMemberStatisticsDailyService;
@GetMapping("testAlarm")
public void testAlarm() {
@ -936,4 +938,10 @@ public class DemoController {
return new Result();
}
@PostMapping("extractFactGridMemberDaily")
public Result extractFactGridMemberDaily(@RequestBody ExtractFactGridGovernDailyFromDTO fromDTO){
factGridMemberStatisticsDailyService.extractGridMemberStatisticsDaily(fromDTO.getCustomerId(), fromDTO.getDateId());
return new Result();
}
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java

@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.evaluationindex.extract.todata.*;
import com.epmet.service.stats.DimCustomerService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -35,6 +36,8 @@ public class FactOriginExtractController {
private ProjectExtractService projectExtractService;
@Autowired
private GroupExtractService groupExtractService;
@Autowired
private DimCustomerService dimCustomerService;
/**
* desc:抽取业务数据到统计库
@ -92,7 +95,12 @@ public class FactOriginExtractController {
@PostMapping("project")
public Result projectData(@RequestBody ExtractOriginFormDTO extractOriginFormDTO) {
projectExtractService.saveOriginProjectDaily(extractOriginFormDTO);
List<String> customerIds = dimCustomerService.selectCustomerIdPage(1, 100);
customerIds.forEach(customerId -> {
ExtractOriginFormDTO dto = new ExtractOriginFormDTO();
dto.setCustomerId(customerId);
projectExtractService.saveOriginProjectDaily(dto);
});
return new Result();
}

34
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactGridMemberStatisticsDailyDao.java

@ -0,0 +1,34 @@
/**
* 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.dao.evaluationindex.extract;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 网格员数据统计_日统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Mapper
public interface FactGridMemberStatisticsDailyDao extends BaseDao<FactGridMemberStatisticsDailyEntity> {
int deleteDataByCustomer(@Param("customerId") String customerId, @Param("dateId") String dateId, @Param("deleteSize") Integer deleteSize);
}

33
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactGridMemberStatisticsMonthlyDao.java

@ -0,0 +1,33 @@
/**
* 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.dao.evaluationindex.extract;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsMonthlyEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 网格员数据统计_月统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Mapper
public interface FactGridMemberStatisticsMonthlyDao extends BaseDao<FactGridMemberStatisticsMonthlyEntity> {
}

40
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java

@ -20,6 +20,7 @@ package com.epmet.dao.evaluationindex.extract;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.extract.form.IssueLogDailyFormDTO;
import com.epmet.dto.extract.result.IssueVoteUserCountResultDTO;
import com.epmet.dto.extract.result.OrgStatisticsResultDTO;
import com.epmet.dto.extract.result.PartyActiveResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginIssueLogDailyEntity;
import org.apache.ibatis.annotations.Mapper;
@ -130,4 +131,43 @@ public interface FactOriginIssueLogDailyDao extends BaseDao<FactOriginIssueLogDa
@Param("communityId") String communityId,
@Param("agencyPath") String agencyPath,
@Param("isParty") String isParty);
/**
* 议题转项目总量
* @author zhaoqifeng
* @date 2021/7/5 15:55
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getIssueToProjectCount(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 议题转项目增量
* @author zhaoqifeng
* @date 2021/7/5 15:55
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getIssueToProjectIncr(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 关闭议题数总量
* @author zhaoqifeng
* @date 2021/7/5 16:37
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getClosedIssueCount(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 关闭议题数增量
* @author zhaoqifeng
* @date 2021/7/5 16:38
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getClosedIssueIncr(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

55
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java

@ -326,4 +326,59 @@ public interface FactOriginProjectLogDailyDao extends BaseDao<FactOriginProjectL
* @Date 2021/5/27 12:58
**/
FactOriginProjectLogDailyDTO selectClosedLog(String projectId);
/**
* 项目响应数
* @author zhaoqifeng
* @date 2021/7/5 17:00
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectResponseCount(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 项目响应增量
* @author zhaoqifeng
* @date 2021/7/5 17:01
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectResponseIncr(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 项目吹哨数
* @author zhaoqifeng
* @date 2021/7/5 17:01
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectTransferCount(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 项目吹哨数增量
* @author zhaoqifeng
* @date 2021/7/5 17:01
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectTransferIncr(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 项目结案数
* @author zhaoqifeng
* @date 2021/7/5 17:01
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectClosedCount(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 项目结案数增量
* @author zhaoqifeng
* @date 2021/7/5 17:01
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getProjectClosedIncr(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

20
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java

@ -506,4 +506,24 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
@Param("projectStatus")String projectStatus,
@Param("origin") String origin,
@Param("isResolved")String isResolved);
/**
* 获取项目立项数
* @author zhaoqifeng
* @date 2021/7/5 14:49
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getMemberProjectCountIncr(@Param("customerId")String customerId, @Param("dateId") String dateId);
/**
* 获取项目立项数
* @author zhaoqifeng
* @date 2021/7/5 14:49
* @param customerId
* @param dateId
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
List<OrgStatisticsResultDTO> getMemberProjectCount(@Param("customerId")String customerId, @Param("dateId") String dateId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridTotalCountResultDTO;
import com.epmet.dto.group.result.GridIdListByCustomerResultDTO;
import com.epmet.dto.org.CustomerStaffGridDTO;
import com.epmet.dto.org.GridInfoDTO;
import com.epmet.entity.org.CustomerGridEntity;
import org.apache.ibatis.annotations.Mapper;
@ -77,4 +78,13 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
* @Date 2020/9/16 14:03
**/
List<GridInfoDTO> selectListGridInfo(String customerId);
/**
* 查询工作人员网格关系
* @author zhaoqifeng
* @date 2021/7/5 10:25
* @param customerId
* @return java.util.List<com.epmet.dto.org.CustomerStaffGridDTO>
*/
List<CustomerStaffGridDTO> getCustomerStaffGridList(@Param("customerId") String customerId);
}

38
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerStaffGridDao.java

@ -0,0 +1,38 @@
/**
* 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.dao.org;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.CustomerGridStaffDTO;
import com.epmet.entity.org.CustomerStaffGridEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 客户网格人员关系表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-03-16
*/
@Mapper
public interface CustomerStaffGridDao extends BaseDao<CustomerStaffGridEntity> {
List<CustomerGridStaffDTO> selectGridStaffList(StaffPatrolStatsFormDTO formDTO);
}

63
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java

@ -18,16 +18,12 @@
package com.epmet.dao.project;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerProjectParameterDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.ProjectSatisfactionStatisticsDTO;
import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectCategoryDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.dto.project.ProjectPointDTO;
import com.epmet.dto.project.result.ProjectExceedParamsResultDTO;
import com.epmet.dto.screen.ScreenProjectProcessAttachmentDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.project.ProjectEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -52,110 +48,119 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
/**
* 已结案项目统计
* @author zhaoqifeng
* @date 2020/6/18 17:01
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectAgencyDTO>
* @author zhaoqifeng
* @date 2020/6/18 17:01
*/
List<ProjectAgencyDTO> selectAgencyClosedProjectTotal(@Param("customerId") String customerId, @Param("date") String date);
/**
* 已结案项目增量
* @author zhaoqifeng
* @date 2020/6/18 17:01
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectAgencyDTO>
* @author zhaoqifeng
* @date 2020/6/18 17:01
*/
List<ProjectAgencyDTO> selectAgencyClosedProjectInc(@Param("customerId") String customerId, @Param("date") String date);
/**
* 已结案项目统计
* @author zhaoqifeng
* @date 2020/6/18 17:01
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectGridDTO>
* @author zhaoqifeng
* @date 2020/6/18 17:01
*/
List<ProjectGridDTO> selectGridClosedProjectTotal(@Param("customerId") String customerId, @Param("date") String date);
/**
* 已结案项目增量
* @author zhaoqifeng
* @date 2020/6/18 17:01
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectGridDTO>
* @author zhaoqifeng
* @date 2020/6/18 17:01
*/
List<ProjectGridDTO> selectGridClosedProjectInc(@Param("customerId") String customerId, @Param("date") String date);
/**
* 获取项目信息
* @author zhaoqifeng
* @date 2020/9/15 16:13
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectInfoDTO>
* @author zhaoqifeng
* @date 2020/9/15 16:13
*/
List<ProjectDTO> selectProjectInfo(@Param("customerId") String customerId, @Param("date") String date);
/**
* 获取用户可滞留天数
* @author zhaoqifeng
* @date 2020/9/28 10:16
*
* @param customerId
* @return java.lang.String
* @author zhaoqifeng
* @date 2020/9/28 10:16
*/
String selectParameterValueByKey(@Param("customerId") String customerId);
/**
* @Description 查找客户项目超期参数
*
* @param customerId
* @return java.util.List<com.epmet.dto.project.result.ProjectExceedParamsResultDTO>
* @Description 查找客户项目超期参数
* @author wangc
* @date 2021.03.05 17:52
*/
*/
List<ProjectExceedParamsResultDTO> selectProjectExceedParams(@Param("customerId") String customerId);
/**
* @Description 批量查询项目信息
* @param ids
* @return java.util.List<com.epmet.entity.project.ProjectEntity>
* @Description 批量查询项目信息
* @author wangc
* @date 2021.03.08 10:32
*/
List<ProjectEntity> batchSelectProjectInfo(@Param("ids")List<String> ids);
*/
List<ProjectEntity> batchSelectProjectInfo(@Param("ids") List<String> ids);
/**
* @Description 查询项目的分类信息
* @param list
* @return java.util.List<com.epmet.dto.project.ProjectCategoryDTO>
* @Description 查询项目的分类信息
* @author wangc
* @date 2021.03.08 23:44
*/
List<ProjectCategoryDTO> selectProjectCategory(@Param("list")List<String> list);
*/
List<ProjectCategoryDTO> selectProjectCategory(@Param("list") List<String> list);
List<com.epmet.dto.ProjectCategoryDTO> getProjectCategoryData(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* 获取项目满意度
* @author zhaoqifeng
* @date 2021/5/21 10:06
*
* @param customerId
* @return java.util.List<com.epmet.dto.ProjectSatisfactionStatisticsDTO>
* @author zhaoqifeng
* @date 2021/5/21 10:06
*/
List<ProjectPointDTO> selectProjectSatisfaction(@Param("customerId") String customerId);
/**
* 根据key查找value
* @author zhaoqifeng
* @date 2021/5/21 10:58
*
* @param customerId
* @param parameterKey
* @return java.lang.String
* @author zhaoqifeng
* @date 2021/5/21 10:58
*/
String selectValueByKey(@Param("customerId") String customerId, @Param("parameterKey") String parameterKey);
List<ProjectDTO> selectProjectListByDateId(@Param("customerId") String customerId, @Param("dateId") String dateId, @Param("projectOrigin") String projectOrigin);
}

41
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java

@ -0,0 +1,41 @@
/**
* 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.dao.user;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity;
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-06-29
*/
@Mapper
public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrolRecordDailyEntity> {
Integer insertBatch(@Param("list") List<StatsStaffPatrolRecordDailyDTO> insertList);
int delete(StaffPatrolStatsFormDTO formDTO);
}

21
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java

@ -1,9 +1,14 @@
package com.epmet.dao.user;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -159,5 +164,21 @@ public interface UserDao {
* @date 2021/6/8 5:21 下午
*/
List<ScreenProjectDataDTO> selectStaffInfo(@Param("list") List<String> staffUserIdList);
List<StaffRoleInfoDTO> getStaffByRoleKey(@Param("customerId") String customerId, @Param("roleKey") String roleKey);
/**
* desc: 根据角色key条件获取所有的人
*
* @param formDTO
* @return java.util.List<com.epmet.dto.user.result.StatsStaffPatrolRecordDalilyDTO>
* @author LiuJanJun
* @date 2021/6/29 2:58 下午
*/
List<CustomerStaffDTO> selectUserByRoleKey(StaffPatrolStatsFormDTO formDTO);
List<StatsStaffPatrolRecordDailyDTO> selectLastStaffPatrolList(StaffPatrolStatsFormDTO formDTO);
List<StaffPatrolRecordResult> selectStaffPatrolListByDateId(@Param("customerId") String customerId, @Param("dateId") String dateId);
}

151
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsDailyEntity.java

@ -0,0 +1,151 @@
/**
* 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.entity.evaluationindex.extract;
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-07-02
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("fact_grid_member_statistics_daily")
public class FactGridMemberStatisticsDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* yyyyMMdd
*/
private String dateId;
/**
* 月份ID
*/
private String monthId;
/**
* 年度ID
*/
private String yearId;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格I
*/
private String gridId;
/**
* 上级ID项目来源Agency的上级组织Id
*/
private String pid;
/**
* 所有agencyId的上级组织ID包含agencyId
*/
private String pids;
/**
* 工作人员ID
*/
private String staffId;
/**
* 工作人员姓名
*/
private String staffName;
/**
* 项目立项数
*/
private Integer projectCount;
/**
* 议题转项目数
*/
private Integer issueToProjectCount;
/**
* 议题关闭数
*/
private Integer closedIssueCount;
/**
* 项目响应数
*/
private Integer projectResponseCount;
/**
* 项目吹哨数
*/
private Integer projectTransferCount;
/**
* 项目结案数
*/
private Integer projectClosedCount;
/**
* 项目立项数日增量
*/
private Integer projectIncr;
/**
* 议题转项目数日增量
*/
private Integer issueToProjectIncr;
/**
* 议题关闭数日增量
*/
private Integer closedIssueIncr;
/**
* 项目响应数日增量
*/
private Integer projectResponseIncr;
/**
* 项目吹哨数日增量
*/
private Integer projectTransferIncr;
/**
* 项目结案数日增量
*/
private Integer projectClosedIncr;
}

116
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsMonthlyEntity.java

@ -0,0 +1,116 @@
/**
* 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.entity.evaluationindex.extract;
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-07-02
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("fact_grid_member_statistics_monthly")
public class FactGridMemberStatisticsMonthlyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 月份ID
*/
private String monthId;
/**
* 年度ID
*/
private String yearId;
/**
* 客户ID
*/
private String customerId;
/**
* 组织ID
*/
private String agencyId;
/**
* 网格ID
*/
private String gridId;
/**
* 上级ID项目来源Agency的上级组织Id
*/
private String pid;
/**
* 所有agencyId的上级组织ID包含agencyId
*/
private String pids;
/**
* 工作人员ID
*/
private String staffId;
/**
* 工作人员姓名
*/
private String staffName;
/**
* 项目立项数
*/
private Integer projectCount;
/**
* 议题转项目数
*/
private Integer issueToProjectCount;
/**
* 议题关闭数
*/
private Integer closedIssueCount;
/**
* 项目响应数
*/
private Integer projectResponseCount;
/**
* 项目吹哨数
*/
private Integer projectTransferCount;
/**
* 项目结案数
*/
private Integer projectClosedCount;
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java

@ -148,4 +148,9 @@ public class FactOriginProjectMainDailyEntity extends BaseEpmetEntity {
*/
private String finishOrgIds;
/**
* 项目创建人议题转项目或立项人
*/
private String projectCreator;
}

40
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerStaffGridEntity.java

@ -0,0 +1,40 @@
/**
* 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.entity.org;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 客户网格表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-03-16
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("customer_staff_grid")
public class CustomerStaffGridEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
private String customerId;
private String gridId;
private String userId;
}

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

@ -0,0 +1,116 @@
/**
* 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.entity.user;
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-06-29
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("stats_staff_patrol_record_daily")
public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
/**
* 统计日期 关联日期dim表
*/
private String dateId;
/**
* 周ID
*/
private String weekId;
/**
* 月ID
*/
private String monthId;
/**
* 季ID
*/
private String quarterId;
/**
* 年ID
*/
private String yearId;
/**
* 网格id
*/
private String gridId;
/**
* 工作人员所属组织id=网格所属的组织id
*/
private String agencyId;
/**
* 网格所有上级id
*/
private String gridPids;
/**
* 工作人员用户id
*/
private String staffId;
/**
* 巡查次数
*/
private Integer patrolTotal;
/**
* 巡查时长 单位
*/
private Integer totalTime;
/**
* 巡查期间直接立项项目数
*/
private Integer reportProjectCount;
/**
* 最新的巡查开始时间
*/
private Date latestPatrolTime;
/**
* 最新的巡查状态 正在巡查中patrolling结束end
*/
private String latestPatrolStatus;
}

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

@ -2,6 +2,7 @@ package com.epmet.mq;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.SpringContextUtils;
@ -9,6 +10,8 @@ import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.evaluationindex.extract.todata.FactOriginExtractService;
import com.epmet.service.evaluationindex.extract.toscreen.ScreenExtractService;
import com.epmet.util.DimIdGenerator;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
@ -38,13 +41,25 @@ import java.util.stream.Collectors;
public class ProjectChangedCustomListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
/**
* 控制通知类型消息的消费频率
*/
private static final Cache<String, String> customerIdCache = CacheBuilder.newBuilder().maximumSize(NumConstant.ONE_HUNDRED)
.expireAfterWrite(NumConstant.THIRTY,TimeUnit.SECONDS).build();
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
long start = System.currentTimeMillis();
try {
List<String> customerIds = msgs.stream().map(messageExt -> new String(messageExt.getBody())).distinct().collect(Collectors.toList());
customerIds.forEach(this::consumeMessage);
for (String customerId : customerIds) {
//获取缓存 如果不存在缓存中 则执行消费 并放入缓存中
String ifPresent = customerIdCache.getIfPresent(customerId);
if (StringUtils.isBlank(ifPresent)){
consumeMessage(customerId);
customerIdCache.put(customerId,customerId);
}
}
} catch (Exception e) {
//失败不重发
logger.error("consumeMessage fail,msg:{}",e.getMessage());

40
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/BizDataStatsService.java

@ -0,0 +1,40 @@
/**
* 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.service.evaluationindex.extract.biz;
import com.epmet.dto.extract.form.BizDataFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
/**
* []工作人员巡查记录统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-06-29
*/
public interface BizDataStatsService {
/**
* desc:抽取所有业务数据到统计库
*
* @param dataFormDTO
*/
void exeDailyAll(BizDataFormDTO dataFormDTO);
void executeStaffPatrolStats(StaffPatrolStatsFormDTO formDTO);
}

300
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java

@ -0,0 +1,300 @@
package com.epmet.service.evaluationindex.extract.biz.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;
import com.epmet.constant.ProjectConstant;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.extract.form.BizDataFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.CustomerGridStaffDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService;
import com.epmet.service.org.CustomerStaffService;
import com.epmet.service.project.ProjectService;
import com.epmet.service.stats.DimCustomerService;
import com.epmet.service.user.StatsStaffPatrolService;
import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* desc:业务库里的统计
*
* @author: LiuJanJun
* @date: 2021/6/29 3:08 下午
* @version: 1.0
*/
@Slf4j
@Service
public class BizDataStatsServiceImpl implements BizDataStatsService {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("bizDataStats-pool-%d").build();
ExecutorService threadPool = new ThreadPoolExecutor(3, 6,
10L, TimeUnit.MINUTES,
new LinkedBlockingQueue<>(500), namedThreadFactory, new ThreadPoolExecutor.CallerRunsPolicy());
@Autowired
private CustomerStaffService customerStaffService;
@Autowired
private UserService userService;
@Autowired
private ProjectService projectService;
@Autowired
private StatsStaffPatrolService statsStaffPatrolService;
@Autowired
private DimCustomerService dimCustomerService;
@Override
public void exeDailyAll(BizDataFormDTO dataFormDTO) {
String customerId = dataFormDTO.getCustomerId();
List<String> customerIds = new ArrayList<>();
if (StringUtils.isNotBlank(customerId)) {
//指定某个客户
customerIds.add(customerId);
} else {
//查询全部客户
int pageNo = NumConstant.ONE;
int pageSize = NumConstant.ONE_HUNDRED;
customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize);
if (org.springframework.util.CollectionUtils.isEmpty(customerIds)) {
log.error("exeDailyAll 获取客户Id为空");
return;
}
}
customerIds.forEach(cId -> {
dataFormDTO.setCustomerId(cId);
log.info("exeDailyAll param:{}", JSON.toJSONString(dataFormDTO));
submitJob(dataFormDTO);
});
}
@Override
public void executeStaffPatrolStats(StaffPatrolStatsFormDTO formDTO) {
//校正参数里的前一天日期的数据
//获取所有网格员
List<CustomerGridStaffDTO> allGridMembers = getAllGridMembers(formDTO);
if (CollectionUtils.isEmpty(allGridMembers)){
log.warn("executeStaffPatrolStats have any gridMembers,param:{}",JSON.toJSONString(formDTO));
return;
}
String yesterdayStr = getYesterdayString(formDTO);
StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class);
yesterdayParam.setDateId(yesterdayStr);
reloadStaffPatrolStatsData(yesterdayParam, allGridMembers);
//初始化参数里日期的数据 如果当前时间在1分钟内 则初始化
String todayDateDimId = DimIdGenerator.getDateDimId(new Date());
if (todayDateDimId.equals(formDTO.getDateId())){
//如果当前时间-1分钟还等于今天 则进行初始化操作 否则执行数据纠正
String dateDimId = DimIdGenerator.getDateDimId(new Date(System.currentTimeMillis() - 1 * 60 * 1000));
if (!dateDimId.equals(todayDateDimId)){
initStaffPatrolTodayData(formDTO, allGridMembers);
}else{
reloadStaffPatrolStatsData(formDTO, allGridMembers);
}
}
}
private void reloadStaffPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
log.info("reloadStaffPatrolStatsData param:{}",JSON.toJSONString(formDTO));
//获取昨日的巡查统计记录
//遍历网格员重新初始化数据
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(formDTO, allGridMembers);
Map<String, StatsStaffPatrolRecordDailyDTO> yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1));
//获取昨日的巡查记录
List<StaffPatrolRecordResult> yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), formDTO.getDateId());
//获取昨日的立项项目数
List<ProjectDTO> yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), formDTO.getDateId(), ProjectConstant.PROJECT_ORIGIN_AGENCY);
//遍历网格员 设置其 巡查次数 巡查时常 上报项目数
yesterdayPatrolList.forEach(patrolRecord -> {
String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId());
StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key);
if (patrolRecordDailyDTO != null) {
long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000;
if (patrolRecordDailyDTO.getTotalTime() == null) {
patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO);
}
patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total);
if (patrolRecordDailyDTO.getPatrolTotal() == null) {
patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO);
}
patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE);
//如果巡查记录时间小于统计里的最新的时间 则更新
if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) {
patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime());
patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus());
}
}
});
//填充项目数
yesterdayProjectList.forEach(projectDTO -> {
yesterdayPatrolList.forEach(patrol -> {
//项目立项时间 在巡查期间时 总数加1
long projectCreateTime = projectDTO.getCreatedTime().getTime();
//创建人为网格员 且时间在巡查期间的 则上报的项目数加1
if (projectDTO.getCreatedBy().equals(patrol.getStaffId()) && projectCreateTime >= patrol.getPatrolStartTime().getTime() && projectCreateTime <= patrol.getPatrolEndTime().getTime()) {
String unqPatrolKey = getUnqPatrolKey(patrol.getGrid(), patrol.getStaffId());
StatsStaffPatrolRecordDailyDTO recordDailyDTO = yesterdayStatsMap.get(unqPatrolKey);
if (recordDailyDTO == null) {
log.error("have project data but have any patrolRecordDaily,gridId:{},staffId:{}", patrol.getGrid(), patrol.getStaffId());
return;
}
recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + 1);
}
});
});
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
}
/**
* desc: 获取key
*
* @param gridId
* @param staffId
* @return java.lang.String
* @author LiuJanJun
* @date 2021/7/2 8:32 上午
*/
private String getUnqPatrolKey(String gridId, String staffId) {
return gridId.concat(staffId);
}
@Nullable
private String getYesterdayString(StaffPatrolStatsFormDTO formDTO) {
Date dateParam = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD);
Date yesterdayDate = DateUtils.addDateDays(dateParam, -1);
return DateUtils.format(yesterdayDate, DateUtils.DATE_PATTERN_YYYYMMDD);
}
private void initStaffPatrolTodayData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
log.info("initStaffPatrolTodayData param:{}",JSON.toJSONString(formDTO));
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(formDTO, allGridMembers);
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
}
@NotNull
private List<StatsStaffPatrolRecordDailyDTO> buildInitPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
List<StatsStaffPatrolRecordDailyDTO> lastStaffPatrolList = userService.selectLastStaffPatrolList(formDTO);
Map<String, StatsStaffPatrolRecordDailyDTO> lastPatrolMap = lastStaffPatrolList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1));
//构建数据 插入
List<StatsStaffPatrolRecordDailyDTO> insertList = new ArrayList<>();
Date date = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD);
DimIdGenerator.DimIdBean dimIdBean = DimIdGenerator.getDimIdBean(date);
allGridMembers.forEach(gridMember -> {
StatsStaffPatrolRecordDailyDTO record = new StatsStaffPatrolRecordDailyDTO();
record.setCustomerId(gridMember.getCustomerId());
record.setGridId(gridMember.getGridId());
record.setAgencyId(gridMember.getAgencyId());
record.setGridPids(gridMember.getGridPids());
record.setStaffId(gridMember.getUserId());
record.setDateId(dimIdBean.getDateId());
record.setWeekId(dimIdBean.getWeekId());
record.setQuarterId(dimIdBean.getQuarterId());
record.setYearId(dimIdBean.getYearId());
record.setMonthId(dimIdBean.getMonthId());
StatsStaffPatrolRecordDailyDTO recordDailyDTO = lastPatrolMap.get(gridMember.getGridId().concat(gridMember.getUserId()));
record.setTotalTime(NumConstant.ZERO);
record.setPatrolTotal(NumConstant.ZERO);
record.setLatestPatrolStatus("end");
record.setReportProjectCount(NumConstant.ZERO);
//最后巡查时间
record.setLatestPatrolTime(null);
if (recordDailyDTO != null) {
record.setLatestPatrolStatus(recordDailyDTO.getLatestPatrolStatus());
record.setLatestPatrolTime(recordDailyDTO.getLatestPatrolTime());
}
insertList.add(record);
});
return insertList;
}
private List<CustomerGridStaffDTO> getAllGridMembers(StaffPatrolStatsFormDTO formDTO) {
//获取所有的网格员
//1.获取所有网格用户
List<CustomerGridStaffDTO> allStaffList = customerStaffService.selectStaffGridList(formDTO);
if (CollectionUtils.isEmpty(allStaffList)) {
log.warn("reloadStaffPatrolStats customerId:{} have any staff,param:{}", formDTO.getCustomerId(), JSON.toJSONString(formDTO));
return allStaffList;
}
//获取所有含有网格员角色的用户
List<CustomerStaffDTO> gridMemberList = userService.selectUserListByRoleKey(formDTO);
if (CollectionUtils.isEmpty(gridMemberList)) {
log.warn("reloadStaffPatrolStats customerId:{} have any gridMembers,param:{}", formDTO.getCustomerId(), JSON.toJSONString(formDTO));
return allStaffList;
}
List<CustomerGridStaffDTO> insertList = new ArrayList<>();
allStaffList.forEach(gridStaff -> gridMemberList.forEach(gridMember -> {
if (gridStaff.getUserId().equals(gridMember.getUserId())) {
insertList.add(gridStaff);
}
}));
log.debug("getAllGridMembers result:{},param:{}", JSON.toJSONString(insertList), JSON.toJSONString(formDTO));
return insertList;
}
private void submitJob(BizDataFormDTO param) {
if (StringUtils.isBlank(param.getDateId()) && (StringUtils.isBlank(param.getStartDate()) && StringUtils.isBlank(param.getEndDate()))) {
//如果没有设置开始日期、结束日期,默认查询今天
param.setDateId(DimIdGenerator.getDateDimId(new Date()));
}
StaffPatrolStatsFormDTO formDTO = ConvertUtils.sourceToTarget(param, StaffPatrolStatsFormDTO.class);
boolean isRange = StringUtils.isBlank(formDTO.getDateId());
List<String> daysBetween = null;
if (isRange) {
daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate());
}
List<String> finalDaysBetween = daysBetween;
threadPool.submit(() -> {
if (!isRange) {
try {
//初始化form里的今天的数据 并纠正昨日的数据
this.executeStaffPatrolStats(formDTO);
} catch (Exception e) {
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(formDTO), e);
}
} else {
try {
for (String dateDimId : finalDaysBetween) {
formDTO.setDateId(dateDimId);
this.executeStaffPatrolStats(formDTO);
}
} catch (Exception e) {
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(param), e);
}
}
});
}
}

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

@ -0,0 +1,41 @@
/**
* 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.service.evaluationindex.extract.todata;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsDailyEntity;
/**
* 网格员数据统计_日统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
public interface FactGridMemberStatisticsDailyService extends BaseService<FactGridMemberStatisticsDailyEntity> {
/**
* 网格员数据统计
*
* @param customerId
* @param dateId
* @return void
* @author zhaoqifeng
* @date 2021/7/5 9:29
*/
void extractGridMemberStatisticsDaily(String customerId, String dateId);
}

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

@ -0,0 +1,31 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.service.evaluationindex.extract.todata;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsMonthlyEntity;
/**
* 网格员数据统计_月统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
public interface FactGridMemberStatisticsMonthlyService extends BaseService<FactGridMemberStatisticsMonthlyEntity> {
}

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

@ -19,9 +19,11 @@ package com.epmet.service.evaluationindex.extract.todata;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.extract.result.IssueVoteUserCountResultDTO;
import com.epmet.dto.extract.result.OrgStatisticsResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginIssueLogDailyEntity;
import java.util.List;
import java.util.Map;
/**
* 议题记录附表
@ -77,4 +79,26 @@ public interface FactOriginIssueLogDailyService extends BaseService<FactOriginIs
* @Date 2021/1/12 15:02
**/
int calPlatJoinUserTotal(String customerId, String gridId, String communityId,String agencyPath, String isParty);
/**
* 工作人员议题转项目数
* @author zhaoqifeng
* @date 2021/7/5 15:52
* @param customerId
* @param dateId
* @param type 0 总量 1 增量
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getIssueToProjectCount(String customerId, String dateId, Integer type);
/**
* 工作人员关闭议题数
* @author zhaoqifeng
* @date 2021/7/5 16:40
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getClosedIssueCount(String customerId, String dateId, Integer type);
}

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

@ -330,4 +330,37 @@ public interface FactOriginProjectLogDailyService extends BaseService<FactOrigin
* @return java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>
*/
Map<String, OrgStatisticsResultDTO> getAgencyGridSelfDaily(String customerId, String dateId);
/**
* 项目响应数
* @author zhaoqifeng
* @date 2021/7/5 16:56
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getProjectResponseCount(String customerId, String dateId, Integer type);
/**
* 项目吹哨数
* @author zhaoqifeng
* @date 2021/7/5 16:57
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getProjectTransferCount(String customerId, String dateId, Integer type);
/**
* 项目结案数
* @author zhaoqifeng
* @date 2021/7/5 16:57
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getProjectClosedCount(String customerId, String dateId, Integer type);
}

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

@ -475,4 +475,16 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
String projectStatus,
String origin,
String isResolved);
/**
* 获取工作人员项目立项数
* @author zhaoqifeng
* @date 2021/7/5 14:48
* @param customerId
* @param dateId
* @param type 0 总量 1 增量
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
*/
Map<String, List<OrgStatisticsResultDTO>> getMemberProjectCount(String customerId, String dateId, Integer type);
}

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

@ -0,0 +1,407 @@
/**
* 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.service.evaluationindex.extract.todata.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.constant.IndexCalConstant;
import com.epmet.constant.RoleKeyConstants;
import com.epmet.dao.evaluationindex.extract.FactGridMemberStatisticsDailyDao;
import com.epmet.dto.extract.result.OrgStatisticsResultDTO;
import com.epmet.dto.org.CustomerStaffGridDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsDailyEntity;
import com.epmet.service.evaluationindex.extract.todata.FactGridMemberStatisticsDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginIssueLogDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectLogDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.org.CustomerGridService;
import com.epmet.service.user.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 网格员数据统计_日统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Service
@Slf4j
public class FactGridMemberStatisticsDailyServiceImpl extends BaseServiceImpl<FactGridMemberStatisticsDailyDao, FactGridMemberStatisticsDailyEntity> implements FactGridMemberStatisticsDailyService {
@Resource
private UserService userService;
@Resource
private CustomerGridService customerGridService;
@Resource
private FactOriginProjectMainDailyService factOriginProjectMainDailyService;
@Resource
private FactOriginIssueLogDailyService factOriginIssueLogDailyService;
@Resource
private FactOriginProjectLogDailyService factOriginProjectLogDailyService;
/**
* 网格员数据统计
*
* @param customerId
* @param dateId
* @return void
* @author zhaoqifeng
* @date 2021/7/5 9:29
*/
@Override
public void extractGridMemberStatisticsDaily(String customerId, String dateId) {
log.info("客户" + customerId + ",时间" + dateId + ",网格员数据统计开始");
List<CustomerStaffGridDTO> staffGridList = customerGridService.getCustomerStaffGridList(customerId);
List<StaffRoleInfoDTO> staffInfoList = userService.getStaffByRoleKey(customerId, RoleKeyConstants.ROLE_KEY_GRID_MEMBER);
if (CollectionUtils.isEmpty(staffGridList) || CollectionUtils.isEmpty(staffInfoList)) {
return;
}
Map<String, StaffRoleInfoDTO> staffMap = staffInfoList.stream().collect(Collectors.toMap(StaffRoleInfoDTO :: getStaffId,
Function.identity()));
List<FactGridMemberStatisticsDailyEntity> list = staffGridList.stream().filter(p -> null != staffMap.get(p.getStaffId())).map(item -> {
StaffRoleInfoDTO staffInfo = staffMap.get(item.getStaffId());
return initEntity(customerId, dateId, item, staffInfo);
}).collect(Collectors.toList());
//数据统计
GetGridMemberData getGridMemberData = new GetGridMemberData(customerId, dateId).invoke();
Map<String, List<OrgStatisticsResultDTO>> projectCountMap = getGridMemberData.getProjectCountMap();
Map<String, List<OrgStatisticsResultDTO>> projectIncrMap = getGridMemberData.getProjectIncrMap();
Map<String, List<OrgStatisticsResultDTO>> issueToProjectCountMap = getGridMemberData.getIssueToProjectCountMap();
Map<String, List<OrgStatisticsResultDTO>> issueToProjectIncrMap = getGridMemberData.getIssueToProjectIncrMap();
Map<String, List<OrgStatisticsResultDTO>> closedIssueCountMap = getGridMemberData.getClosedIssueCountMap();
Map<String, List<OrgStatisticsResultDTO>> closedIssueIncrMap = getGridMemberData.getClosedIssueIncrMap();
Map<String, List<OrgStatisticsResultDTO>> projectResponseCountMap = getGridMemberData.getProjectResponseCountMap();
Map<String, List<OrgStatisticsResultDTO>> projectResponseIncrMap = getGridMemberData.getProjectResponseIncrMap();
Map<String, List<OrgStatisticsResultDTO>> projectTransferCountMap = getGridMemberData.getProjectTransferCountMap();
Map<String, List<OrgStatisticsResultDTO>> projectTransferIncrMap = getGridMemberData.getProjectTransferIncrMap();
Map<String, List<OrgStatisticsResultDTO>> projectClosedCountMap = getGridMemberData.getProjectClosedCountMap();
Map<String, List<OrgStatisticsResultDTO>> projectClosedIncrMap = getGridMemberData.getProjectClosedIncrMap();
list.forEach(item -> {
//赋值
setEntityData(projectCountMap, projectIncrMap, issueToProjectCountMap, issueToProjectIncrMap, closedIssueCountMap, closedIssueIncrMap,
projectResponseCountMap, projectResponseIncrMap, projectTransferCountMap, projectTransferIncrMap, projectClosedCountMap,
projectClosedIncrMap, item);
});
if (CollectionUtils.isNotEmpty(list)) {
int deleteNum;
do {
deleteNum = baseDao.deleteDataByCustomer(customerId, dateId, IndexCalConstant.DELETE_SIZE);
} while (deleteNum != NumConstant.ZERO);
//删除旧数据
insertBatch(list);
}
log.info("客户" + customerId + ",时间" + dateId + ",网格员数据统计结束");
}
/**
* 数据赋值
* @author zhaoqifeng
* @date 2021/7/7 10:57
* @param projectCountMap
* @param projectIncrMap
* @param issueToProjectCountMap
* @param issueToProjectIncrMap
* @param closedIssueCountMap
* @param closedIssueIncrMap
* @param projectResponseCountMap
* @param projectResponseIncrMap
* @param projectTransferCountMap
* @param projectTransferIncrMap
* @param projectClosedCountMap
* @param projectClosedIncrMap
* @param item
* @return void
*/
private void setEntityData(Map<String, List<OrgStatisticsResultDTO>> projectCountMap, Map<String, List<OrgStatisticsResultDTO>> projectIncrMap,
Map<String, List<OrgStatisticsResultDTO>> issueToProjectCountMap, Map<String, List<OrgStatisticsResultDTO>> issueToProjectIncrMap,
Map<String, List<OrgStatisticsResultDTO>> closedIssueCountMap, Map<String, List<OrgStatisticsResultDTO>> closedIssueIncrMap,
Map<String, List<OrgStatisticsResultDTO>> projectResponseCountMap, Map<String, List<OrgStatisticsResultDTO>> projectResponseIncrMap,
Map<String, List<OrgStatisticsResultDTO>> projectTransferCountMap, Map<String, List<OrgStatisticsResultDTO>> projectTransferIncrMap,
Map<String, List<OrgStatisticsResultDTO>> projectClosedCountMap, Map<String, List<OrgStatisticsResultDTO>> projectClosedIncrMap,
FactGridMemberStatisticsDailyEntity item) {
//项目立项数
List<OrgStatisticsResultDTO> projectCount = projectCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectCount)) {
projectCount.forEach(dto -> {
if (item.getAgencyId().equals(dto.getAgencyId())) {
item.setProjectCount(dto.getCount());
}
});
}
//项目立项日增量
List<OrgStatisticsResultDTO> projectIncr = projectIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectIncr)) {
projectIncr.forEach(dto -> {
if (item.getAgencyId().equals(dto.getAgencyId())) {
item.setProjectIncr(dto.getCount());
}
});
}
//议题转项目数
List<OrgStatisticsResultDTO> issueToProjectCount = issueToProjectCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(issueToProjectCount)) {
issueToProjectCount.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setIssueToProjectCount(dto.getCount());
}
});
}
//议题转项目日增量
List<OrgStatisticsResultDTO> issueToProjectIncr = issueToProjectIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(issueToProjectIncr)) {
issueToProjectIncr.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setIssueToProjectIncr(dto.getCount());
}
});
}
//议题关闭数
List<OrgStatisticsResultDTO> closedIssueCount = closedIssueCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(closedIssueCount)) {
closedIssueCount.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setClosedIssueCount(dto.getCount());
}
});
}
//议题关闭数日增量
List<OrgStatisticsResultDTO> closedIssueIncr = closedIssueIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(closedIssueIncr)) {
closedIssueIncr.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setClosedIssueIncr(dto.getCount());
}
});
}
//项目响应数
List<OrgStatisticsResultDTO> projectResponseCount = projectResponseCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectResponseCount)) {
projectResponseCount.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectResponseCount(dto.getCount());
}
});
}
//项目响应数日增量
List<OrgStatisticsResultDTO> projectResponseIncr = projectResponseIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectResponseIncr)) {
projectResponseIncr.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectResponseIncr(dto.getCount());
}
});
}
//项目吹哨数
List<OrgStatisticsResultDTO> projectTransferCount = projectTransferCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectTransferCount)) {
projectTransferCount.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectTransferCount(dto.getCount());
}
});
}
//项目吹哨数日增量
List<OrgStatisticsResultDTO> projectTransferIncr = projectTransferIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectTransferIncr)) {
projectTransferIncr.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectTransferIncr(dto.getCount());
}
});
}
//项目响应数
List<OrgStatisticsResultDTO> projectClosedCount = projectClosedCountMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectClosedCount)) {
projectClosedCount.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectClosedCount(dto.getCount());
}
});
}
//项目响应数日增量
List<OrgStatisticsResultDTO> projectClosedIncr = projectClosedIncrMap.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(projectClosedIncr)) {
projectClosedIncr.forEach(dto -> {
if (item.getGridId().equals(dto.getOrgId())) {
item.setProjectClosedIncr(dto.getCount());
}
});
}
}
/**
* 初始化Entity
* @author zhaoqifeng
* @date 2021/7/7 10:55
* @param customerId
* @param dateId
* @param item
* @param staffInfo
* @return com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsDailyEntity
*/
private FactGridMemberStatisticsDailyEntity initEntity(String customerId, String dateId, CustomerStaffGridDTO item, StaffRoleInfoDTO staffInfo) {
FactGridMemberStatisticsDailyEntity entity = new FactGridMemberStatisticsDailyEntity();
entity.setCustomerId(customerId);
entity.setAgencyId(item.getAgencyId());
entity.setGridId(item.getGridId());
entity.setPid(item.getPid());
entity.setPids(item.getPids());
entity.setGridId(item.getGridId());
entity.setYearId(dateId.substring(NumConstant.ZERO, NumConstant.FOUR));
entity.setMonthId(dateId.substring(NumConstant.ZERO, NumConstant.SIX));
entity.setDateId(dateId);
entity.setStaffId(item.getStaffId());
entity.setStaffName(staffInfo.getStaffName());
entity.setProjectCount(NumConstant.ZERO);
entity.setProjectIncr(NumConstant.ZERO);
entity.setIssueToProjectCount(NumConstant.ZERO);
entity.setIssueToProjectIncr(NumConstant.ZERO);
entity.setClosedIssueCount(NumConstant.ZERO);
entity.setClosedIssueIncr(NumConstant.ZERO);
entity.setProjectClosedCount(NumConstant.ZERO);
entity.setProjectClosedIncr(NumConstant.ZERO);
entity.setProjectResponseCount(NumConstant.ZERO);
entity.setProjectResponseIncr(NumConstant.ZERO);
entity.setProjectTransferCount(NumConstant.ZERO);
entity.setProjectTransferIncr(NumConstant.ZERO);
return entity;
}
/**
* 网格员数据统计
* @author zhaoqifeng
* @date 2021/7/7 10:55
*/
private class GetGridMemberData {
private String customerId;
private String dateId;
private Map<String, List<OrgStatisticsResultDTO>> projectCountMap;
private Map<String, List<OrgStatisticsResultDTO>> projectIncrMap;
private Map<String, List<OrgStatisticsResultDTO>> issueToProjectCountMap;
private Map<String, List<OrgStatisticsResultDTO>> issueToProjectIncrMap;
private Map<String, List<OrgStatisticsResultDTO>> closedIssueCountMap;
private Map<String, List<OrgStatisticsResultDTO>> closedIssueIncrMap;
private Map<String, List<OrgStatisticsResultDTO>> projectResponseCountMap;
private Map<String, List<OrgStatisticsResultDTO>> projectResponseIncrMap;
private Map<String, List<OrgStatisticsResultDTO>> projectTransferCountMap;
private Map<String, List<OrgStatisticsResultDTO>> projectTransferIncrMap;
private Map<String, List<OrgStatisticsResultDTO>> projectClosedCountMap;
private Map<String, List<OrgStatisticsResultDTO>> projectClosedIncrMap;
GetGridMemberData(String customerId, String dateId) {
this.customerId = customerId;
this.dateId = dateId;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectCountMap() {
return projectCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectIncrMap() {
return projectIncrMap;
}
Map<String, List<OrgStatisticsResultDTO>> getIssueToProjectCountMap() {
return issueToProjectCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getIssueToProjectIncrMap() {
return issueToProjectIncrMap;
}
Map<String, List<OrgStatisticsResultDTO>> getClosedIssueCountMap() {
return closedIssueCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getClosedIssueIncrMap() {
return closedIssueIncrMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectResponseCountMap() {
return projectResponseCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectResponseIncrMap() {
return projectResponseIncrMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectTransferCountMap() {
return projectTransferCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectTransferIncrMap() {
return projectTransferIncrMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectClosedCountMap() {
return projectClosedCountMap;
}
Map<String, List<OrgStatisticsResultDTO>> getProjectClosedIncrMap() {
return projectClosedIncrMap;
}
GetGridMemberData invoke() {
//项目立项数
projectCountMap = factOriginProjectMainDailyService.getMemberProjectCount(customerId, dateId,
NumConstant.ZERO);
projectIncrMap = factOriginProjectMainDailyService.getMemberProjectCount(customerId, dateId,
NumConstant.ONE);
//议题转项目数
issueToProjectCountMap = factOriginIssueLogDailyService.getIssueToProjectCount(customerId, dateId,
NumConstant.ZERO);
issueToProjectIncrMap = factOriginIssueLogDailyService.getIssueToProjectCount(customerId, dateId,
NumConstant.ONE);
//议题关闭数
closedIssueCountMap = factOriginIssueLogDailyService.getClosedIssueCount(customerId, dateId,
NumConstant.ZERO);
closedIssueIncrMap = factOriginIssueLogDailyService.getClosedIssueCount(customerId, dateId,
NumConstant.ONE);
//项目响应数
projectResponseCountMap = factOriginProjectLogDailyService.getProjectResponseCount(customerId,
dateId, NumConstant.ZERO);
projectResponseIncrMap = factOriginProjectLogDailyService.getProjectResponseCount(customerId, dateId
, NumConstant.ONE);
//项目吹哨数
projectTransferCountMap = factOriginProjectLogDailyService.getProjectTransferCount(customerId,
dateId, NumConstant.ZERO);
projectTransferIncrMap = factOriginProjectLogDailyService.getProjectTransferCount(customerId, dateId
, NumConstant.ONE);
//项目结案数
projectClosedCountMap = factOriginProjectLogDailyService.getProjectClosedCount(customerId,
dateId, NumConstant.ZERO);
projectClosedIncrMap = factOriginProjectLogDailyService.getProjectClosedCount(customerId, dateId
, NumConstant.ONE);
return this;
}
}
}

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

@ -0,0 +1,36 @@
/**
* 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.service.evaluationindex.extract.todata.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.dao.evaluationindex.extract.FactGridMemberStatisticsMonthlyDao;
import com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsMonthlyEntity;
import com.epmet.service.evaluationindex.extract.todata.FactGridMemberStatisticsMonthlyService;
import org.springframework.stereotype.Service;
/**
* 网格员数据统计_月统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-07-02
*/
@Service
public class FactGridMemberStatisticsMonthlyServiceImpl extends BaseServiceImpl<FactGridMemberStatisticsMonthlyDao, FactGridMemberStatisticsMonthlyEntity> implements FactGridMemberStatisticsMonthlyService {
}

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

@ -25,6 +25,7 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.OrgTypeConstant;
import com.epmet.dao.evaluationindex.extract.FactOriginIssueLogDailyDao;
import com.epmet.dto.extract.result.IssueVoteUserCountResultDTO;
import com.epmet.dto.extract.result.OrgStatisticsResultDTO;
import com.epmet.dto.stats.DimAgencyDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginIssueLogDailyEntity;
import com.epmet.service.evaluationindex.extract.todata.FactOriginIssueLogDailyService;
@ -32,8 +33,12 @@ import com.epmet.service.stats.DimAgencyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 议题记录附表
@ -115,4 +120,52 @@ public class FactOriginIssueLogDailyServiceImpl extends BaseServiceImpl<FactOrig
public int calPlatJoinUserTotal(String customerId, String gridId,String communityId, String agencyPath, String isParty) {
return baseDao.selectPlatJoinUserTotal(customerId,gridId,communityId,agencyPath,isParty);
}
/**
* 工作人员议题转项目数
*
* @param customerId
* @param dateId
* @param type 0 总量 1 增量
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 15:52
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getIssueToProjectCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getIssueToProjectCount(customerId, dateId);
} else {
list = baseDao.getIssueToProjectIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
/**
* 工作人员关闭议题数
*
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 16:40
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getClosedIssueCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getClosedIssueCount(customerId, dateId);
} else {
list = baseDao.getClosedIssueIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
}

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

@ -433,5 +433,77 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl<FactOr
return list.stream().collect(Collectors.toMap(OrgStatisticsResultDTO::getAgencyId, Function.identity()));
}
/**
* 项目响应数
*
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 16:56
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getProjectResponseCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getProjectResponseCount(customerId, dateId);
} else {
list = baseDao.getProjectResponseIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
/**
* 项目吹哨数
*
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 16:57
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getProjectTransferCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getProjectTransferCount(customerId, dateId);
} else {
list = baseDao.getProjectTransferIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
/**
* 项目结案数
*
* @param customerId
* @param dateId
* @param type
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 16:57
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getProjectClosedCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getProjectClosedCount(customerId, dateId);
} else {
list = baseDao.getProjectClosedIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
}

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

@ -711,5 +711,29 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return resultList;
}
/**
* 获取工作人员项目立项数
*
* @param customerId
* @param dateId
* @param type 0 总量 1 增量
* @return java.util.Map<java.lang.String, java.util.List < com.epmet.dto.extract.result.OrgStatisticsResultDTO>>
* @author zhaoqifeng
* @date 2021/7/5 14:48
*/
@Override
public Map<String, List<OrgStatisticsResultDTO>> getMemberProjectCount(String customerId, String dateId, Integer type) {
List<OrgStatisticsResultDTO> list;
if (type == NumConstant.ZERO) {
list = baseDao.getMemberProjectCount(customerId, dateId);
} else {
list = baseDao.getMemberProjectCountIncr(customerId, dateId);
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
}
return list.stream().collect(Collectors.groupingBy(OrgStatisticsResultDTO::getStaffId));
}
}

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

@ -89,38 +89,39 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
List<FactOriginProjectMainDailyDTO> pendingList = factOriginProjectMainDailyService.getPendingList(customerId);
List<FinishOrgDTO> finishOrgList = projectProcessService.getFinishOrg(customerId, dateString);
if (!CollectionUtils.isEmpty(closedList)) {
List<FactOriginProjectMainDailyEntity> closeProjects =
pendingList.stream().flatMap(pending -> closedList.stream().filter(closed -> pending.getId().equals(closed.getProjectId())).map(process -> {
FactOriginProjectMainDailyEntity entity = new FactOriginProjectMainDailyEntity();
entity.setId(process.getProjectId());
entity.setProjectStatus(ProjectConstant.CLOSED);
entity.setCreatedTime(DateUtils.stringToDate(pending.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD));
entity.setUpdatedTime(process.getUpdatedTime());
entity.setIsResolved(process.getIsResolved());
return entity;
})).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(finishOrgList)) {
closeProjects.forEach(close -> finishOrgList.stream().filter(finish -> close.getId().equals(finish.getProjectId())).forEach(dto -> {
String[] orgIds = dto.getPIdPath().split(StrConstant.COLON);
String org = "";
//取最短的ordIds中最后一个 则为最高级的那个orgIds
if (orgIds.length > NumConstant.ONE) {
org = orgIds[orgIds.length - 1];
} else {
org = orgIds[0];
}
if (StringUtils.isNotEmpty(dto.getGridId())) {
org = org + StrConstant.COLON + dto.getGridId();
} else if (StringUtils.isNotEmpty(dto.getDepartmentId())) {
org = org + StrConstant.COLON + dto.getDepartmentId();
}
close.setFinishOrgIds(org);
}));
}
//更新状态
if (!closeProjects.isEmpty()) {
factOriginProjectMainDailyService.updateBatchById(closeProjects);
if(!CollectionUtils.isEmpty(pendingList)) {
List<FactOriginProjectMainDailyEntity> closeProjects =
pendingList.stream().flatMap(pending -> closedList.stream().filter(closed -> pending.getId().equals(closed.getProjectId())).map(process -> {
FactOriginProjectMainDailyEntity entity = new FactOriginProjectMainDailyEntity();
entity.setId(process.getProjectId());
entity.setProjectStatus(ProjectConstant.CLOSED);
entity.setCreatedTime(DateUtils.stringToDate(pending.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD));
entity.setUpdatedTime(process.getUpdatedTime());
entity.setIsResolved(process.getIsResolved());
return entity;
})).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(finishOrgList)) {
closeProjects.forEach(close -> finishOrgList.stream().filter(finish -> close.getId().equals(finish.getProjectId())).forEach(dto -> {
String[] orgIds = dto.getPIdPath().split(StrConstant.COLON);
String org = "";
//取最短的ordIds中最后一个 则为最高级的那个orgIds
if (orgIds.length > NumConstant.ONE) {
org = orgIds[orgIds.length - 1];
} else {
org = orgIds[0];
}
if (StringUtils.isNotEmpty(dto.getGridId())) {
org = org + StrConstant.COLON + dto.getGridId();
} else if (StringUtils.isNotEmpty(dto.getDepartmentId())) {
org = org + StrConstant.COLON + dto.getDepartmentId();
}
close.setFinishOrgIds(org);
}));
}
//更新状态
if (!closeProjects.isEmpty()) {
factOriginProjectMainDailyService.updateBatchById(closeProjects);
}
}
}
//获取项目信息
@ -177,6 +178,7 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
}
entity.setIsParty(NumConstant.ZERO_STR);
entity.setIsOverdue(NumConstant.ZERO_STR);
entity.setProjectCreator(project.getCreatedBy());
return entity;
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(issueList)) {

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

@ -12,6 +12,7 @@ import com.epmet.dto.indexcal.CalculateCommonFormDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
import com.epmet.service.evaluationindex.extract.todata.FactAgencyGovernDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactGridGovernDailyService;
import com.epmet.service.evaluationindex.extract.todata.FactGridMemberStatisticsDailyService;
import com.epmet.service.evaluationindex.extract.toscreen.*;
import com.epmet.service.evaluationindex.indexcal.IndexCalculateService;
import com.epmet.service.evaluationindex.screen.*;
@ -76,6 +77,8 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
private FactGridGovernDailyService factGridGovernDailyService;
@Autowired
private FactAgencyGovernDailyService factAgencyGovernDailyService;
@Autowired
private FactGridMemberStatisticsDailyService factGridMemberStatisticsDailyService;
/**
* @param extractOriginFormDTO
@ -264,6 +267,12 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
}catch(Exception e){
log.error("治理指数-组织fact_agency_govern_daily抽取失败,customerId为:" + customerId + "dateId为:" + dateId, e);
}
try{
factGridMemberStatisticsDailyService.extractGridMemberStatisticsDaily(customerId, dateId);
}catch(Exception e){
log.error("网格员数据统计fact_grid_member_statistics_daily抽取失败,customerId为:" + customerId + "dateId为:" + dateId, e);
}
extractPartData(customerId, dateId);
log.info("===== extractDaily method end ======");
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java

@ -3,6 +3,7 @@ package com.epmet.service.org;
import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridTotalCountResultDTO;
import com.epmet.dto.group.result.GridIdListByCustomerResultDTO;
import com.epmet.dto.org.CustomerStaffGridDTO;
import com.epmet.dto.org.GridInfoDTO;
import com.epmet.entity.org.CustomerGridEntity;
@ -50,4 +51,13 @@ public interface CustomerGridService {
* @Date 2020/9/16 14:02
**/
List<GridInfoDTO> queryGridInfoList(String customerId);
/**
* 查询工作人员网格关系
* @author zhaoqifeng
* @date 2021/7/5 10:21
* @param customerId
* @return java.util.List<com.epmet.dto.org.CustomerStaffGridDTO>
*/
List<CustomerStaffGridDTO> getCustomerStaffGridList(String customerId);
}

22
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerStaffService.java

@ -0,0 +1,22 @@
package com.epmet.service.org;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.CustomerGridStaffDTO;
import java.util.List;
/**
* @author liujianjun
*/
public interface CustomerStaffService {
/**
* desc: 条件获取 网格下的所有人
*
* @param formDTO
* @return java.util.List<com.epmet.dto.org.GridInfoDTO>
* @author LiuJanJun
* @date 2021/6/29 3:13 下午
*/
List<CustomerGridStaffDTO> selectStaffGridList(StaffPatrolStatsFormDTO formDTO);
}

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java

@ -6,6 +6,7 @@ import com.epmet.dao.org.CustomerGridDao;
import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridTotalCountResultDTO;
import com.epmet.dto.group.result.GridIdListByCustomerResultDTO;
import com.epmet.dto.org.CustomerStaffGridDTO;
import com.epmet.dto.org.GridInfoDTO;
import com.epmet.entity.org.CustomerGridEntity;
import com.epmet.service.org.CustomerGridService;
@ -64,4 +65,17 @@ public class CustomerGridServiceImpl implements CustomerGridService {
public List<GridInfoDTO> queryGridInfoList(String customerId) {
return customerGridDao.selectListGridInfo(customerId);
}
/**
* 查询工作人员网格关系
*
* @param customerId
* @return java.util.List<com.epmet.dto.org.CustomerStaffGridDTO>
* @author zhaoqifeng
* @date 2021/7/5 10:21
*/
@Override
public List<CustomerStaffGridDTO> getCustomerStaffGridList(String customerId) {
return customerGridDao.getCustomerStaffGridList(customerId);
}
}

39
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerStaffServiceImpl.java

@ -0,0 +1,39 @@
package com.epmet.service.org.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.org.CustomerStaffGridDao;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.CustomerGridStaffDTO;
import com.epmet.service.org.CustomerStaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/6/29 3:14 下午
* @version: 1.0
*/
@Service
@DataSource(DataSourceConstant.GOV_ORG)
public class CustomerStaffServiceImpl implements CustomerStaffService {
@Autowired
private CustomerStaffGridDao customerStaffGridDao;
/**
* desc: 条件获取 网格下的所有人
*
* @param formDTO
* @return java.util.List<com.epmet.dto.org.GridInfoDTO>
* @author LiuJanJun
* @date 2021/6/29 3:13 下午
*/
@Override
public List<CustomerGridStaffDTO> selectStaffGridList(StaffPatrolStatsFormDTO formDTO) {
return customerStaffGridDao.selectGridStaffList(formDTO);
}
}

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

@ -162,4 +162,5 @@ public interface ProjectService extends BaseService<ProjectEntity> {
*/
List<FactOriginProjectMainDailyEntity> getProjectSatisfaction(String customerId);
List<ProjectDTO> selectProjectListByDateId(String customerId, String yesterdayStr, String projectOriginAgency);
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java

@ -196,5 +196,10 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}).collect(Collectors.toList());
}
@Override
public List<ProjectDTO> selectProjectListByDateId(String customerId, String dateId, String projectOrigin) {
return baseDao.selectProjectListByDateId(customerId,dateId,projectOrigin);
}
}

16
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java

@ -0,0 +1,16 @@
package com.epmet.service.user;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import java.util.List;
/**
* @author liujianjun
*/
public interface StatsStaffPatrolService {
Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList);
List<StatsStaffPatrolRecordDailyDTO> selectData(String customerId, String yesterdayStr);
}

30
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java

@ -2,9 +2,14 @@ package com.epmet.service.user;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import com.epmet.util.DimIdGenerator;
@ -94,4 +99,29 @@ public interface UserService {
* @return com.epmet.dto.user.OrgGridManagerTotalDTO
*/
Map<String,Integer> queryOrgGridManager(String customerId,List<OrgStaffDTO> orgStaffDTOList);
/**
* 根据角色key查找工作人员
*
* @author zhaoqifeng
* @date 2021/7/5 9:52
* @param customerId
* @param roleKey
* @return java.util.List<com.epmet.dto.user.result.StaffRoleInfoDTO>
*/
List<StaffRoleInfoDTO> getStaffByRoleKey(String customerId, String roleKey);
/**
* desc: 请描述类的业务用途
*
* @param formDTO
* @return
* @author LiuJanJun
* @date 2021/6/29 10:15 上午
*/
List<CustomerStaffDTO> selectUserListByRoleKey(StaffPatrolStatsFormDTO formDTO);
List<StatsStaffPatrolRecordDailyDTO> selectLastStaffPatrolList(StaffPatrolStatsFormDTO formDTO);
List<StaffPatrolRecordResult> selectStaffPatrolListByDateId(String customerId, String yesterdayStr);
}

48
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java

@ -0,0 +1,48 @@
package com.epmet.service.user.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.user.StatsStaffPatrolRecordDailyDao;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity;
import com.epmet.service.user.StatsStaffPatrolService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* desc:
*
* @author: LiuJanJun
* @date: 2021/6/30 8:33 上午
* @version: 1.0
*/
@Slf4j
@DataSource(DataSourceConstant.EPMET_USER)
@Service
public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService {
@Autowired
private StatsStaffPatrolRecordDailyDao statsStaffPatrolRecordDailyDao;
@Override
public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList) {
int delete = statsStaffPatrolRecordDailyDao.delete(formDTO);
log.debug("delAndInsertBatch delete:{},param:{}", delete, JSON.toJSONString(formDTO));
return statsStaffPatrolRecordDailyDao.insertBatch(insertList);
}
@Override
public List<StatsStaffPatrolRecordDailyDTO> selectData(String customerId, String yesterdayStr) {
LambdaQueryWrapper<StatsStaffPatrolRecordDailyEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StatsStaffPatrolRecordDailyEntity::getCustomerId, customerId)
.eq(StatsStaffPatrolRecordDailyEntity::getDateId, yesterdayStr);
List<StatsStaffPatrolRecordDailyEntity> list = statsStaffPatrolRecordDailyDao.selectList(queryWrapper);
return ConvertUtils.sourceToTarget(list, StatsStaffPatrolRecordDailyDTO.class);
}
}

36
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -6,15 +6,21 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.ExtractConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.RoleKeyConstants;
import com.epmet.dao.user.UserDao;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity;
import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
@ -797,4 +803,34 @@ public class UserServiceImpl implements UserService {
return resultMap;
}
/**
* 根据角色key查找工作人员
*
* @param customerId
* @param roleKey
* @return java.util.List<com.epmet.dto.user.result.StaffRoleInfoDTO>
* @author zhaoqifeng
* @date 2021/7/5 9:52
*/
@Override
public List<StaffRoleInfoDTO> getStaffByRoleKey(String customerId, String roleKey) {
return userDao.getStaffByRoleKey(customerId, roleKey);
}
@Override
public List<CustomerStaffDTO> selectUserListByRoleKey(StaffPatrolStatsFormDTO formDTO) {
formDTO.setRoleKey(RoleKeyConstants.ROLE_KEY_GRID_MEMBER);
return userDao.selectUserByRoleKey(formDTO);
}
@Override
public List<StatsStaffPatrolRecordDailyDTO> selectLastStaffPatrolList(StaffPatrolStatsFormDTO formDTO) {
return userDao.selectLastStaffPatrolList(formDTO);
}
@Override
public List<StaffPatrolRecordResult> selectStaffPatrolListByDateId(String customerId, String yesterdayStr) {
return userDao.selectStaffPatrolListByDateId(customerId,yesterdayStr);
}
}

41
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.21__grid_member_statistics.sql

@ -0,0 +1,41 @@
#网格员数据分析需求 脚本 2021-07-06
CREATE TABLE `fact_grid_member_statistics_daily`
(
`ID` varchar(64) NOT NULL COMMENT '主键(t-1)',
`DATE_ID` varchar(32) NOT NULL COMMENT 'yyyyMMdd',
`MONTH_ID` varchar(32) NOT NULL COMMENT '月份ID',
`YEAR_ID` varchar(32) NOT NULL COMMENT '年度ID',
`CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID',
`AGENCY_ID` varchar(32) NOT NULL COMMENT '组织ID',
`GRID_ID` varchar(32) NOT NULL COMMENT '网格I',
`PID` varchar(32) NOT NULL COMMENT '上级ID(网格所属Agency的上级组织Id)',
`PIDS` varchar(512) NOT NULL COMMENT '所有agencyId的上级组织ID(包含agencyId)',
`STAFF_ID` varchar(32) NOT NULL COMMENT '工作人员ID',
`STAFF_NAME` varchar(32) DEFAULT NULL COMMENT '工作人员姓名',
`PROJECT_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '项目立项数',
`ISSUE_TO_PROJECT_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '议题转项目数',
`CLOSED_ISSUE_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '议题关闭数',
`PROJECT_RESPONSE_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '项目响应数',
`PROJECT_TRANSFER_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '项目吹哨数',
`PROJECT_CLOSED_COUNT` int(11) NOT NULL DEFAULT '0' COMMENT '项目结案数',
`PROJECT_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '项目立项数日增量',
`ISSUE_TO_PROJECT_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '议题转项目数日增量',
`CLOSED_ISSUE_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '议题关闭数日增量',
`PROJECT_RESPONSE_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '项目响应数日增量',
`PROJECT_TRANSFER_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '项目吹哨数日增量',
`PROJECT_CLOSED_INCR` int(11) NOT NULL DEFAULT '0' COMMENT '项目结案数日增量',
`DEL_FLAG` int(11) DEFAULT NULL COMMENT '删除状态,0:正常,1:删除',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='网格员数据统计_日统计';
#添加唯一索引
ALTER TABLE `epmet_data_statistical`.`fact_grid_member_statistics_daily`
ADD UNIQUE INDEX `unx_staff`(`DATE_ID`, `STAFF_ID`, `GRID_ID`) USING BTREE;
ALTER TABLE `epmet_data_statistical`.`fact_origin_project_main_daily`
ADD COLUMN `PROJECT_CREATOR` varchar(32) NULL COMMENT '项目创建人(议题转项目或立项人)' AFTER `IS_SATISFIED`;

39
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactGridMemberStatisticsDailyDao.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.evaluationindex.extract.FactGridMemberStatisticsDailyDao">
<resultMap type="com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsDailyEntity" id="factGridMemberStatisticsDailyMap">
<result property="id" column="ID"/>
<result property="dateId" column="DATE_ID"/>
<result property="monthId" column="MONTH_ID"/>
<result property="yearId" column="YEAR_ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="staffId" column="STAFF_ID"/>
<result property="staffName" column="STAFF_NAME"/>
<result property="projectCount" column="PROJECT_COUNT"/>
<result property="issueToProjectCount" column="ISSUE_TO_PROJECT_COUNT"/>
<result property="closedIssueCount" column="CLOSED_ISSUE_COUNT"/>
<result property="projectResponseCount" column="PROJECT_RESPONSE_COUNT"/>
<result property="projectTransferCount" column="PROJECT_TRANSFER_COUNT"/>
<result property="projectClosedCount" column="PROJECT_CLOSED_COUNT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<delete id="deleteDataByCustomer">
delete from fact_grid_member_statistics_daily
where CUSTOMER_ID = #{customerId}
AND DATE_ID = #{dateId}
limit #{deleteSize}
</delete>
</mapper>

32
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactGridMemberStatisticsMonthlyDao.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.evaluationindex.extract.FactGridMemberStatisticsMonthlyDao">
<resultMap type="com.epmet.entity.evaluationindex.extract.FactGridMemberStatisticsMonthlyEntity" id="factGridMemberStatisticsMonthlyMap">
<result property="id" column="ID"/>
<result property="monthId" column="MONTH_ID"/>
<result property="yearId" column="YEAR_ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="staffId" column="STAFF_ID"/>
<result property="staffName" column="STAFF_NAME"/>
<result property="projectCount" column="PROJECT_COUNT"/>
<result property="issueToProjectCount" column="ISSUE_TO_PROJECT_COUNT"/>
<result property="closedIssueCount" column="CLOSED_ISSUE_COUNT"/>
<result property="projectResponseCount" column="PROJECT_RESPONSE_COUNT"/>
<result property="projectTransferCount" column="PROJECT_TRANSFER_COUNT"/>
<result property="projectClosedCount" column="PROJECT_CLOSED_COUNT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

60
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml

@ -177,4 +177,64 @@
and M.IS_PARTY=#{isParty}
</if>
</select>
<select id="getIssueToProjectCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
GRID_ID AS "orgId",
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_issue_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND ACTION_CODE = 'shift_project'
GROUP BY
GRID_ID,
OPERATION_USER_ID
</select>
<select id="getIssueToProjectIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
GRID_ID AS "orgId",
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_issue_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND DATE_ID = #{dateId}
AND ACTION_CODE = 'shift_project'
GROUP BY
GRID_ID,
OPERATION_USER_ID
</select>
<select id="getClosedIssueCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
GRID_ID AS "orgId",
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_issue_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND DATE_ID &lt;= #{dateId}
AND (ACTION_CODE = 'closed_resolved' OR ACTION_CODE = 'closed_unresolved')
GROUP BY
GRID_ID,
OPERATION_USER_ID
</select>
<select id="getClosedIssueIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
GRID_ID AS "orgId",
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_issue_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND DATE_ID = #{dateId}
AND (ACTION_CODE = 'closed_resolved' OR ACTION_CODE = 'closed_unresolved')
GROUP BY
GRID_ID,
OPERATION_USER_ID
</select>
</mapper>

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

@ -737,4 +737,106 @@
GROUP BY
da.ID
</select>
<select id="getProjectResponseCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'response'
AND IS_ACTIVE = 1
AND DATE_ID &lt;= #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
<select id="getProjectResponseIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'response'
AND IS_ACTIVE = 1
AND DATE_ID = #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
<select id="getProjectTransferCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'transfer'
AND IS_ACTIVE = 1
AND DATE_ID &lt;= #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
<select id="getProjectTransferIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'transfer'
AND IS_ACTIVE = 1
AND DATE_ID = #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
<select id="getProjectClosedCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'close'
AND IS_ACTIVE = 1
AND DATE_ID &lt;= #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
<select id="getProjectClosedIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ORG_ID,
OPERATION_USER_ID AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_log_daily
WHERE
CUSTOMER_ID = #{customerId}
AND ORG_TYPE = 'grid'
AND ACTION_CODE = 'close'
AND IS_ACTIVE = 1
AND DATE_ID = #{dateId}
GROUP BY
ORG_ID,
OPERATION_USER_ID
</select>
</mapper>

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

@ -1069,4 +1069,39 @@
AND m.IS_RESOLVED=#{isResolved}
</if>
</select>
<select id="getMemberProjectCountIncr" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
AGENCY_ID,
PROJECT_CREATOR AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_main_daily
WHERE
ORIGIN = 'agency'
AND CUSTOMER_ID = #{customerId}
<if test='null != dateId and "" != dateId'>
AND DATE_ID = #{dateId}
</if>
GROUP BY
AGENCY_ID,
PROJECT_CREATOR
</select>
<select id="getMemberProjectCount" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
AGENCY_ID,
PROJECT_CREATOR AS "staffId",
COUNT( ID ) AS "count"
FROM
fact_origin_project_main_daily
WHERE
ORIGIN = 'agency'
AND CUSTOMER_ID = #{customerId}
<if test='null != dateId and "" != dateId'>
AND DATE_ID &lt;= #{dateId}
</if>
GROUP BY
AGENCY_ID,
PROJECT_CREATOR
</select>
</mapper>

2
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/StatsIssueDao.xml

@ -241,7 +241,7 @@
i.DEL_FLAG = '0'
AND ip.DEL_FLAG = '0'
AND i.CUSTOMER_ID = #{customerId}
AND DATE_FORMAT(i.CREATED_TIME,'%Y%m%d') = #{dateId}
AND DATE_FORMAT(ip.CREATED_TIME,'%Y%m%d') = #{dateId}
</select>
<!-- 查询议题满意度评价信息 -->

18
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml

@ -86,4 +86,22 @@
CG.CUSTOMER_ID =#{customerId}
and cg.del_flag='0'
</select>
<select id="getCustomerStaffGridList" resultType="com.epmet.dto.org.CustomerStaffGridDTO">
SELECT
ca.CUSTOMER_ID,
ca.ID AS agencyId,
ca.PID,
cg.PIDS,
csg.GRID_ID,
csg.USER_ID AS staffId
FROM
customer_staff_grid csg
INNER JOIN customer_grid cg ON csg.GRID_ID = cg.ID
AND cg.DEL_FLAG = '0'
INNER JOIN customer_agency ca ON cg.PID = ca.ID
AND ca.DEL_FLAG = '0'
WHERE
csg.DEL_FLAG = '0'
AND csg.CUSTOMER_ID = #{customerId}
</select>
</mapper>

31
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.org.CustomerStaffGridDao">
<!--排除掉pid为空的人-->
<select id="selectGridStaffList" resultType="com.epmet.dto.user.result.CustomerGridStaffDTO">
SELECT * FROM (
SELECT
sg.customer_id,
sg.grid_id,
sg.user_id,
grid.PID agencyId,
grid.PIDS gridPids
FROM
customer_staff_grid sg
LEFT JOIN customer_grid grid ON grid.id = sg.grid_id
WHERE
sg.del_flag = '0'
<if test="customerId != null and customerId != ''">
AND sg.customer_id = #{customerId}
</if>
<if test="gridId != null and gridId != ''">
AND sg.GRID_ID = #{gridId}
</if>
) t WHERE t.agencyId IS NOT NULL
</select>
</mapper>

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

Loading…
Cancel
Save