From cd2e538b81fc7b41f6070bc0779dff5c474a14f1 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 26 Aug 2021 10:49:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E5=A4=96=E6=8E=A5=E5=8F=A3-=E7=BD=91?= =?UTF-8?q?=E6=A0=BC=E5=91=98=E5=B7=A1=E6=9F=A5=E7=9B=B8=E5=85=B3=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/GridMemberPatrolListFormDTO.java | 43 ++++++++++++++++ .../result/GridMemberPatrolListResultDTO.java | 31 ++++++++++++ .../controller/EpmetUserController.java | 19 +++++-- .../dataaggre/dao/datastats/DataStatsDao.java | 8 +++ .../dao/epmetuser/StaffPatrolRecordDao.java | 7 +++ .../service/datastats/DataStatsService.java | 8 +++ .../datastats/impl/DataStatsServiceImpl.java | 13 ++++- .../service/epmetuser/EpmetUserService.java | 12 +++-- .../epmetuser/impl/EpmetUserServiceImpl.java | 49 +++++++++++++++++-- .../mapper/datastats/DatsStatsDao.xml | 30 ++++++++++++ .../mapper/epmetuser/StaffPatrolRecordDao.xml | 20 ++++++++ 11 files changed, 227 insertions(+), 13 deletions(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java new file mode 100644 index 0000000000..a7ffd9dc56 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dataaggre.dto.epmetuser.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @Description 对外接口--网格员排名-巡查记录-接口入参 + * @Auth sun + */ +@Data +public class GridMemberPatrolListFormDTO implements Serializable { + + private static final long serialVersionUID = -3381286960911634231L; + /** + * 组织id + */ + @NotBlank(message = "组织Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String agencyId; + /** + * 维度Id(月:202108;年:2021) + */ + @NotBlank(message = "维度Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String dimId; + /** + * 维度类型(月:month;年:year) + */ + @NotBlank(message = "维度类型不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String dimType; + /** + * 排序字段(上报事件:project巡查时长:patrolTime处理件数:dealEvent) + */ + private String sort = "project"; + //按条件查询数据的最大日维度Id + private String dateId; + + public interface Member extends CustomerClientShowGroup {} +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java new file mode 100644 index 0000000000..9a2035680d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 对外接口--网格员排名-巡查记录-接口返参 + * @Auth sun + */ +@Data +public class GridMemberPatrolListResultDTO implements Serializable { + private static final long serialVersionUID = 7129564173128153335L; + + //工作人员用户id + private String staffId = ""; + //真名 + private String staffName = ""; + //上报事件(项目)数 + private Integer reportProjectCount = 0; + //巡查总时长【单位:分钟】 + private Integer patrolTotalTime = 0; + //处理件数(议题转项目数+议题关闭数+项目响应数+项目吹哨数+项目结案数) + private Integer eventCount = 0; + @JsonIgnore + private String dateId; + @JsonIgnore + private Integer timeNum; + +} 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 506048dbd4..300f242c41 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 @@ -8,10 +8,7 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; -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.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.excel.StaffPatrollExcel; @@ -218,4 +215,18 @@ public class EpmetUserController { ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class); } + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + @PostMapping("gridmemberpatrollist") + public Result> gridMemberPatrolList(@RequestBody GridMemberPatrolListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMemberPatrolListFormDTO.Member.class); + if(!"month".equals(formDTO.getDimType())&&!"year".equals(formDTO.getDimType())){ + throw new RenException("参数错误,维度类型参数值错误"); + } + return new Result>().ok(epmetUserService.gridMemberPatrolList(formDTO)); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index e9772bf321..9cf5a3a6e1 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -21,6 +21,8 @@ import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; +import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; @@ -300,4 +302,10 @@ public interface DataStatsDao { * @return */ TotalAndIncrResultDTO getAgencySumGroup(@Param("agencyList") List agencyList, @Param("dateId") String dateId); + + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + List selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java index 36385a7cbd..a18928719c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java @@ -19,6 +19,7 @@ package com.epmet.dataaggre.dao.epmetuser; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO; import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity; @@ -53,4 +54,10 @@ public interface StaffPatrolRecordDao extends BaseDao { * @author sun */ StaffListResultDTO selectPersonalPatrolList(@Param("staffId") String staffId); + + /** + * @Description 按维度汇总当前组织及下级网格员巡查数据 + * @author sun + */ + List gridMemberPatrol(GridMemberPatrolListFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 8d0cb5fa76..d4756648a0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -3,6 +3,8 @@ 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.epmetuser.form.GridMemberPatrolListFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; @@ -221,4 +223,10 @@ public interface DataStatsService { * @date 2021/8/12 2:23 下午 */ UserAndGroupTotalResultDTO getUserAndGroupTotal(BaseDataFormDTO formDTO); + + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + List getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 6a8896618d..cfe7943085 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -12,7 +12,9 @@ import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.result.*; -import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; + import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; + import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; + import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO; @@ -1830,4 +1832,13 @@ public class DataStatsServiceImpl implements DataStatsService { return result; } + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + @Override + public List getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO) { + return dataStatsDao.selectGirdMemberPatrol(formDTO); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index e1941c1c08..6d25c65b48 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java @@ -1,9 +1,6 @@ package com.epmet.dataaggre.service.epmetuser; -import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; -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.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; @@ -96,4 +93,11 @@ public interface EpmetUserService { * @date 2021/8/3 15:09 */ UserEventLogoResultDTO mentionMeEvent(String userId); + + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + List gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 32bce002dc..cabda43539 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -9,15 +9,13 @@ import com.epmet.dataaggre.dao.epmetuser.*; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO; -import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO; -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.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.entity.epmetuser.ResiUserBadgeEntity; +import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService; @@ -61,6 +59,8 @@ public class EpmetUserServiceImpl implements EpmetUserService { private ResiUserBadgeDao resiUserBadgeDao; @Autowired private GovProjectService govProjectService; + @Autowired + private DataStatsService dataStatsService; /** * @Description 根据UserIds查询 @@ -424,5 +424,46 @@ public class EpmetUserServiceImpl implements EpmetUserService { return resultDTO; } + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + @Override + public List gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO) { + //1.查询当前组织及下级所有网格员维度对应最大dated数据【例查询2021年8月数据,则是查询8月对应的最大daeId那天的网格员数据】 + List resultList = dataStatsService.getGirdMemberPatrol(formDTO); + if (CollectionUtils.isEmpty(resultList)) { + return new ArrayList<>(); + } + + //2.按维度汇总当前组织及下级网格员巡查数据 + //【如果查询当前月或本年度数据,则需要排除最大dateId的数据,因为上边查的统计数据只有t-1的,巡查数据是t的,避免多计算了当天的巡查项目数和时长数】 + formDTO.setDateId(resultList.get(0).getDateId()); + List patrolList = staffPatrolRecordDao.gridMemberPatrol(formDTO); + + //3.以统计数据为准封装结果数据 + resultList.forEach(re -> patrolList.stream().filter(l -> re.getStaffId().equals(l.getStaffId())).forEach(s -> { + re.setReportProjectCount(s.getReportProjectCount()); + re.setPatrolTotalTime((s.getTimeNum() > NumConstant.ZERO ? s.getTimeNum() / 60 : 0)); + })); + + //4.按排序字段排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(GridMemberPatrolListResultDTO o1, GridMemberPatrolListResultDTO o2) { + if ("patrolTime".equals(formDTO.getSort())) { + return o2.getPatrolTotalTime().compareTo(o1.getPatrolTotalTime()); + } else if ("dealEvent".equals(formDTO.getSort())) { + return o2.getEventCount().compareTo(o1.getEventCount()); + } else { + return o2.getReportProjectCount().compareTo(o1.getReportProjectCount()); + } + } + }); + + return resultList; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 5a563a5e4b..9f99415f2b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -767,4 +767,34 @@ + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml index 9f0fd1fe74..fb4ad95459 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml @@ -120,4 +120,24 @@ AND ssp.staff_id = #{staffId} + +