diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java index 9ac1b660fe..d87beecab2 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java @@ -5,6 +5,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.List; /** * @Author zxc @@ -56,4 +57,9 @@ public class CustomerDataManageFormDTO implements Serializable { */ @NotNull(message = "是否分页不能为空",groups = CustomerDataManageForm.class) private Boolean isPage; + + //组织或网格Id集合 + private List idList; + //数据类型【组织agency 网格grid】 + private String dataType; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java index d7ae66100c..5c0827da7b 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dataaggre.dto.datastats.result; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; /** @@ -9,31 +10,38 @@ import lombok.Data; @Data public class CustomerDataManageResultDTO { - //组织 + //组织、网格Id + private String orgId; + //组织、网格名称 private String orgName; //用户数 - private Integer userCount; + private Integer userCount = 0; //居民数 - private Integer residentCount; + private Integer residentCount = 0; //党员数 - private Integer partyMemberCount; + private Integer partyMemberCount = 0; //小组数 - private Integer groupCount; + private Integer groupCount = 0; //话题数 - private Integer topicCount; + private Integer topicCount = 0; //议题数 - private Integer issueCount; + private Integer issueCount = 0; //项目数 - private Integer projectCount; + private Integer projectCount = 0; //结案项目数 - private Integer closedProjectCount; + private Integer closedProjectCount = 0; //巡查人数 - private Integer patrolPeopleCount; + private Integer patrolPeopleCount = 0; //巡查次数 - private Integer patrolCount; + private Integer patrolCount = 0; //巡查时长 private String patrolDuration; + //未转换前的巡查时长 + private Integer patrolDurationInteger = 0; + //数据对应dateId + @JsonIgnore + private String dateId; - private Integer patrolDurationInteger; + private String staffId; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java index 07afb7fbb6..02c5c9cbc8 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java @@ -18,14 +18,10 @@ public class ScreenAgencyOrGridListDTO implements Serializable { private List agencyGridList; @Data - public class AgencyGrid { + public static class AgencyGrid { //组织id - private String agencyId; + private String orgId; //组织名称 - private String agencyName; - //网格Id - private String gridId; - //网格name - private String gridName; + private String orgName; } } 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 9cf5a3a6e1..7172164e18 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 @@ -18,6 +18,7 @@ package com.epmet.dataaggre.dao.datastats; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; +import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; @@ -308,4 +309,30 @@ public interface DataStatsDao { * @author sun */ List selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO); + + /** + * @Description 直属组织或网格下注册用户数据 + * @author sun + */ + List regUserList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下群组数据 + * @author sun + */ + List groupList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下话题数据 + * @author sun + */ + List topicList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下议题数据 + * @author sun + */ + List issueList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下项目数据 + * @author sun + */ + List projectList(CustomerDataManageFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java index c7e68c410e..8f01bdda96 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java @@ -19,6 +19,8 @@ package com.epmet.dataaggre.dao.epmetuser; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; +import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; import org.apache.ibatis.annotations.Mapper; @@ -43,4 +45,10 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao getPatrolSumList(@Param("agencyFullIdList") List agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId); + + /** + * @Description 直属组织或网格下巡查数据 + * @author sun + */ + List patrolList(CustomerDataManageFormDTO 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 f62f24156a..76c49dbcbd 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 @@ -1934,10 +1934,15 @@ public class DataStatsServiceImpl implements DataStatsService { */ @Override public List operateExport(CustomerDataManageFormDTO formDTO) throws ParseException { + List resultList = new ArrayList<>(); //1.必要参数校验及处理 - if (!"Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) { + if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) { throw new RenException("请选择开始时间或查询累计值"); } + if (formDTO.getIsPage()) { + int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); + formDTO.setPageNo(pageIndex); + } //入参有开始时间的则需要减去一天 if (StringUtils.isNotBlank(formDTO.getStartTime())) { SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); @@ -1946,22 +1951,154 @@ public class DataStatsServiceImpl implements DataStatsService { formDTO.setStartTime(format.format(yesterday)); } - //2.查询组织现在,判断查询下级组织还是网格数据 + //2.查询组织信息,判断查询下级组织还是网格数据 ScreenAgencyOrGridListDTO agencyGrid = indexService.getSubAgencyOrGridList(formDTO.getAgencyId()); if (null == agencyGrid) { return new ArrayList<>(); } - List idList; - if (!"community".equals(agencyGrid.getLevel())) { - //组织层级用户、群组、话题、议题、项目、巡查数据查询 - idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getAgencyId).collect(Collectors.toList()); - } else { - //网格层级用户、群组、话题、议题、项目、巡查数据查询 - idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getGridId).collect(Collectors.toList()); + //组织或网格Id集合 + List idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList()); + formDTO.setDataType(!"community".equals(agencyGrid.getLevel()) ? "agency" : "grid"); + formDTO.setIdList(idList); + + //3.查询截止日期用户、群组、话题、议题、项目、巡查数据 + List userEnd = dataStatsDao.regUserList(formDTO); + List groupEnd = dataStatsDao.groupList(formDTO); + List topicEnd = dataStatsDao.topicList(formDTO); + List issueEnd = dataStatsDao.issueList(formDTO); + List projectEnd = dataStatsDao.projectList(formDTO); + List patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO); + //4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据 + List userStart = new ArrayList<>(); + List groupStart = new ArrayList<>(); + List topicStart = new ArrayList<>(); + List issueStart = new ArrayList<>(); + List projectStart = new ArrayList<>(); + if ("Interval".equals(formDTO.getType())) { + userStart = dataStatsDao.regUserList(formDTO); + groupStart = dataStatsDao.groupList(formDTO); + topicStart = dataStatsDao.topicList(formDTO); + issueStart = dataStatsDao.issueList(formDTO); + projectStart = dataStatsDao.projectList(formDTO); + } + //5.封装数据并返回 + List finalUserStart = userStart; + List finalGroupStart = groupStart; + List finalTopicStart = topicStart; + List finalIssueStart = issueStart; + List finalProjectStart = projectStart; + agencyGrid.getAgencyGridList().forEach(org -> { + CustomerDataManageResultDTO dto = new CustomerDataManageResultDTO(); + dto.setOrgId(org.getOrgId()); + dto.setOrgName(org.getOrgName()); + int user = 0; + int resi = 0; + int part = 0; + for (CustomerDataManageResultDTO u : userEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + user = u.getUserCount(); + resi = u.getResidentCount(); + part = u.getPartyMemberCount(); + if ("Interval".equals(formDTO.getType())) { + for (CustomerDataManageResultDTO s : finalUserStart) { + if (u.getOrgId().equals(s.getOrgId())) { + user = user - s.getUserCount(); + resi = resi - s.getResidentCount(); + part = part - s.getPartyMemberCount(); + } + } + } + } + } + int group = 0; + for (CustomerDataManageResultDTO u : groupEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + group = u.getGroupCount(); + if ("Interval".equals(formDTO.getType())) { + for (CustomerDataManageResultDTO s : finalGroupStart) { + if (u.getOrgId().equals(s.getOrgId())) { + group = group - s.getGroupCount(); + } + } + } + } + } + int topic = 0; + for (CustomerDataManageResultDTO u : topicEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + topic = u.getTopicCount(); + if ("Interval".equals(formDTO.getType())) { + for (CustomerDataManageResultDTO s : finalTopicStart) { + if (u.getOrgId().equals(s.getOrgId())) { + topic = topic - s.getTopicCount(); + } + } + } + } + } + int issue = 0; + for (CustomerDataManageResultDTO u : issueEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + issue = u.getIssueCount(); + if ("Interval".equals(formDTO.getType())) { + for (CustomerDataManageResultDTO s : finalIssueStart) { + if (u.getOrgId().equals(s.getOrgId())) { + issue = issue - s.getIssueCount(); + } + } + } + } + } + int project = 0; + int closed = 0; + for (CustomerDataManageResultDTO u : projectEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + project = u.getProjectCount(); + closed = u.getClosedProjectCount(); + if ("Interval".equals(formDTO.getType())) { + for (CustomerDataManageResultDTO s : finalProjectStart) { + if (u.getOrgId().equals(s.getOrgId())) { + project = project - s.getProjectCount(); + closed = closed - s.getClosedProjectCount(); + } + } + } + } + } + int patro = 0; + int patroCount = 0; + String patrolDuration = ""; + int patrolDurationInteger = 0; + List list = new ArrayList<>(); + for (CustomerDataManageResultDTO u : patrolEnd) { + if (org.getOrgId().equals(u.getOrgId())) { + patroCount += u.getPatrolCount(); + patrolDurationInteger += u.getPatrolDurationInteger(); + list.add(u.getStaffId()); + } + } + HashSet set = new HashSet(list); + patro = set.size(); + Integer minutes = patrolDurationInteger / 60; + patrolDuration = (minutes / 60 > 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟"); + + dto.setUserCount(user); + dto.setResidentCount(resi); + dto.setPartyMemberCount(part); + dto.setGroupCount(group); + dto.setTopicCount(topic); + dto.setIssueCount(issue); + dto.setProjectCount(project); + dto.setClosedProjectCount(closed); + dto.setPatrolPeopleCount(patro); + dto.setPatrolCount(patroCount); + dto.setPatrolDuration(patrolDuration); + dto.setPatrolDurationInteger(patrolDurationInteger); - } - //3.封装数据并返回 - return null; + resultList.add(dto); + }); + + return resultList; } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java index e8ec143b3c..bd2e1ccf11 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java @@ -18,6 +18,8 @@ package com.epmet.dataaggre.service.epmetuser; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; +import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; @@ -40,4 +42,9 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService getPatrolSumList(List agencyList, String startDateId, String endDateId); + /** + * @Description 直属组织或网格下巡查数据 + * @author sun + */ + List patrolList(CustomerDataManageFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java index aad90034f3..22a2496ffe 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java @@ -4,6 +4,8 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao; +import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; +import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; @@ -36,4 +38,13 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl patrolList(CustomerDataManageFormDTO formDTO) { + return baseDao.patrolList(formDTO); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java index 6e97769b26..ea95c436a8 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java @@ -173,6 +173,7 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService { //2.根据组织级别判断查询直属组织或网格列表 List agencyList = new ArrayList<>(); List gridList = new ArrayList<>(); + List finalAgencyGridList = agencyGridList; if (!"community".equals(dto.getLevel())) { //2-1.直属下级组织列表 //2.判断客户是否存在子客户 @@ -183,11 +184,21 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService { list.add(dto.getCustomerId()); agencyList = evaluationIndexDao.getSubAgencyListByAgency(null, dto.getAreaCode(), list); } - agencyGridList = ConvertUtils.sourceToTarget(agencyList, ScreenAgencyOrGridListDTO.AgencyGrid.class); + agencyList.forEach(gr->{ + ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid(); + org.setOrgId(gr.getAgencyId()); + org.setOrgName(gr.getAgencyName()); + finalAgencyGridList.add(org); + }); } else { //2-2.直属下级网格列表 gridList = evaluationIndexDao.getSubGridList(agencyId); - agencyGridList = ConvertUtils.sourceToTarget(gridList, ScreenAgencyOrGridListDTO.AgencyGrid.class); + gridList.forEach(gr->{ + ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid(); + org.setOrgId(gr.getGridId()); + org.setOrgName(gr.getGridName()); + finalAgencyGridList.add(org); + }); } resultDTO.setLevel(dto.getLevel()); 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 9f99415f2b..8df88699ac 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 @@ -797,4 +797,220 @@ GROUP BY staff_id + + + + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml index 5642d17f40..1bcc9ef704 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml @@ -15,4 +15,45 @@ + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml index afa7e56c2d..d140a0dbf3 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml @@ -76,6 +76,7 @@ WHERE del_flag = '0' AND parent_agency_id = #{agencyId} + ORDER BY CONVERT(grid_name USING gbk) ASC