diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index ff5e18b091..92d29521e2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/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", "更多:网格员数据分析", "更多:网格员数据分析"), /** diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridMemberDataStatsResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridMemberDataStatsResultDTO.java deleted file mode 100644 index 88c4d695db..0000000000 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/GridMemberDataStatsResultDTO.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.epmet.dataaggre.dto.datastats.result; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GridMemberDataStatsResultDTO { - /** - * 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; -} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberStatsFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberStatsFormDTO.java new file mode 100644 index 0000000000..45ad8c8d62 --- /dev/null +++ b/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; + + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java index edda65d145..b431cfafab 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java @@ -9,6 +9,7 @@ public class GridMemberDataAnalysisResultDTO { private String staffId; private String staffName; private String orgName; + private Integer projectCount; private Integer issueToProjectCount; private Integer closedIssueCount; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java index 779fa37fe3..1414e0043c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java @@ -7,12 +7,15 @@ 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.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 +23,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 +39,9 @@ public class EpmetUserController { @Autowired private EpmetUserService epmetUserService; + @Autowired + private DataStatsService dataStatsService; + /** * @Param formDTO @@ -99,4 +108,75 @@ public class EpmetUserController { return new Result>().ok(epmetUserService.staffPatrolList(formDTO)); } + /** + * @Description 网格员项目议题统计数据 + * @return + * @author wxz + * @date 2021.07.05 15:49 + */ + @PostMapping("/gridmember/issueprojectstats") + public Result>> getGridMemberIssueProjectStats(@LoginUser TokenDto loginUser, @RequestBody GridMemberStatsFormDTO input) { + ValidatorUtils.validateEntity(input, GridMemberStatsFormDTO.IssueProjectStats.class); + String gridId = input.getGridId(); + String userId = loginUser.getUserId(); + + GridMemberDataAnalysisResultDTO data = dataStatsService.getGridMemberIssueProjectStats(gridId, userId); + List> result = convertToMapList(data); + return new Result>>().ok(result); + } + + /** + * @Description 将议题项目统计数据转为前端需要的格式 + * @return + * @author wxz + * @date 2021.07.05 16:35 + */ + private List> 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 projectCountMap = new HashMap<>(); + projectCountMap.put("key", "直接立项数"); + projectCountMap.put("value", projectCount); + projectCountMap.put("type", "project"); + + HashMap closedIssueCountMap = new HashMap<>(); + closedIssueCountMap.put("key", "议题转项目数"); + closedIssueCountMap.put("value", issueToProjectCount); + closedIssueCountMap.put("type", "project"); + + HashMap issueClosedCountMap = new HashMap<>(); + issueClosedCountMap.put("key", "议题关闭数"); + issueClosedCountMap.put("value", closedIssueCount); + issueClosedCountMap.put("type", "issue"); + + HashMap projectResponseCountMap = new HashMap<>(); + projectResponseCountMap.put("key", "项目响应数"); + projectResponseCountMap.put("value", projectResponseCount); + projectResponseCountMap.put("type", "project"); + + HashMap projectTransferCountMap = new HashMap<>(); + projectTransferCountMap.put("key", "项目吹哨数"); + projectTransferCountMap.put("value", projectTransferCount); + projectTransferCountMap.put("type", "project"); + + HashMap projectClosedCountMap = new HashMap<>(); + projectClosedCountMap.put("key", "项目结案数"); + projectClosedCountMap.put("value", projectClosedCount); + projectClosedCountMap.put("type", "project"); + + ArrayList> maps = new ArrayList<>(6); + maps.add(projectCountMap); + maps.add(closedIssueCountMap); + maps.add(issueClosedCountMap); + maps.add(projectResponseCountMap); + maps.add(projectTransferCountMap); + maps.add(projectClosedCountMap); + return maps; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java index be42417f8c..f78bb69f30 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java @@ -1,6 +1,8 @@ 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; @@ -78,6 +80,7 @@ public class GovOrgController { * @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); diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java index beaacb9614..a882e4d36a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java @@ -18,7 +18,6 @@ package com.epmet.dataaggre.dao.datastats; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dataaggre.dto.datastats.result.GridMemberDataStatsResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.entity.datastats.FactGridMemberStatisticsDailyEntity; import org.apache.ibatis.annotations.Mapper; @@ -45,4 +44,12 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao + + 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 + + SELECT + + FROM fact_grid_member_statistics_daily member + WHERE member.GRID_ID = #{gridId} + and member.STAFF_ID = #{userId} + and member.DEL_FLAG = 0 + ORDER BY member.CREATED_TIME DESC + LIMIT 1 + + \ No newline at end of file