Browse Source

运营数据查询初版

dev_shibei_match
sunyuchao 4 years ago
parent
commit
e62e3fd471
  1. 6
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java
  2. 32
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
  3. 10
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java
  4. 27
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  5. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  6. 161
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  7. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  8. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  9. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java
  10. 216
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  11. 41
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  12. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml

6
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<String> idList;
//数据类型【组织agency 网格grid】
private String dataType;
}

32
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;
}

10
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<AgencyGrid> 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;
}
}

27
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<GridMemberPatrolListResultDTO> selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO);
/**
* @Description 直属组织或网格下注册用户数据
* @author sun
*/
List<CustomerDataManageResultDTO> regUserList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下群组数据
* @author sun
*/
List<CustomerDataManageResultDTO> groupList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下话题数据
* @author sun
*/
List<CustomerDataManageResultDTO> topicList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下议题数据
* @author sun
*/
List<CustomerDataManageResultDTO> issueList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下项目数据
* @author sun
*/
List<CustomerDataManageResultDTO> projectList(CustomerDataManageFormDTO formDTO);
}

8
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<StatsStaffPatrol
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(@Param("agencyFullIdList") List<String> agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId);
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
List<CustomerDataManageResultDTO> patrolList(CustomerDataManageFormDTO formDTO);
}

161
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<CustomerDataManageResultDTO> operateExport(CustomerDataManageFormDTO formDTO) throws ParseException {
List<CustomerDataManageResultDTO> 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<String> 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<String> idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList());
formDTO.setDataType(!"community".equals(agencyGrid.getLevel()) ? "agency" : "grid");
formDTO.setIdList(idList);
//3.查询截止日期用户、群组、话题、议题、项目、巡查数据
List<CustomerDataManageResultDTO> userEnd = dataStatsDao.regUserList(formDTO);
List<CustomerDataManageResultDTO> groupEnd = dataStatsDao.groupList(formDTO);
List<CustomerDataManageResultDTO> topicEnd = dataStatsDao.topicList(formDTO);
List<CustomerDataManageResultDTO> issueEnd = dataStatsDao.issueList(formDTO);
List<CustomerDataManageResultDTO> projectEnd = dataStatsDao.projectList(formDTO);
List<CustomerDataManageResultDTO> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO);
//4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
List<CustomerDataManageResultDTO> userStart = new ArrayList<>();
List<CustomerDataManageResultDTO> groupStart = new ArrayList<>();
List<CustomerDataManageResultDTO> topicStart = new ArrayList<>();
List<CustomerDataManageResultDTO> issueStart = new ArrayList<>();
List<CustomerDataManageResultDTO> 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<CustomerDataManageResultDTO> finalUserStart = userStart;
List<CustomerDataManageResultDTO> finalGroupStart = groupStart;
List<CustomerDataManageResultDTO> finalTopicStart = topicStart;
List<CustomerDataManageResultDTO> finalIssueStart = issueStart;
List<CustomerDataManageResultDTO> 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<String> 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;
}
}

7
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<StatsSta
*/
List<PatrolDailySumResult> getPatrolSumList(List<String> agencyList, String startDateId, String endDateId);
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
List<CustomerDataManageResultDTO> patrolList(CustomerDataManageFormDTO formDTO);
}

11
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<Stat
return baseDao.getPatrolSumList(agencyFullIdList,startDateId,endDateId);
}
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
@Override
public List<CustomerDataManageResultDTO> patrolList(CustomerDataManageFormDTO formDTO) {
return baseDao.patrolList(formDTO);
}
}

15
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<ScreenCustomerAgencyDTO> agencyList = new ArrayList<>();
List<ScreenCustomerGridDTO> gridList = new ArrayList<>();
List<ScreenAgencyOrGridListDTO.AgencyGrid> 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());

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

@ -797,4 +797,220 @@
GROUP BY staff_id
</select>
<select id="regUserList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.orgId, t.dateId, t.userCount, t.partyMemberCount,t.residentCount
FROM
(
SELECT DISTINCT
date_id dateId, reg_total userCount, partymember_total partyMemberCount, (reg_total - partymember_total) residentCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_reg_user_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_reg_user_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='type != "" and type == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
<if test='isPage == true '>
LIMIT #{pageNo}, #{pageSize}
</if>
</select>
<select id="groupList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.orgId, t.dateId, t.groupCount
FROM
(
SELECT DISTINCT
date_id dateId, group_total groupCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_group_total_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_group_total_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='type != "" and type == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
<if test='isPage == true '>
LIMIT #{pageNo}, #{pageSize}
</if>
</select>
<select id="topicList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.orgId, t.dateId, t.topicCount
FROM
(
SELECT DISTINCT
date_id dateId, topic_total topicCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_topic_total_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_topic_total_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='type != "" and type == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
<if test='isPage == true '>
LIMIT #{pageNo}, #{pageSize}
</if>
</select>
<select id="issueList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.orgId, t.dateId, t.issueCount
FROM
(
SELECT DISTINCT
date_id dateId, issue_total issueCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_issue_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_issue_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='type != "" and type == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
<if test='isPage == true '>
LIMIT #{pageNo}, #{pageSize}
</if>
</select>
<select id="projectList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.orgId, t.dateId, t.projectCount, t.closedProjectCount
FROM
(
SELECT DISTINCT
date_id dateId, project_total projectCount, closed_total closedProjectCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_agency_project_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_grid_project_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='type != "" and type == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
<if test='isPage == true '>
LIMIT #{pageNo}, #{pageSize}
</if>
</select>
</mapper>

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

@ -15,4 +15,45 @@
</foreach>
</select>
<select id="patrolList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO">
SELECT
t.dateId, t.orgId, t.staffId, sum(t.patrolCount),SUM(t.patrolDurationInteger)
FROM (
SELECT
date_id dateId, grid_id, staff_id staffId, patrol_total patrolCount, total_time patrolDurationInteger
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
</when>
<otherwise>
, grid_id orgId
</otherwise>
</choose>
FROM
stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND patrol_total > 0
<choose>
<when test='dataType == "agency"'>
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
) t
GROUP BY t.grid_id, t.staffId
</select>
</mapper>

2
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
</select>
<select id="getGovernRankList" resultType="com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO">
SELECT
@ -173,6 +174,7 @@
customer_id = #{customerId}
</foreach>
</if>
ORDER BY CONVERT(agency_name USING gbk) ASC
</select>
<!-- 根据组织ID查询组织名 -->

Loading…
Cancel
Save