Browse Source

网格议题统计

master
zhaoqifeng 5 years ago
parent
commit
c3946a9e50
  1. 31
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/issue/IssueGridDTO.java
  2. 32
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/issue/IssueProjectDTO.java
  3. 31
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/ProjectGridDTO.java
  4. 52
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/StatsIssueDao.java
  5. 22
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectDao.java
  6. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactIssueAgencyMonthlyDao.java
  7. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactIssueGridMonthlyDao.java
  8. 51
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueService.java
  9. 27
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueServiceImpl.java
  10. 32
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsIssueService.java
  11. 550
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsIssueServiceImpl.java
  12. 21
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java
  13. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  14. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactIssueAgencyMonthlyService.java
  15. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactIssueGridMonthlyService.java
  16. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactIssueAgencyMonthlyServiceImpl.java
  17. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactIssueGridMonthlyServiceImpl.java
  18. 84
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/StatsIssueDao.xml
  19. 28
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml
  20. 21
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactIssueAgencyMonthlyDao.xml
  21. 23
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactIssueGridMonthlyDao.xml

31
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/issue/IssueGridDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.issue;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/6/19 13:56
*/
@Data
public class IssueGridDTO implements Serializable {
private static final long serialVersionUID = 4681179503519406263L;
/**
* 组织ID
*/
private String agencyId;
/**
* 上级ID
*/
private String gridId;
/**
* 状态
*/
private String status;
/**
* 数量
*/
private Integer count;
}

32
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/issue/IssueProjectDTO.java

@ -0,0 +1,32 @@
package com.epmet.dto.issue;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/6/19 17:28
*/
@Data
public class IssueProjectDTO implements Serializable {
private static final long serialVersionUID = -6457792985830058324L;
/**
* 议题ID
*/
private String issueId;
/**
* 项目ID
*/
private String projectId;
/**
* 网格ID
*/
private String gridId;
/**
* 状态
*/
private String status;
}

31
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/ProjectGridDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.project;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/6/19 16:58
*/
@Data
public class ProjectGridDTO implements Serializable {
private static final long serialVersionUID = 7176541257563571224L;
/**
* 项目ID
*/
private String projectId;
/**
* 组织ID
*/
private String agencyId;
/**
* 议题ID
*/
private String issueId;
/**
* 状态
*/
private String status;
}

52
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/StatsIssueDao.java

@ -2,6 +2,8 @@ package com.epmet.dao.issue;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.issue.IssueAgencyDTO;
import com.epmet.dto.issue.IssueGridDTO;
import com.epmet.dto.issue.IssueProjectDTO;
import com.epmet.entity.issue.IssueEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -59,4 +61,54 @@ public interface StatsIssueDao extends BaseDao<IssueEntity> {
* @Description 根据客户Id查询议题库已转项目的网格项目关系数据
**/
List<IssueEntity> selectGridProjectList(@Param("customerId") String customerId);
/**
* 获取当前日期网格下议题统计结果
*
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
* @author zhaoqifeng
* @date 2020/6/17 14:13
*/
List<IssueGridDTO> selectGridIssueTotal(@Param("customerId") String customerId, @Param("date") String date);
/**
* 获取当前日期网格下议题增量
* @author zhaoqifeng
* @date 2020/6/18 9:55
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> selectGridIssueInc(@Param("customerId") String customerId, @Param("date") String date);
/**
* 网格已关闭议题统计
* @author zhaoqifeng
* @date 2020/6/18 14:41
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> selectGridClosedIssueTotal(@Param("customerId") String customerId, @Param("date") String date);
/**
* 网格已关闭议题增量
* @author zhaoqifeng
* @date 2020/6/18 14:41
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> selectGridClosedIssueInc(@Param("customerId") String customerId, @Param("date") String date);
/**
* 查询客户下议题和项目关系
* @author zhaoqifeng
* @date 2020/6/19 17:34
* @param customerId
* @return java.util.List<com.epmet.dto.issue.IssueProjectDTO>
*/
List<IssueProjectDTO> selectIssueProjectList(@Param("customerId") String customerId);
}

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

@ -19,6 +19,7 @@ package com.epmet.dao.project;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.entity.project.ProjectEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -60,4 +61,25 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
* @return java.util.List<com.epmet.dto.project.ProjectAgencyDTO>
*/
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>
*/
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>
*/
List<ProjectGridDTO> selectGridClosedProjectInc(@Param("customerId") String customerId, @Param("date") String date);
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactIssueAgencyMonthlyDao.java

@ -18,8 +18,12 @@
package com.epmet.dao.stats;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.stats.FactIssueAgencyMonthlyDTO;
import com.epmet.entity.stats.FactIssueAgencyMonthlyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 组织机关议题数量(按月)
@ -29,5 +33,14 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface FactIssueAgencyMonthlyDao extends BaseDao<FactIssueAgencyMonthlyEntity> {
/**
* 统计机关议题各个指标月度增量
* @author zhaoqifeng
* @date 2020/6/19 10:13
* @param customerId
* @param monthId
* @return java.util.List<com.epmet.dto.stats.FactIssueAgencyMonthlyDTO>
*/
List<FactIssueAgencyMonthlyDTO> selectAgencyMonthlyInc(@Param("customerId") String customerId, @Param("monthId") String monthId);
}

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/FactIssueGridMonthlyDao.java

@ -18,8 +18,12 @@
package com.epmet.dao.stats;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.stats.FactIssueGridMonthlyDTO;
import com.epmet.entity.stats.FactIssueGridMonthlyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 网格议题数量(按月)
@ -29,5 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface FactIssueGridMonthlyDao extends BaseDao<FactIssueGridMonthlyEntity> {
/**
* 统计网格议题各个指标月度增量
* @author zhaoqifeng
* @date 2020/6/19 10:41
* @param customerId
* @param monthId
* @return java.util.List<com.epmet.dto.stats.FactIssueGridMonthlyDTO>
*/
List<FactIssueGridMonthlyDTO> selectGridMonthlyInc(@Param("customerId") String customerId, @Param("monthId") String monthId);
}

51
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueService.java

@ -1,6 +1,8 @@
package com.epmet.service.Issue;
import com.epmet.dto.issue.IssueAgencyDTO;
import com.epmet.dto.issue.IssueGridDTO;
import com.epmet.dto.issue.IssueProjectDTO;
import com.epmet.entity.issue.IssueEntity;
import java.util.List;
@ -57,4 +59,53 @@ public interface IssueService {
* @Description 根据客户Id查询议题库已转项目的网格项目关系数据
**/
List<IssueEntity> getGridProjectList(String customerId);
/**
* 获取以网格为单位议题统计结果
* @author zhaoqifeng
* @date 2020/6/19 14:34
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> getGridIssueTotal(String customerId, String date);
/**
* 获取当前日期网格下议题增量
* @author zhaoqifeng
* @date 2020/6/18 9:56
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> getGridIssueInc(String customerId, String date);
/**
* 获取截止当前日期网格下已关闭议题统计
* @author zhaoqifeng
* @date 2020/6/18 9:56
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> getGridClosedIssueTotal(String customerId, String date);
/**
* 获取当前日期网格下已关闭议题增量
* @author zhaoqifeng
* @date 2020/6/18 9:56
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.issue.IssueGridDTO>
*/
List<IssueGridDTO> getGridClosedIssueInc(String customerId, String date);
/**
* 获取议题项目关系
* @author zhaoqifeng
* @date 2020/6/19 17:40
* @param customerId
* @return java.util.List<com.epmet.dto.issue.IssueProjectDTO>
*/
List<IssueProjectDTO> getIssueProjectList(String customerId);
}

27
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueServiceImpl.java

@ -4,6 +4,8 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.issue.StatsIssueDao;
import com.epmet.dto.issue.IssueAgencyDTO;
import com.epmet.dto.issue.IssueGridDTO;
import com.epmet.dto.issue.IssueProjectDTO;
import com.epmet.entity.issue.IssueEntity;
import com.epmet.service.Issue.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
@ -73,4 +75,29 @@ public class IssueServiceImpl implements IssueService {
public List<IssueEntity> getGridProjectList(String customerId) {
return statsIssueDao.selectGridProjectList(customerId);
}
@Override
public List<IssueGridDTO> getGridIssueTotal(String customerId, String date) {
return statsIssueDao.selectGridIssueTotal(customerId, date);
}
@Override
public List<IssueGridDTO> getGridIssueInc(String customerId, String date) {
return statsIssueDao.selectGridIssueInc(customerId, date);
}
@Override
public List<IssueGridDTO> getGridClosedIssueTotal(String customerId, String date) {
return statsIssueDao.selectGridClosedIssueTotal(customerId, date);
}
@Override
public List<IssueGridDTO> getGridClosedIssueInc(String customerId, String date) {
return statsIssueDao.selectGridClosedIssueInc(customerId, date);
}
@Override
public List<IssueProjectDTO> getIssueProjectList(String customerId) {
return statsIssueDao.selectIssueProjectList(customerId);
}
}

32
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsIssueService.java

@ -9,7 +9,7 @@ import java.util.Date;
*/
public interface StatsIssueService {
/**
* 机关下议题统计
* 机关下议题统计
* @author zhaoqifeng
* @date 2020/6/17 16:53
* @param customerId
@ -17,4 +17,34 @@ public interface StatsIssueService {
* @return void
*/
void saveIssueAgencyDaily(String customerId, Date date);
/**
* 机关下议题月统计
* @author zhaoqifeng
* @date 2020/6/18 17:39
* @param customerId
* @param date
* @return void
*/
void saveIssueAgencyMonthly(String customerId, Date date);
/**
* 机关下网格议题日统计
* @author zhaoqifeng
* @date 2020/6/19 13:53
* @param customerId
* @param date
* @return void
*/
void saveIssueGridDaily(String customerId, Date date);
/**
* 机关下网格议题月统计
* @author zhaoqifeng
* @date 2020/6/19 13:53
* @param customerId
* @param date
* @return void
*/
void saveIssueGridMonthly(String customerId, Date date);
}

550
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsIssueServiceImpl.java

@ -1,27 +1,30 @@
package com.epmet.service.impl;
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.IssueConstant;
import com.epmet.dto.issue.IssueAgencyDTO;
import com.epmet.dto.issue.IssueGridDTO;
import com.epmet.dto.issue.IssueProjectDTO;
import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.dto.stats.DimAgencyDTO;
import com.epmet.entity.stats.FactIssueAgencyDailyEntity;
import com.epmet.entity.stats.FactIssueAgencyMonthlyEntity;
import com.epmet.dto.stats.FactIssueAgencyMonthlyDTO;
import com.epmet.dto.stats.FactIssueGridMonthlyDTO;
import com.epmet.entity.stats.*;
import com.epmet.service.Issue.IssueService;
import com.epmet.service.StatsIssueService;
import com.epmet.service.project.ProjectService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.FactIssueAgencyDailyService;
import com.epmet.service.stats.*;
import com.epmet.util.DimIdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author zhaoqifeng
@ -35,9 +38,15 @@ public class StatsIssueServiceImpl implements StatsIssueService {
@Autowired
private DimAgencyService dimAgencyService;
@Autowired
private DimGridService dimGridService;
@Autowired
private ProjectService projectService;
@Autowired
private FactIssueAgencyDailyService factIssueAgencyDailyService;
@Autowired
private FactIssueAgencyMonthlyService factIssueAgencyMonthlyService;
@Autowired
private FactIssueGridMonthlyService factIssueGridMonthlyService;
@Override
public void saveIssueAgencyDaily(String customerId, Date date) {
@ -51,9 +60,9 @@ public class StatsIssueServiceImpl implements StatsIssueService {
//获取机关下议题各种状态的数目增量
List<IssueAgencyDTO> issueAgencyIncList = issueService.getAgencyIssueInc(customerId, dateString);
//获取机关下已关闭议题统计
List<IssueAgencyDTO> issueAgencyClosedTotalList = issueService.getAgencyIssueInc(customerId, dateString);
List<IssueAgencyDTO> issueAgencyClosedTotalList = issueService.getAgencyClosedIssueTotal(customerId, dateString);
//获取机关下已关闭议题增量
List<IssueAgencyDTO> issueAgencyClosedIncList = issueService.getAgencyIssueInc(customerId, dateString);
List<IssueAgencyDTO> issueAgencyClosedIncList = issueService.getAgencyClosedIssueInc(customerId, dateString);
//已结案项目统计
List<ProjectAgencyDTO> projectAgencyClosedTotalList = projectService.getAgencyClosedProjectTotal(customerId, dateString);
//已结案项目增量
@ -95,20 +104,460 @@ public class StatsIssueServiceImpl implements StatsIssueService {
}
}
list.add(entity);
}
//批量插入
factIssueAgencyDailyService.insertBatch(list);
}
@Override
public void saveIssueAgencyMonthly(String customerId, Date date) {
String dateString = DateUtils.format(date);
DimAgencyDTO dimAgencyDTO = new DimAgencyDTO();
dimAgencyDTO.setCustomerId(customerId);
//获取当前客户下所有机关
List<DimAgencyDTO> agencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO);
//获取机关下议题各种状态的数目统计
List<IssueAgencyDTO> issueAgencyTotalList = issueService.getAgencyIssueTotal(customerId);
//获取机关下已关闭议题统计
List<IssueAgencyDTO> issueAgencyClosedTotalList = issueService.getAgencyClosedIssueTotal(customerId, dateString);
//已结案项目统计
List<ProjectAgencyDTO> projectAgencyClosedTotalList = projectService.getAgencyClosedProjectTotal(customerId, dateString);
//获取日期相关维度
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date);
//统计机关下议题各个指标月度增量
List<FactIssueAgencyMonthlyDTO> issueAgencyMonthlyIncList = factIssueAgencyMonthlyService.getAgencyMonthlyInc(customerId, dimId.getMonthId());
List<FactIssueAgencyMonthlyEntity> list = new ArrayList<>();
for (DimAgencyDTO agency : agencyList) {
FactIssueAgencyDailyEntity daily = initIssueAgencyDaily(dimId);
FactIssueAgencyMonthlyEntity monthly = initIssueAgencyMonthly(dimId);
String pIds;
if (null == agency.getPids() || agency.getPids().isEmpty()) {
pIds = agency.getPid().concat(":").concat(agency.getId());
} else {
pIds = ("0").concat(":").concat(agency.getPids()).concat(":").concat(agency.getId());
}
//总量统计
saveTotal(issueAgencyTotalList, agency, daily, pIds);
//已关闭议题已解决未解决统计
if (daily.getClosedTotal() > NumConstant.ZERO) {
saveClosedTotal(issueAgencyClosedTotalList, agency, daily, pIds);
}
//已关闭项目已解决未解决统计
if (daily.getShiftProjectTotal() > NumConstant.ZERO) {
saveClosedProjectTotal(projectAgencyClosedTotalList, agency, daily, pIds);
}
monthly = ConvertUtils.sourceToTarget(daily, FactIssueAgencyMonthlyEntity.class);
//各指标增量统计
for (int i = 0; i < issueAgencyMonthlyIncList.size(); i++) {
FactIssueAgencyMonthlyDTO dto = issueAgencyMonthlyIncList.get(i);
if (agency.getId().equals(dto.getAgencyId())) {
monthly.setIssueIncr(dto.getIssueIncr());
monthly.setShiftProjectIncr(dto.getShiftProjectIncr());
monthly.setClosedIncr(dto.getClosedIncr());
monthly.setClosedResolvedIncr(dto.getClosedResolvedIncr());
monthly.setClosedUnresolvedIncr(dto.getClosedUnresolvedIncr());
monthly.setClosedCaseIncr(dto.getClosedCaseIncr());
monthly.setClosedCaseResolvedIncr(dto.getClosedCaseResolvedIncr());
monthly.setClosedCaseUnresolvedIncr(dto.getClosedCaseUnresolvedIncr());
issueAgencyMonthlyIncList.remove(i);
break;
}
}
monthly.setCustomerId(agency.getCustomerId());
monthly.setAgencyId(agency.getId());
monthly.setPid(agency.getPid());
list.add(monthly);
}
//批量插入
factIssueAgencyMonthlyService.insertBatch(list);
}
@Override
public void saveIssueGridDaily(String customerId, Date date) {
String dateString = DateUtils.format(date);
DimAgencyDTO dimAgencyDTO = new DimAgencyDTO();
dimAgencyDTO.setCustomerId(customerId);
//获取日期相关维度
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date);
//获取客户下所有网格数据
List<DimGridEntity> gridList = dimGridService.getGridListByCustomerId(customerId);
//获取网格下议题各种状态的数目统计
List<IssueGridDTO> gridTotalList = issueService.getGridIssueTotal(customerId, dateString);
//获取网格下议题各种状态的增量统计
List<IssueGridDTO> gridIncList = issueService.getGridIssueInc(customerId, dateString);
//获取网格下已关闭议题各种状态的数目统计
List<IssueGridDTO> gridClosedTotalList = issueService.getGridClosedIssueTotal(customerId, dateString);
//获取网格下已关闭议题各种状态的增量统计
List<IssueGridDTO> gridClosedIncList = issueService.getGridClosedIssueInc(customerId, dateString);
//项目议题关系
List<IssueProjectDTO> issueProjectList = issueService.getIssueProjectList(customerId);
//已结案项目统计
List<ProjectGridDTO> closedProjectTotalList = projectService.getGridClosedProjectTotal(customerId, dateString);
//已结案项目增量
List<ProjectGridDTO> closedProjectIncList = projectService.getGridClosedProjectTotal(customerId, dateString);
Map<String, Long> resolveMap= new HashMap<>();
Map<String, Long> unResolveMap = new HashMap<>();
Map<String, Long> resolveIncMap = new HashMap<>();
Map<String, Long> unResolveIncMap = new HashMap<>();
if (null != issueProjectList) {
List<IssueProjectDTO> totalList = issueProjectList.stream().flatMap(ip ->
closedProjectTotalList.stream().filter(closed -> ip.getIssueId().equals(closed.getIssueId())).map(project -> {
IssueProjectDTO dto = new IssueProjectDTO();
dto.setIssueId(ip.getIssueId());
dto.setGridId(ip.getGridId());
dto.setProjectId(ip.getProjectId());
dto.setStatus(project.getStatus());
return dto;
})).collect(Collectors.toList());
Map<String, List<IssueProjectDTO>> totalMap =
totalList.stream().collect(Collectors.groupingBy(IssueProjectDTO::getStatus));
List<IssueProjectDTO> resolveList = totalMap.get(IssueConstant.RESLOVED);
List<IssueProjectDTO> unResolveList = totalMap.get(IssueConstant.UNRESLOVED);
resolveMap = resolveList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId, Collectors.counting()));
unResolveMap = unResolveList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId,
Collectors.counting()));
List<IssueProjectDTO> incList = issueProjectList.stream().flatMap(ip ->
closedProjectIncList.stream().filter(closed -> ip.getIssueId().equals(closed.getIssueId())).map(project -> {
IssueProjectDTO dto = new IssueProjectDTO();
dto.setIssueId(ip.getIssueId());
dto.setGridId(ip.getGridId());
dto.setProjectId(ip.getProjectId());
dto.setStatus(project.getStatus());
return dto;
})).collect(Collectors.toList());
Map<String, List<IssueProjectDTO>> incMap =
incList.stream().collect(Collectors.groupingBy(IssueProjectDTO::getStatus));
List<IssueProjectDTO> resolveIncList = incMap.get(IssueConstant.RESLOVED);
List<IssueProjectDTO> unResolveIncList = incMap.get(IssueConstant.UNRESLOVED);
resolveIncMap = resolveIncList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId, Collectors.counting()));
unResolveIncMap = unResolveIncList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId,
Collectors.counting()));
}
List<FactIssueGridDailyEntity> list = new ArrayList<>();
for (DimGridEntity grid : gridList) {
FactIssueGridDailyEntity entity = initIssueGridDaily(dimId);
entity.setCustomerId(grid.getCustomerId());
entity.setAgencyId(grid.getId());
//总量统计
saveGridTotal(gridTotalList, grid, entity);
//增量统计
saveGridInc(gridIncList, grid, entity);
if (entity.getClosedTotal() > NumConstant.ZERO) {
//已关闭议题已解决未解决数量统计
saveGridClosedTotal(gridClosedTotalList, grid, entity);
if (entity.getClosedIncr() > NumConstant.ZERO) {
//已关闭议题已解决未解决增量统计
saveGridClosedInc(gridClosedIncList, grid, entity);
}
}
//已关闭项目已解决未解决统计
saveClosedProject(resolveMap, unResolveMap, resolveIncMap, unResolveIncMap, grid, entity);
}
}
@Override
public void saveIssueGridMonthly(String customerId, Date date) {
String dateString = DateUtils.format(date);
DimAgencyDTO dimAgencyDTO = new DimAgencyDTO();
dimAgencyDTO.setCustomerId(customerId);
//获取日期相关维度
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date);
//获取客户下所有网格数据
List<DimGridEntity> gridList = dimGridService.getGridListByCustomerId(customerId);
//获取网格下议题各种状态的数目统计
List<IssueGridDTO> gridTotalList = issueService.getGridIssueTotal(customerId, dateString);
//获取网格下已关闭议题各种状态的数目统计
List<IssueGridDTO> gridClosedTotalList = issueService.getGridClosedIssueTotal(customerId, dateString);
//增量统计
List<FactIssueGridMonthlyDTO> gridMonthlyIncListList = factIssueGridMonthlyService.getGridMonthlyInc(customerId, dimId.getMonthId());
//项目议题关系
List<IssueProjectDTO> issueProjectList = issueService.getIssueProjectList(customerId);
//已结案项目统计
List<ProjectGridDTO> closedProjectTotalList = projectService.getGridClosedProjectTotal(customerId, dateString);
Map<String, Long> resolveMap= new HashMap<>();
Map<String, Long> unResolveMap = new HashMap<>();
if (null != issueProjectList) {
List<IssueProjectDTO> totalList = issueProjectList.stream().flatMap(ip ->
closedProjectTotalList.stream().filter(closed -> ip.getIssueId().equals(closed.getIssueId())).map(project -> {
IssueProjectDTO dto = new IssueProjectDTO();
dto.setIssueId(ip.getIssueId());
dto.setGridId(ip.getGridId());
dto.setProjectId(ip.getProjectId());
dto.setStatus(project.getStatus());
return dto;
})).collect(Collectors.toList());
Map<String, List<IssueProjectDTO>> totalMap =
totalList.stream().collect(Collectors.groupingBy(IssueProjectDTO::getStatus));
List<IssueProjectDTO> resolveList = totalMap.get(IssueConstant.RESLOVED);
List<IssueProjectDTO> unResolveList = totalMap.get(IssueConstant.UNRESLOVED);
resolveMap = resolveList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId, Collectors.counting()));
unResolveMap = unResolveList.stream().collect(Collectors.groupingBy(IssueProjectDTO:: getGridId,
Collectors.counting()));
}
List<FactIssueGridMonthlyEntity> list = new ArrayList<>();
for (DimGridEntity grid : gridList) {
FactIssueGridDailyEntity daily = initIssueGridDaily(dimId);
FactIssueGridMonthlyEntity monthly = initIssueGridMonthly(dimId);
//总量统计
saveGridTotal(gridTotalList, grid, daily);
if (daily.getClosedTotal() > NumConstant.ZERO) {
//已关闭议题已解决未解决数量统计
saveGridClosedTotal(gridClosedTotalList, grid, daily);
}
monthly = ConvertUtils.sourceToTarget(daily, FactIssueGridMonthlyEntity.class);
//已关闭项目已解决未解决统计
int resolve = null == resolveMap.get(grid.getId())?0:resolveMap.get(grid.getId()).intValue();
int unResolve = null == unResolveMap.get(grid.getId())?0:unResolveMap.get(grid.getId()).intValue();
int total = resolve + unResolve;
monthly.setClosedCaseTotal(total);
monthly.setClosedCaseResolvedTotal(resolve);
monthly.setClosedCaseUnresolvedTotal(unResolve);
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
BigDecimal resolved = new BigDecimal(resolve);
BigDecimal unresolved = new BigDecimal(unResolve);
BigDecimal closed = new BigDecimal(total);
monthly.setClosedCaseResolvedPercent(resolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
monthly.setClosedCaseUnresolvedPercent(unresolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
//各指标增量统计
for (int i = 0; i < gridMonthlyIncListList.size(); i++) {
FactIssueGridMonthlyDTO dto = gridMonthlyIncListList.get(i);
if (grid.getId().equals(dto.getGridId())) {
monthly.setIssueIncr(dto.getIssueIncr());
monthly.setShiftProjectIncr(dto.getShiftProjectIncr());
monthly.setClosedIncr(dto.getClosedIncr());
monthly.setClosedResolvedIncr(dto.getClosedResolvedIncr());
monthly.setClosedUnresolvedIncr(dto.getClosedUnresolvedIncr());
monthly.setClosedCaseIncr(dto.getClosedCaseIncr());
monthly.setClosedCaseResolvedIncr(dto.getClosedCaseResolvedIncr());
monthly.setClosedCaseUnresolvedIncr(dto.getClosedCaseUnresolvedIncr());
gridMonthlyIncListList.remove(i);
break;
}
}
monthly.setCustomerId(grid.getCustomerId());
monthly.setAgencyId(grid.getId());
monthly.setGridId(grid.getId());
list.add(monthly);
}
factIssueGridMonthlyService.insertBatch(list);
}
/**
* 已关闭项目已解决未解决增量统计
* 已关闭项目已解决未解决统计
* @author zhaoqifeng
* @date 2020/6/18 17:23
* @date 2020/6/22 10:35
* @param resolveMap
* @param unResolveMap
* @param resolveIncMap
* @param unResolveIncMap
* @param grid
* @param entity
* @return void
*/
private void saveClosedProject(Map<String, Long> resolveMap, Map<String, Long> unResolveMap, Map<String, Long> resolveIncMap,
Map<String, Long> unResolveIncMap, DimGridEntity grid, FactIssueGridDailyEntity entity) {
int resolve = null == resolveMap.get(grid.getId())?0:resolveMap.get(grid.getId()).intValue();
int unResolve = null == unResolveMap.get(grid.getId())?0:unResolveMap.get(grid.getId()).intValue();
int resolveInc = null == resolveIncMap.get(grid.getId())?0:resolveIncMap.get(grid.getId()).intValue();
int unResolveInc = null == unResolveIncMap.get(grid.getId())?0:unResolveIncMap.get(grid.getId()).intValue();
int total = resolve + unResolve;
int inc = resolveInc + unResolveInc;
entity.setClosedCaseTotal(total);
entity.setClosedCaseResolvedTotal(resolve);
entity.setClosedCaseUnresolvedTotal(unResolve);
entity.setClosedCaseIncr(inc);
entity.setClosedCaseResolvedIncr(resolveInc);
entity.setClosedCaseUnresolvedIncr(unResolveInc);
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
BigDecimal resolved = new BigDecimal(resolve);
BigDecimal unresolved = new BigDecimal(unResolve);
BigDecimal closed = new BigDecimal(total);
entity.setClosedCaseResolvedPercent(resolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
entity.setClosedCaseUnresolvedPercent(unresolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
}
/**
* 已关闭议题已解决未解决增量统计
*
* @param list
* @param grid
* @param entity
* @return void
* @author zhaoqifeng
* @date 2020/6/19 15:56
*/
private void saveGridClosedInc(List<IssueGridDTO> list, DimGridEntity grid, FactIssueGridDailyEntity entity) {
//已解决数
int resolvedInc = NumConstant.ZERO;
//未解决数
int unresolvedInc = NumConstant.ZERO;
for (IssueGridDTO dto : list) {
if (grid.getId().equals(dto.getGridId())) {
if (IssueConstant.RESLOVED.equals(dto.getStatus())) {
//表决中议题数量
resolvedInc = dto.getCount();
} else if (IssueConstant.UNRESLOVED.equals(dto.getStatus())) {
//已转项目议题数量
unresolvedInc = dto.getCount();
}
}
}
entity.setClosedResolvedIncr(resolvedInc);
entity.setClosedUnresolvedIncr(unresolvedInc);
}
/**
* 已关闭议题已解决未解决总量级占比统计
*
* @param list
* @param grid
* @param entity
* @return void
* @author zhaoqifeng
* @date 2020/6/19 15:56
*/
private void saveGridClosedTotal(List<IssueGridDTO> list, DimGridEntity grid, FactIssueGridDailyEntity entity) {
//已解决数
int resolvedCount = NumConstant.ZERO;
//未解决数
int unresolvedCount = NumConstant.ZERO;
for (IssueGridDTO dto : list) {
if (grid.getId().equals(dto.getGridId())) {
if (IssueConstant.RESLOVED.equals(dto.getStatus())) {
//已解决议题数量
resolvedCount = dto.getCount();
} else if (IssueConstant.UNRESLOVED.equals(dto.getStatus())) {
//未解决议题数量
unresolvedCount = dto.getCount();
}
}
}
entity.setClosedResolvedTotal(resolvedCount);
entity.setClosedUnresolvedTotal(unresolvedCount);
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
BigDecimal resolved = new BigDecimal(resolvedCount);
BigDecimal unresolved = new BigDecimal(unresolvedCount);
BigDecimal closed = new BigDecimal(entity.getClosedTotal());
entity.setClosedResolvedPercent(resolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
entity.setClosedUnresolvedPercent(unresolved.multiply(hundred).divide(closed, NumConstant.TWO, RoundingMode.HALF_UP));
}
/**
* 网格议题增量统计
*
* @param list
* @param grid
* @param entity
* @return void
* @author zhaoqifeng
* @date 2020/6/19 15:57
*/
private void saveGridInc(List<IssueGridDTO> list, DimGridEntity grid, FactIssueGridDailyEntity entity) {
//表决中增量
int votingInc = NumConstant.ZERO;
//已转项目增量
int shiftInc = NumConstant.ZERO;
//已关闭增量
int closedInc = NumConstant.ZERO;
for (IssueGridDTO dto : list) {
if (grid.getId().equals(dto.getGridId())) {
if (IssueConstant.VOTING.equals(dto.getStatus())) {
//表决中议题数量
votingInc = dto.getCount();
} else if (IssueConstant.SHIFT_PROJECT.equals(dto.getStatus())) {
//已转项目议题数量
shiftInc = dto.getCount();
} else {
//已关闭议题数量
closedInc = dto.getCount();
}
}
}
int issueInc = votingInc + shiftInc + closedInc;
entity.setVotingIncr(votingInc);
entity.setShiftProjectIncr(shiftInc);
entity.setClosedIncr(closedInc);
entity.setIssueIncr(issueInc);
}
/**
* 网格议题总量统计
*
* @param list
* @param grid
* @param entity
* @return void
* @author zhaoqifeng
* @date 2020/6/19 15:57
*/
private void saveGridTotal(List<IssueGridDTO> list, DimGridEntity grid, FactIssueGridDailyEntity entity) {
//表决中数量
Integer votingCount = NumConstant.ZERO;
//已转项目数量
Integer shiftCount = NumConstant.ZERO;
//已关闭数量
Integer closedCount = NumConstant.ZERO;
for (IssueGridDTO dto : list) {
if (dto.getGridId().equals(grid.getId())) {
if (IssueConstant.VOTING.equals(dto.getStatus())) {
//表决中议题数量
votingCount = dto.getCount();
} else if (IssueConstant.SHIFT_PROJECT.equals(dto.getStatus())) {
//已转项目议题数量
shiftCount = dto.getCount();
} else {
//已关闭议题数量
closedCount = dto.getCount();
}
}
}
int issueTotal = votingCount + shiftCount + closedCount;
entity.setVotingTotal(votingCount);
entity.setShiftProjectTotal(shiftCount);
entity.setClosedTotal(closedCount);
entity.setIssueTotal(issueTotal);
if (NumConstant.ZERO != issueTotal) {
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED);
BigDecimal voting = new BigDecimal(votingCount);
BigDecimal shift = new BigDecimal(shiftCount);
BigDecimal closed = new BigDecimal(closedCount);
BigDecimal total = new BigDecimal(issueTotal);
entity.setVotingPercent(voting.multiply(hundred).divide(total, NumConstant.TWO, RoundingMode.HALF_UP));
entity.setShiftProjectPercent(shift.multiply(hundred).divide(total, NumConstant.TWO, RoundingMode.HALF_UP));
entity.setClosedPercent(closed.multiply(hundred).divide(total, NumConstant.TWO, RoundingMode.HALF_UP));
}
}
/**
* 已关闭项目已解决未解决增量统计
*
* @param list
* @param agency
* @param entity
* @param pIds
* @return void
* @author zhaoqifeng
* @date 2020/6/18 17:23
*/
private void saveClosedProjectInc(List<ProjectAgencyDTO> list, DimAgencyDTO agency, FactIssueAgencyDailyEntity entity, String pIds) {
//已解决数
@ -135,13 +584,14 @@ public class StatsIssueServiceImpl implements StatsIssueService {
/**
* 已关闭项目已解决未解决统计
* @author zhaoqifeng
* @date 2020/6/18 17:23
*
* @param list
* @param agency
* @param entity
* @param pIds
* @return void
* @author zhaoqifeng
* @date 2020/6/18 17:23
*/
private void saveClosedProjectTotal(List<ProjectAgencyDTO> list, DimAgencyDTO agency, FactIssueAgencyDailyEntity entity, String pIds) {
//已解决数
@ -286,7 +736,7 @@ public class StatsIssueServiceImpl implements StatsIssueService {
if (IssueConstant.RESLOVED.equals(issueAgency.getStatus())) {
//表决中议题数量
resolvedCount = resolvedCount + issueAgency.getCount();
} else if (IssueConstant.SHIFT_PROJECT.equals(issueAgency.getStatus())) {
} else if (IssueConstant.UNRESLOVED.equals(issueAgency.getStatus())) {
//已转项目议题数量
unresolvedCount = unresolvedCount + issueAgency.getCount();
}
@ -325,7 +775,7 @@ public class StatsIssueServiceImpl implements StatsIssueService {
if (IssueConstant.RESLOVED.equals(issueAgency.getStatus())) {
//表决中议题数量
resolvedInc = resolvedInc + issueAgency.getCount();
} else if (IssueConstant.SHIFT_PROJECT.equals(issueAgency.getStatus())) {
} else if (IssueConstant.UNRESLOVED.equals(issueAgency.getStatus())) {
//已转项目议题数量
unresolvedInc = unresolvedInc + issueAgency.getCount();
}
@ -419,4 +869,72 @@ public class StatsIssueServiceImpl implements StatsIssueService {
entity.setClosedCaseUnresolvedPercent(BigDecimal.ZERO);
return entity;
}
private FactIssueGridDailyEntity initIssueGridDaily(DimIdGenerator.DimIdBean dimIdBean) {
FactIssueGridDailyEntity entity = new FactIssueGridDailyEntity();
entity.setYearId(dimIdBean.getYearId());
entity.setQuarterId(dimIdBean.getQuarterId());
entity.setMonthId(dimIdBean.getMonthId());
entity.setWeekId(dimIdBean.getWeekId());
entity.setDateId(dimIdBean.getDateId());
entity.setIssueTotal(NumConstant.ZERO);
entity.setIssueIncr(NumConstant.ZERO);
entity.setVotingTotal(NumConstant.ZERO);
entity.setVotingIncr(NumConstant.ZERO);
entity.setVotingPercent(BigDecimal.ZERO);
entity.setShiftProjectTotal(NumConstant.ZERO);
entity.setShiftProjectIncr(NumConstant.ZERO);
entity.setShiftProjectPercent(BigDecimal.ZERO);
entity.setClosedIncr(NumConstant.ZERO);
entity.setClosedResolvedIncr(NumConstant.ZERO);
entity.setClosedUnresolvedIncr(NumConstant.ZERO);
entity.setClosedTotal(NumConstant.ZERO);
entity.setClosedResolvedTotal(NumConstant.ZERO);
entity.setClosedUnresolvedTotal(NumConstant.ZERO);
entity.setClosedPercent(BigDecimal.ZERO);
entity.setClosedResolvedPercent(BigDecimal.ZERO);
entity.setClosedUnresolvedPercent(BigDecimal.ZERO);
entity.setClosedCaseIncr(NumConstant.ZERO);
entity.setClosedCaseResolvedIncr(NumConstant.ZERO);
entity.setClosedCaseUnresolvedIncr(NumConstant.ZERO);
entity.setClosedCaseTotal(NumConstant.ZERO);
entity.setClosedCaseResolvedTotal(NumConstant.ZERO);
entity.setClosedCaseUnresolvedTotal(NumConstant.ZERO);
entity.setClosedCaseResolvedPercent(BigDecimal.ZERO);
entity.setClosedCaseUnresolvedPercent(BigDecimal.ZERO);
return entity;
}
private FactIssueGridMonthlyEntity initIssueGridMonthly(DimIdGenerator.DimIdBean dimIdBean) {
FactIssueGridMonthlyEntity entity = new FactIssueGridMonthlyEntity();
entity.setYearId(dimIdBean.getYearId());
entity.setQuarterId(dimIdBean.getQuarterId());
entity.setMonthId(dimIdBean.getMonthId());
entity.setIssueTotal(NumConstant.ZERO);
entity.setIssueIncr(NumConstant.ZERO);
entity.setVotingTotal(NumConstant.ZERO);
entity.setVotingIncr(NumConstant.ZERO);
entity.setVotingPercent(BigDecimal.ZERO);
entity.setShiftProjectTotal(NumConstant.ZERO);
entity.setShiftProjectIncr(NumConstant.ZERO);
entity.setShiftProjectPercent(BigDecimal.ZERO);
entity.setClosedIncr(NumConstant.ZERO);
entity.setClosedResolvedIncr(NumConstant.ZERO);
entity.setClosedUnresolvedIncr(NumConstant.ZERO);
entity.setClosedTotal(NumConstant.ZERO);
entity.setClosedResolvedTotal(NumConstant.ZERO);
entity.setClosedUnresolvedTotal(NumConstant.ZERO);
entity.setClosedPercent(BigDecimal.ZERO);
entity.setClosedResolvedPercent(BigDecimal.ZERO);
entity.setClosedUnresolvedPercent(BigDecimal.ZERO);
entity.setClosedCaseIncr(NumConstant.ZERO);
entity.setClosedCaseResolvedIncr(NumConstant.ZERO);
entity.setClosedCaseUnresolvedIncr(NumConstant.ZERO);
entity.setClosedCaseTotal(NumConstant.ZERO);
entity.setClosedCaseResolvedTotal(NumConstant.ZERO);
entity.setClosedCaseUnresolvedTotal(NumConstant.ZERO);
entity.setClosedCaseResolvedPercent(BigDecimal.ZERO);
entity.setClosedCaseUnresolvedPercent(BigDecimal.ZERO);
return entity;
}
}

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

@ -19,6 +19,7 @@ package com.epmet.service.project;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.entity.project.ProjectEntity;
import java.util.List;
@ -57,4 +58,24 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @return java.util.List<com.epmet.dto.project.ProjectAgencyDTO>
*/
List<ProjectAgencyDTO> getAgencyClosedProjectInc(String customerId, String date);
/**
* 已结案项目统计
* @author zhaoqifeng
* @date 2020/6/18 17:04
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectGridDTO>
*/
List<ProjectGridDTO> getGridClosedProjectTotal(String customerId, String date);
/**
* 已结案项目增量
* @author zhaoqifeng
* @date 2020/6/18 17:04
* @param customerId
* @param date
* @return java.util.List<com.epmet.dto.project.ProjectGridDTO>
*/
List<ProjectGridDTO> getGridClosedProjectInc(String customerId, String date);
}

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

@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.project.ProjectDao;
import com.epmet.dto.project.ProjectAgencyDTO;
import com.epmet.dto.project.ProjectGridDTO;
import com.epmet.entity.project.ProjectEntity;
import com.epmet.service.project.ProjectService;
import org.springframework.beans.factory.annotation.Autowired;
@ -59,4 +60,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return baseDao.selectAgencyClosedProjectInc(customerId, date);
}
@Override
public List<ProjectGridDTO> getGridClosedProjectTotal(String customerId, String date) {
return baseDao.selectGridClosedProjectTotal(customerId, date);
}
@Override
public List<ProjectGridDTO> getGridClosedProjectInc(String customerId, String date) {
return baseDao.selectGridClosedProjectInc(customerId, date);
}
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactIssueAgencyMonthlyService.java

@ -92,4 +92,14 @@ public interface FactIssueAgencyMonthlyService extends BaseService<FactIssueAgen
* @date 2020-06-17
*/
void delete(String[] ids);
/**
* 统计网格议题各个指标月度增量
* @author zhaoqifeng
* @date 2020/6/19 10:53
* @param customerId
* @param monthId
* @return java.util.List<com.epmet.dto.stats.FactIssueAgencyMonthlyDTO>
*/
List<FactIssueAgencyMonthlyDTO> getAgencyMonthlyInc(String customerId, String monthId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactIssueGridMonthlyService.java

@ -92,4 +92,14 @@ public interface FactIssueGridMonthlyService extends BaseService<FactIssueGridMo
* @date 2020-06-17
*/
void delete(String[] ids);
/**
* 议题增量月统计
* @author zhaoqifeng
* @date 2020/6/19 15:26
* @param customerId
* @param monthId
* @return java.util.List<com.epmet.dto.stats.FactIssueGridMonthlyDTO>
*/
List<FactIssueGridMonthlyDTO> getGridMonthlyInc(String customerId, String monthId);
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactIssueAgencyMonthlyServiceImpl.java

@ -98,4 +98,9 @@ public class FactIssueAgencyMonthlyServiceImpl extends BaseServiceImpl<FactIssue
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public List<FactIssueAgencyMonthlyDTO> getAgencyMonthlyInc(String customerId, String monthId) {
return baseDao.selectAgencyMonthlyInc(customerId, monthId);
}
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/FactIssueGridMonthlyServiceImpl.java

@ -97,4 +97,9 @@ public class FactIssueGridMonthlyServiceImpl extends BaseServiceImpl<FactIssueGr
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public List<FactIssueGridMonthlyDTO> getGridMonthlyInc(String customerId, String monthId) {
return baseDao.selectGridMonthlyInc(customerId, monthId);
}
}

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

@ -28,7 +28,7 @@
WHERE
i.DEL_FLAG = '0'
AND i.CUSTOMER_ID = #{customerId}
AND DATE(ip.ip.CREATED_TIME) = #{date}
AND DATE(ip.CREATED_TIME) = #{date}
GROUP BY
i.ORG_ID,
ip.ISSUE_STATUS
@ -67,6 +67,88 @@
ORG_ID,
RESOLVE_TYPE
</select>
<select id="selectGridIssueTotal" resultType="com.epmet.dto.issue.IssueGridDTO">
SELECT ORG_ID AS "agencyId",
GRID_ID AS "gridId",
ISSUE_STATUS AS "status",
COUNT(ID) AS "count"
FROM
issue
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND DATE(CREATED_TIME) = #{date}
GROUP BY
ORG_ID, GRID_ID, ISSUE_STATUS
</select>
<select id="selectGridIssueInc" resultType="com.epmet.dto.issue.IssueGridDTO">
SELECT
i.ORG_ID AS "agencyId",
i.GRID_ID AS "gridId",
ip.ISSUE_STATUS AS "status",
COUNT(ip.ID) AS "count"
FROM
issue i
INNER JOIN issue_process ip ON i.ID = ip.ISSUE_ID
AND ip.DEL_FLAG = '0'
WHERE
i.DEL_FLAG = '0'
AND i.CUSTOMER_ID = #{customerId}
AND DATE(ip.CREATED_TIME) = #{date}
GROUP BY
i.ORG_ID,
i.GRID_ID,
ip.ISSUE_STATUS
</select>
<select id="selectGridClosedIssueTotal" resultType="com.epmet.dto.issue.IssueGridDTO">
SELECT
ORG_ID AS "agencyId",
GRID_ID AS "gridId",
RESOLVE_TYPE AS "status",
COUNT( ID ) AS "count"
FROM
issue
WHERE
DEL_FLAG = '0'
AND ISSUE_STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND DATE(UPDATED_TIME) <![CDATA[ <= ]]> #{date}
GROUP BY
ORG_ID,
GRID_ID,
RESOLVE_TYPE
</select>
<select id="selectGridClosedIssueInc" resultType="com.epmet.dto.issue.IssueGridDTO">
SELECT
ORG_ID AS "agencyId",
GRID_ID AS "gridId",
RESOLVE_TYPE AS "status",
COUNT( ID ) AS "count"
FROM
issue
WHERE
DEL_FLAG = '0'
AND ISSUE_STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND DATE(UPDATED_TIME) = #{date}
GROUP BY
ORG_ID,
GRID_ID,
RESOLVE_TYPE
</select>
<select id="selectIssueProjectList" resultType="com.epmet.dto.issue.IssueProjectDTO">
SELECT
i.ID AS "issueId",
ipr.PROJECT_ID AS "projectId",
i.GRID_ID AS "gridId"
FROM
issue i
INNER JOIN issue_project_relation ipr ON i.ID = ipr.ISSUE_ID
WHERE
i.DEL_FLAG = '0'
AND ipr.DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
</select>
<select id="selectGridProjectList" resultType="com.epmet.entity.issue.IssueEntity">
SELECT

28
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml

@ -48,5 +48,33 @@
GROUP BY
AGENCY_ID, CLOSED_STATUS
</select>
<select id="selectGridClosedProjectTotal" resultType="com.epmet.dto.project.ProjectGridDTO">
SELECT
ID AS "projectId",
AGENCY_ID AS "agencyId",
ORIGIN_ID AS "issueId",
CLOSED_STATUS AS "status"
FROM project
WHERE
DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND UPDATED_TIME <![CDATA[ <= ]]> #{date}
</select>
<select id="selectGridClosedProjectInc" resultType="com.epmet.dto.project.ProjectGridDTO">
SELECT
ID AS "projectId",
AGENCY_ID AS "agencyId",
ORIGIN_ID AS "issueId",
CLOSED_STATUS AS "status"
FROM project
WHERE
DEL_FLAG = '0'
AND ORIGIN = 'issue'
AND STATUS = 'closed'
AND CUSTOMER_ID = #{customerId}
AND UPDATED_TIME = #{date}
</select>
</mapper>

21
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactIssueAgencyMonthlyDao.xml

@ -44,5 +44,26 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectAgencyMonthlyInc" resultType="com.epmet.dto.stats.FactIssueAgencyMonthlyDTO">
SELECT
da.ID AS "agencyId",
SUM(IFNULL(ISSUE_INCR, 0)) AS "issueIncr",
SUM(IFNULL(SHIFT_PROJECT_INCR, 0)) AS "shiftProjectIncr",
SUM(IFNULL(CLOSED_INCR, 0)) AS "closedIncr",
SUM(IFNULL(CLOSED_RESOLVED_INCR, 0)) AS "closedResolvedIncr",
SUM(IFNULL(CLOSED_UNRESOLVED_INCR, 0)) AS "closedUnresolvedIncr",
SUM(IFNULL(CLOSED_CASE_INCR, 0)) AS "closedCaseIncr",
SUM(IFNULL(CLOSED_CASE_RESOLVED_INCR, 0)) AS "closedCaseResolvedIncr",
SUM(IFNULL(CLOSED_CASE_UNRESOLVED_INCR, 0)) AS "closedCaseUnresolvedIncr"
FROM
dim_agency da
LEFT JOIN fact_issue_agency_daily fiad ON da.ID = fiad.AGENCY_ID AND fiad.DEL_FLAG = '0'
AND MONTH_ID = #{monthId}
WHERE
da.DEL_FLAG = '0'
AND da.CUSTOMER_ID = #{customerId}
GROUP BY
da.ID
</select>
</mapper>

23
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactIssueGridMonthlyDao.xml

@ -44,5 +44,26 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectGridMonthlyInc" resultType="com.epmet.dto.stats.FactIssueGridMonthlyDTO">
SELECT
dg.AGENCY_ID AS "agencyId",
dg.ID AS "gridId",
SUM(IFNULL(ISSUE_INCR, 0)) AS "issueIncr",
SUM(IFNULL(SHIFT_PROJECT_INCR, 0)) AS "shiftProjectIncr",
SUM(IFNULL(CLOSED_INCR, 0)) AS "closedIncr",
SUM(IFNULL(CLOSED_RESOLVED_INCR, 0)) AS "closedResolvedIncr",
SUM(IFNULL(CLOSED_UNRESOLVED_INCR, 0)) AS "closedUnresolvedIncr",
SUM(IFNULL(CLOSED_CASE_INCR, 0)) AS "closedCaseIncr",
SUM(IFNULL(CLOSED_CASE_RESOLVED_INCR, 0)) AS "closedCaseResolvedIncr",
SUM(IFNULL(CLOSED_CASE_UNRESOLVED_INCR, 0)) AS "closedCaseUnresolvedIncr"
FROM
dim_grid dg
LEFT JOIN fact_issue_grid_daily figd ON figd.GRID_ID = dg.ID AND figd.DEL_FLAG = 0
AND figd.MONTH_ID = #{monthId}
WHERE
dg.DEL_FLAG = 0
AND dg.CUSTOMER_ID = #{customerId}
GROUP BY
dg.AGENCY_ID, dg.ID
</select>
</mapper>
Loading…
Cancel
Save