Browse Source

基础数据部分查询接口及小组总数定时任务

dev
sunyuchao 5 years ago
parent
commit
598828cad6
  1. 12
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java
  2. 12
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java
  3. 33
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java
  4. 37
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java
  5. 33
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java
  6. 37
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java
  7. 33
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java
  8. 37
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java
  9. 33
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java
  10. 37
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java
  11. 92
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java
  12. 69
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  13. 62
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  14. 438
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  15. 172
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  16. 33
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java

12
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubAgencyFormDTO.java

@ -25,4 +25,16 @@ public class SubAgencyFormDTO implements Serializable {
private String dateId;
public interface Agency extends CustomerClientShowGroup{}
@Data
public static class Topic implements Serializable {
//组织Id
private String agencyId;
//话题数量
private Integer topicCount;
//话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing
private String topicStatus;
//话题已转议题数量
private Integer shiftedIssueTotal;
}
}

12
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/SubGridFormDTO.java

@ -25,4 +25,16 @@ public class SubGridFormDTO implements Serializable {
private String dateId;
public interface Agency extends CustomerClientShowGroup{}
@Data
public static class Topic implements Serializable {
//网格Id
private String gridId;
//话题数量
private Integer topicCount;
//话题状态 已关闭:closed、已屏蔽:hidden、 讨论中:discussing
private String topicStatus;
//话题已转议题数量
private Integer shiftedIssueTotal;
}
}

33
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyGroupResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织的直属下级组织群组数据-接口返参
* @Auth sun
*/
@Data
public class SubAgencyGroupResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String agencyName;
//党群小组总数
private Integer groupTotal = 0;
//楼院小组总数
private Integer ordinaryTotal = 0;
//楼院小组总数占比
private BigDecimal ordinaryRatio = bi;
//支部小组总数
private Integer branchTotal = 0;
//支部小组总数占比
private BigDecimal branchRatio = bi;
}

37
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyIssueResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织的直属下级组织议题数据-接口返参
* @Auth sun
*/
@Data
public class SubAgencyIssueResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String agencyName;
//议题总数
private Integer issueTotal = 0;
//表决中总数
private Integer votingTotal = 0;
//表决中总数占比
private BigDecimal votingRatio = bi;
//已处理总数
private Integer closedIssueTotal = 0;
//已处理总数占比
private BigDecimal closedIssueRatio = bi;
//已转项目总数
private Integer shiftProjectTotal = 0;
//已转项目总数占比
private BigDecimal shiftProjectRatio = bi;
}

33
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyProjectResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织的直属下级组织项目数据-接口返参
* @Auth sun
*/
@Data
public class SubAgencyProjectResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String agencyName;
//项目总数
private Integer projectTotal = 0;
//处理中总数
private Integer pendingTotal = 0;
//处理中总数占比
private BigDecimal pendingRatio = bi;
//已结案总数
private Integer closedProjectTotal = 0;
//已结案总数占比
private BigDecimal closedProjectRatio = bi;
}

37
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubAgencyTopicResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织的直属下级组织话题数据-接口返参
* @Auth sun
*/
@Data
public class SubAgencyTopicResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String agencyName;
//话题总数
private Integer topicTotal = 0;
//热议中总数
private Integer discussingTotal = 0;
//热议中总数占比
private BigDecimal discussingRatio = bi;
//已处理总数
private Integer closedTopicTotal = 0;
//已处理总数占比
private BigDecimal closedTopicRatio = bi;
//转议题总数
private Integer shiftIssueTotal = 0;
//转议题总数占比
private BigDecimal shiftIssueRatio = bi;
}

33
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridGroupResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织下直属网格列表群组数据-接口返参
* @Auth sun
*/
@Data
public class SubGridGroupResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//网格Id
private String gridId;
//网格名称
private String gridName;
//党群小组总数
private Integer groupTotal = 0;
//楼院小组总数
private Integer ordinaryTotal = 0;
//楼院小组总数占比
private BigDecimal ordinaryRatio = bi;
//支部小组总数
private Integer branchTotal = 0;
//支部小组总数占比
private BigDecimal branchRatio = bi;
}

37
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridIssueResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织下直属网格列表议题数据-接口返参
* @Auth sun
*/
@Data
public class SubGridIssueResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//网格Id
private String gridId;
//网格名称
private String gridName;
//议题总数
private Integer issueTotal = 0;
//表决中总数
private Integer votingTotal = 0;
//表决中总数占比
private BigDecimal votingRatio = bi;
//已处理总数
private Integer closedIssueTotal = 0;
//已处理总数占比
private BigDecimal closedIssueRatio = bi;
//已转项目总数
private Integer shiftProjectTotal = 0;
//已转项目总数占比
private BigDecimal shiftProjectRatio = bi;
}

33
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridProjectResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织下直属网格列表项目数据-接口返参
* @Auth sun
*/
@Data
public class SubGridProjectResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//网格Id
private String gridId;
//网格名称
private String gridName;
//项目总数
private Integer projectTotal = 0;
//处理中总数
private Integer pendingTotal = 0;
//处理中总数占比
private BigDecimal pendingRatio = bi;
//已结案总数
private Integer closedProjectTotal = 0;
//已结案总数占比
private BigDecimal closedProjectRatio = bi;
}

37
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/SubGridTopicResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 基础数据-查询当前组织下直属网格列表话题数据-接口返参
* @Auth sun
*/
@Data
public class SubGridTopicResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//网格Id
private String gridId;
//网格名称
private String gridName;
//话题总数
private Integer topicTotal = 0;
//热议中总数
private Integer discussingTotal = 0;
//热议中总数占比
private BigDecimal discussingRatio = bi;
//已处理总数
private Integer closedTopicTotal = 0;
//已处理总数占比
private BigDecimal closedTopicRatio = bi;
//转议题总数
private Integer shiftIssueTotal = 0;
//转议题总数占比
private BigDecimal shiftIssueRatio = bi;
}

92
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java

@ -5,9 +5,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -61,4 +59,92 @@ public class DataStatsController {
return new Result<List<SubGridUserResultDTO>>().ok(dataStatsService.subGridUser(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织群组数据
* @author sun
*/
@PostMapping("subagencygroup")
public Result<List<SubAgencyGroupResultDTO>> subAgencyGroup(@RequestBody SubAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class);
return new Result<List<SubAgencyGroupResultDTO>>().ok(dataStatsService.subAgencyGroup(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表群组数据
* @author sun
*/
@PostMapping("subgridgroup")
public Result<List<SubGridGroupResultDTO>> subGridGroup(@RequestBody SubGridFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class);
return new Result<List<SubGridGroupResultDTO>>().ok(dataStatsService.subGridGroup(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织话题数据
* @author sun
*/
@PostMapping("subagencytopic")
public Result<List<SubAgencyTopicResultDTO>> subAgencyTopic(@RequestBody SubAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class);
return new Result<List<SubAgencyTopicResultDTO>>().ok(dataStatsService.subAgencyTopic(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表话题数据
* @author sun
*/
@PostMapping("subgridtopic")
public Result<List<SubGridTopicResultDTO>> subGridTopic(@RequestBody SubGridFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class);
return new Result<List<SubGridTopicResultDTO>>().ok(dataStatsService.subGridTopic(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织议题数据
* @author sun
*/
@PostMapping("subagencyissue")
public Result<List<SubAgencyIssueResultDTO>> subAgencyIssue(@RequestBody SubAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class);
return new Result<List<SubAgencyIssueResultDTO>>().ok(dataStatsService.subAgencyIssue(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表议题数据
* @author sun
*/
@PostMapping("subgridissue")
public Result<List<SubGridIssueResultDTO>> subGridIssue(@RequestBody SubGridFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class);
return new Result<List<SubGridIssueResultDTO>>().ok(dataStatsService.subGridIssue(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织项目数据
* @author sun
*/
@PostMapping("subagencyproject")
public Result<List<SubAgencyProjectResultDTO>> subAgencyProject(@RequestBody SubAgencyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubAgencyFormDTO.Agency.class);
return new Result<List<SubAgencyProjectResultDTO>>().ok(dataStatsService.subAgencyProject(formDTO));
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表项目数据
* @author sun
*/
@PostMapping("subgridproject")
public Result<List<SubGridProjectResultDTO>> subGridProject(@RequestBody SubGridFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, SubGridFormDTO.Agency.class);
return new Result<List<SubGridProjectResultDTO>>().ok(dataStatsService.subGridProject(formDTO));
}
}

69
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -17,9 +17,9 @@
package com.epmet.dataaggre.dao.datastats;
import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.DimGridEntity;
import org.apache.ibatis.annotations.Mapper;
@ -77,7 +77,7 @@ public interface DataStatsDao {
List<DimAgencyEntity> getSubAgencyList(@Param("pid") String pid);
/**
* @Description 查询当前组织的直属下级组织信息
* @Description 查询直属下级组织注册用户日统计数据默认按用户总数降序
* @author sun
*/
List<SubAgencyUserResultDTO> getSubAgencyUser(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
@ -93,4 +93,65 @@ public interface DataStatsDao {
* @author sun
*/
List<SubGridUserResultDTO> getSubGridUser(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织小组日统计数据默认按群组总数降序
* @author sun
*/
List<SubAgencyGroupResultDTO> getSubAgencyGroup(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级小组日统计数据默认按群组总数降序
* @author sun
*/
List<SubGridGroupResultDTO> getSubGridGroup(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织状态话题-日统计数据
* @author sun
*/
List<SubAgencyFormDTO.Topic> getSubAgencyTopic(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织转议题话题-日统计数据表
* @author sun
*/
List<SubAgencyFormDTO.Topic> getSubAgencyTopicShiftIssue(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级状态话题-日统计数据
* @author sun
*/
List<SubGridFormDTO.Topic> getSubGridTopic(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级转议题话题-日统计数据表
* @author sun
*/
List<SubGridFormDTO.Topic> getSubGridTopicShiftIssue(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织议题日统计数据默认按议题总数降序
* @author sun
*/
List<SubAgencyIssueResultDTO> getSubAgencyIssue(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级议题日统计数据默认按议题总数降序
* @author sun
*/
List<SubGridIssueResultDTO> getSubGridIssue(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
/**
* @Description 查询直属下级组织项目日统计数据默认按项目总数降序
* @author sun
*/
List<SubAgencyProjectResultDTO> getSubAgencyProject(@Param("agencyIds") List<String> agencyIds, @Param("dateId") String dateId);
/**
* @Description 查询网格层级项目日统计数据默认按项目总数降序
* @author sun
*/
List<SubGridProjectResultDTO> getSubGridProject(@Param("gridIds") List<String> gridIds, @Param("dateId") String dateId);
}

62
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -3,9 +3,7 @@ package com.epmet.dataaggre.service.datastats;
import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import java.util.List;
@ -35,4 +33,62 @@ public interface DataStatsService {
* @author sun
*/
List<SubGridUserResultDTO> subGridUser(SubGridFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织群组数据
* @author sun
*/
List<SubAgencyGroupResultDTO> subAgencyGroup(SubAgencyFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表群组数据
* @author sun
*/
List<SubGridGroupResultDTO> subGridGroup(SubGridFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织话题数据
* @author sun
* @return
*/
List<SubAgencyTopicResultDTO> subAgencyTopic(SubAgencyFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表话题数据
* @author sun
* @return
*/
List<SubGridTopicResultDTO> subGridTopic(SubGridFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织议题数据
* @author sun
*/
List<SubAgencyIssueResultDTO> subAgencyIssue(SubAgencyFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表议题数据
* @author sun
*/
List<SubGridIssueResultDTO> subGridIssue(SubGridFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织项目数据
* @author sun
*/
List<SubAgencyProjectResultDTO> subAgencyProject(SubAgencyFormDTO formDTO);
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表项目数据
* @author sun
*/
List<SubGridProjectResultDTO> subGridProject(SubGridFormDTO formDTO);
}

438
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -1,7 +1,6 @@
package com.epmet.dataaggre.service.datastats.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
@ -9,9 +8,7 @@ import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.AgencyBasicDataResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubAgencyUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.SubGridUserResultDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.DimGridEntity;
import com.epmet.dataaggre.service.datastats.DataStatsService;
@ -23,9 +20,8 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -51,7 +47,7 @@ public class DataStatsServiceImpl implements DataStatsService {
AgencyBasicDataResultDTO resultDTO = new AgencyBasicDataResultDTO();
resultDTO.setAgencyId(formDTO.getAgencyId());
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.SIX);
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -72,7 +68,7 @@ public class DataStatsServiceImpl implements DataStatsService {
//2.查询组织下最新群组日统计数据
AgencyBasicDataResultDTO group = dataStatsDao.getAgnecyGroup(formDTO.getAgencyId(), formDTO.getDateId());
if (null != user) {
if (null != group) {
resultDTO.setGroupTotal(group.getGroupTotal());
resultDTO.setOrdinaryTotal(group.getOrdinaryTotal());
resultDTO.setOrdinaryRatio(group.getOrdinaryTotal() == 0 || group.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) group.getOrdinaryTotal() / (float) group.getGroupTotal())));
@ -138,7 +134,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubAgencyUserResultDTO> subAgencyUser(SubAgencyFormDTO formDTO) {
List<SubAgencyUserResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.SIX);
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -180,7 +176,7 @@ public class DataStatsServiceImpl implements DataStatsService {
public List<SubGridUserResultDTO> subGridUser(SubGridFormDTO formDTO) {
List<SubGridUserResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.SIX);
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
@ -213,4 +209,424 @@ public class DataStatsServiceImpl implements DataStatsService {
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织群组数据
* @author sun
*/
@Override
public List<SubAgencyGroupResultDTO> subAgencyGroup(SubAgencyFormDTO formDTO) {
List<SubAgencyGroupResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询当前组织的直属下级组织信息【机关维度】
List<DimAgencyEntity> subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId());
if(subAgencyList.size()<NumConstant.ONE){
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList());
//2.查询直属下级组织小组日统计数据,默认按群组总数降序
resultList = dataStatsDao.getSubAgencyGroup(agencyIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setOrdinaryRatio(re.getOrdinaryTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getOrdinaryTotal() / (float) re.getGroupTotal())));
re.setBranchRatio(re.getBranchTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getBranchTotal() / (float) re.getGroupTotal())));
subAgencyList.forEach(sub->{
if(re.getAgencyId().equals(sub.getId())){
re.setAgencyName(sub.getAgencyName());
}
});
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表群组数据
* @author sun
*/
@Override
public List<SubGridGroupResultDTO> subGridGroup(SubGridFormDTO formDTO) {
List<SubGridGroupResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询组织直属网格列表【网格维度】
List<DimGridEntity> gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId());
if(gridList.size()<NumConstant.ONE){
return resultList;
}
List<String> gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList());
//2.查询网格层级小组日统计数据,默认按群组总数降序
resultList = dataStatsDao.getSubGridGroup(gridIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setOrdinaryRatio(re.getOrdinaryTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getOrdinaryTotal() / (float) re.getGroupTotal())));
re.setBranchRatio(re.getBranchTotal() == 0 || re.getGroupTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getBranchTotal() / (float) re.getGroupTotal())));
gridList.forEach(sub->{
if(re.getGridId().equals(sub.getId())){
re.setGridName(sub.getGridName());
}
});
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织话题数据
* @author sun
* @return
*/
@Override
public List<SubAgencyTopicResultDTO> subAgencyTopic(SubAgencyFormDTO formDTO) {
List<SubAgencyTopicResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询当前组织的直属下级组织信息【机关维度】
List<DimAgencyEntity> subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId());
if(subAgencyList.size()<NumConstant.ONE){
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList());
//2.查询直属下级组织状态话题-日统计数据
//机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数
List<SubAgencyFormDTO.Topic> topic = dataStatsDao.getSubAgencyTopic(agencyIds, formDTO.getDateId());
//查询直属下级组织转议题话题-日统计数据表
List<SubAgencyFormDTO.Topic> topicShiftIssue = dataStatsDao.getSubAgencyTopicShiftIssue(agencyIds, formDTO.getDateId());
agencyIds.forEach(agencyId->{
SubAgencyTopicResultDTO resultDTO = new SubAgencyTopicResultDTO();
AtomicInteger topicTotal = new AtomicInteger(0);
AtomicInteger closedTotal = new AtomicInteger(0);
AtomicInteger hiddenTotal = new AtomicInteger(0);
AtomicInteger shiftIssueTotal = new AtomicInteger(0);
AtomicReference<String> agencyName = new AtomicReference<>("");
topic.forEach(t->{
if(t.getAgencyId().equals(agencyId)){
topicTotal.addAndGet(t.getTopicCount());
if (t.getTopicStatus().equals("closed")){ closedTotal.set(t.getTopicCount()); }
if (t.getTopicStatus().equals("hidden")){ hiddenTotal.set(t.getTopicCount()); }
}
});
topicShiftIssue.forEach(t->{
if(t.getAgencyId().equals(agencyId)){
shiftIssueTotal.addAndGet(t.getShiftedIssueTotal());
}
});
subAgencyList.forEach(sub->{
if(agencyId.equals(sub.getId())){
agencyName.set(sub.getAgencyName());
}
});
resultDTO.setAgencyId(agencyId);
resultDTO.setAgencyName(agencyName.get());
resultDTO.setTopicTotal(topicTotal.get());
resultDTO.setDiscussingTotal(topicTotal.get()-closedTotal.get()-hiddenTotal.get()-shiftIssueTotal.get());
resultDTO.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal())));
resultDTO.setClosedTopicTotal(closedTotal.get());
resultDTO.setClosedTopicRatio(resultDTO.getClosedTopicTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedTopicTotal() / (float) resultDTO.getTopicTotal())));
resultDTO.setShiftIssueTotal(shiftIssueTotal.get());
resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal())));
resultList.add(resultDTO);
});
//3.默认按话题总数降序
Collections.sort(resultList, new Comparator<SubAgencyTopicResultDTO>() {
@Override
public int compare(SubAgencyTopicResultDTO o1, SubAgencyTopicResultDTO o2) {
//升序
//return o1.getTopicTotal().compareTo(o2.getTopicTotal());
//降序
return o2.getTopicTotal().compareTo(o1.getTopicTotal());
}
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表话题数据
* @author sun
* @return
*/
@Override
public List<SubGridTopicResultDTO> subGridTopic(SubGridFormDTO formDTO) {
List<SubGridTopicResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询组织直属网格列表【网格维度】
List<DimGridEntity> gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId());
if(gridList.size()<NumConstant.ONE){
return resultList;
}
List<String> gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList());
//2.查询网格层级话题数据
//查询网格层级状态话题-日统计数据 机关日表里三种类型数据之和就是话题总量,讨论中数量与热议中不是一个概念,热议中=总量-关闭数-屏蔽数-转议题数
List<SubGridFormDTO.Topic> topic = dataStatsDao.getSubGridTopic(gridIds, formDTO.getDateId());
//查询网格层级转议题话题-日统计数据表
List<SubGridFormDTO.Topic> topicShiftIssue = dataStatsDao.getSubGridTopicShiftIssue(gridIds, formDTO.getDateId());
gridIds.forEach(gridId->{
SubGridTopicResultDTO resultDTO = new SubGridTopicResultDTO();
AtomicInteger topicTotal = new AtomicInteger(0);
AtomicInteger closedTotal = new AtomicInteger(0);
AtomicInteger hiddenTotal = new AtomicInteger(0);
AtomicInteger shiftIssueTotal = new AtomicInteger(0);
AtomicReference<String> gridName = new AtomicReference<>("");
topic.forEach(t->{
if(t.getGridId().equals(gridId)){
topicTotal.addAndGet(t.getTopicCount());
if (t.getTopicStatus().equals("closed")){ closedTotal.set(t.getTopicCount()); }
if (t.getTopicStatus().equals("hidden")){ hiddenTotal.set(t.getTopicCount()); }
}
});
topicShiftIssue.forEach(t->{
if(t.getGridId().equals(gridId)){
shiftIssueTotal.addAndGet(t.getShiftedIssueTotal());
}
});
gridList.forEach(sub->{
if(gridId.equals(sub.getId())){
gridName.set(sub.getGridName());
}
});
resultDTO.setGridId(gridId);
resultDTO.setGridName(gridName.get());
resultDTO.setTopicTotal(topicTotal.get());
resultDTO.setDiscussingTotal(topicTotal.get()-closedTotal.get()-hiddenTotal.get()-shiftIssueTotal.get());
resultDTO.setDiscussingRatio(resultDTO.getDiscussingTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getDiscussingTotal() / (float) resultDTO.getTopicTotal())));
resultDTO.setClosedTopicTotal(closedTotal.get());
resultDTO.setClosedTopicRatio(resultDTO.getClosedTopicTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getClosedTopicTotal() / (float) resultDTO.getTopicTotal())));
resultDTO.setShiftIssueTotal(shiftIssueTotal.get());
resultDTO.setShiftIssueRatio(resultDTO.getShiftIssueTotal() == 0 || resultDTO.getTopicTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) resultDTO.getShiftIssueTotal() / (float) resultDTO.getTopicTotal())));
resultList.add(resultDTO);
});
//3.默认按话题总数降序
Collections.sort(resultList, new Comparator<SubGridTopicResultDTO>() {
@Override
public int compare(SubGridTopicResultDTO o1, SubGridTopicResultDTO o2) {
//升序
//return o1.getTopicTotal().compareTo(o2.getTopicTotal());
//降序
return o2.getTopicTotal().compareTo(o1.getTopicTotal());
}
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织议题数据
* @author sun
*/
@Override
public List<SubAgencyIssueResultDTO> subAgencyIssue(SubAgencyFormDTO formDTO) {
List<SubAgencyIssueResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询当前组织的直属下级组织信息【机关维度】
List<DimAgencyEntity> subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId());
if(subAgencyList.size()<NumConstant.ONE){
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList());
//2.查询直属下级组织议题日统计数据,默认按议题总数降序
resultList = dataStatsDao.getSubAgencyIssue(agencyIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setVotingRatio(re.getVotingTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getVotingTotal() / (float) re.getIssueTotal())));
re.setClosedIssueRatio(re.getClosedIssueTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedIssueTotal() / (float) re.getIssueTotal())));
re.setShiftProjectRatio(re.getShiftProjectTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getShiftProjectTotal() / (float) re.getIssueTotal())));
subAgencyList.forEach(sub->{
if(re.getAgencyId().equals(sub.getId())){
re.setAgencyName(sub.getAgencyName());
}
});
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表议题数据
* @author sun
*/
@Override
public List<SubGridIssueResultDTO> subGridIssue(SubGridFormDTO formDTO) {
List<SubGridIssueResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询组织直属网格列表【网格维度】
List<DimGridEntity> gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId());
if(gridList.size()<NumConstant.ONE){
return resultList;
}
List<String> gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList());
//2.查询网格层级议题日统计数据,默认按议题总数降序
resultList = dataStatsDao.getSubGridIssue(gridIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setVotingRatio(re.getVotingTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getVotingTotal() / (float) re.getIssueTotal())));
re.setClosedIssueRatio(re.getClosedIssueTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedIssueTotal() / (float) re.getIssueTotal())));
re.setShiftProjectRatio(re.getShiftProjectTotal() == 0 || re.getIssueTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getShiftProjectTotal() / (float) re.getIssueTotal())));
gridList.forEach(sub->{
if(re.getGridId().equals(sub.getId())){
re.setGridName(sub.getGridName());
}
});
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织的直属下级组织项目数据
* @author sun
*/
@Override
public List<SubAgencyProjectResultDTO> subAgencyProject(SubAgencyFormDTO formDTO) {
List<SubAgencyProjectResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询当前组织的直属下级组织信息【机关维度】
List<DimAgencyEntity> subAgencyList = dataStatsDao.getSubAgencyList(formDTO.getAgencyId());
if(subAgencyList.size()<NumConstant.ONE){
return resultList;
}
List<String> agencyIds = subAgencyList.stream().map(DimAgencyEntity::getId).collect(Collectors.toList());
//2.查询直属下级组织项目日统计数据,默认按项目总数降序
resultList = dataStatsDao.getSubAgencyProject(agencyIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setPendingRatio(re.getPendingTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPendingTotal() / (float) re.getProjectTotal())));
re.setClosedProjectRatio(re.getClosedProjectTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedProjectTotal() / (float) re.getProjectTotal())));
subAgencyList.forEach(sub->{
if(re.getAgencyId().equals(sub.getId())){
re.setAgencyName(sub.getAgencyName());
}
});
});
return resultList;
}
/**
* @Param formDTO
* @Description 查询当前组织下直属网格列表项目数据
* @author sun
*/
@Override
public List<SubGridProjectResultDTO> subGridProject(SubGridFormDTO formDTO) {
List<SubGridProjectResultDTO> resultList = new ArrayList<>();
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.FOUR);
//入参有日期的则按具体时间执行,没有的则按当前时间前一天执行
if (StringUtils.isBlank(formDTO.getDateId())) {
Date yesterday = DateUtils.addDateDays(new Date(), -1);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
formDTO.setDateId(format.format(yesterday));
}
//1.查询组织直属网格列表【网格维度】
List<DimGridEntity> gridList = dataStatsDao.getSubGridList(formDTO.getAgencyId());
if(gridList.size()<NumConstant.ONE){
return resultList;
}
List<String> gridIds = gridList.stream().map(DimGridEntity::getId).collect(Collectors.toList());
//2.查询网格层级项目日统计数据,默认按项目总数降序
resultList = dataStatsDao.getSubGridProject(gridIds, formDTO.getDateId());
//3.封装数据并返回
resultList.forEach(re->{
re.setPendingRatio(re.getPendingTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getPendingTotal() / (float) re.getProjectTotal())));
re.setClosedProjectRatio(re.getClosedProjectTotal() == 0 || re.getProjectTotal() == 0 ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float) re.getClosedProjectTotal() / (float) re.getProjectTotal())));
gridList.forEach(sub->{
if(re.getGridId().equals(sub.getId())){
re.setGridName(sub.getGridName());
}
});
});
return resultList;
}
}

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

@ -65,7 +65,7 @@
closed_total AS closedIssueTotal,
shift_project_total AS shiftProjectTotal
FROM
fact_issue_agency_daily fiad
fact_issue_agency_daily
WHERE
del_flag = '0'
AND agency_id = #{agencyId}
@ -144,4 +144,174 @@
reg_total DESC
</select>
<select id="getSubAgencyGroup" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyGroupResultDTO">
SELECT
agency_id AS agencyId,
group_total AS groupTotal,
ordinary_total AS ordinaryTotal,
branch_total AS branchTotal
FROM
fact_group_total_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
ORDER BY
group_total DESC
</select>
<select id="getSubGridGroup" resultType="com.epmet.dataaggre.dto.datastats.result.SubGridGroupResultDTO">
SELECT
grid_id AS gridId,
group_total AS groupTotal,
ordinary_total AS ordinaryTotal,
branch_total AS branchTotal
FROM
fact_group_total_grid_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
ORDER BY
group_total DESC
</select>
<select id="getSubAgencyTopic" resultType="com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO$Topic">
SELECT
agency_id AS agencyId,
topic_count AS topicCount,
topic_status_id AS topicStatus
FROM
fact_topic_status_agency_daily
WHERE
del_flag = '0'
AND topic_status_id in('discussing','closed','hidden')<!-- 讨论中(热议中!=讨论中)、已处理、已屏蔽 -->
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getSubAgencyTopicShiftIssue" resultType="com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO$Topic">
SELECT
agency_id AS agencyId,
issue_total AS shiftedIssueTotal
FROM
fact_topic_issue_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
</select>
<select id="getSubGridTopic" resultType="com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO$Topic">
SELECT
grid_id AS gridId,
topic_count AS topicCount,
topic_status_id AS topicStatus
FROM
fact_topic_status_grid_daily
WHERE
del_flag = '0'
AND topic_status_id in('discussing','closed','hidden')<!-- 讨论中(热议中!=讨论中)、已处理、已屏蔽 -->
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
</select>
<select id="getSubGridTopicShiftIssue" resultType="com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO$Topic">
SELECT
grid_id AS gridId,
issue_total AS shiftedIssueTotal
FROM
fact_topic_issue_grid_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
</select>
<select id="getSubAgencyIssue" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyIssueResultDTO">
SELECT
agency_id AS agencyId,
issue_total AS issueTotal,
voting_total AS votingTotal,
closed_total AS closedIssueTotal,
shift_project_total AS shiftProjectTotal
FROM
fact_issue_agency_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
ORDER BY
issue_total DESC
</select>
<select id="getSubGridIssue" resultType="com.epmet.dataaggre.dto.datastats.result.SubGridIssueResultDTO">
SELECT
grid_id AS gridId,
issue_total AS issueTotal,
voting_total AS votingTotal,
closed_total AS closedIssueTotal,
shift_project_total AS shiftProjectTotal
FROM
fact_issue_grid_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
ORDER BY
issue_total DESC
</select>
<select id="getSubAgencyProject" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyProjectResultDTO">
SELECT
agency_id AS agencyId,
IFNULL(project_total, 0) AS "projectTotal",
IFNULL(pending_total, 0) AS "pendingTotal",
IFNULL(closed_total, 0) AS "closedProjectTotal"
FROM
fact_agency_project_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="agencyId" collection="agencyIds" open="AND (" separator="or" close=")" index="">
agency_id = #{agencyId}
</foreach>
ORDER BY
project_total DESC
</select>
<select id="getSubGridProject" resultType="com.epmet.dataaggre.dto.datastats.result.SubGridProjectResultDTO">
SELECT
grid_id AS gridId,
IFNULL(project_total, 0) AS "projectTotal",
IFNULL(pending_total, 0) AS "pendingTotal",
IFNULL(closed_total, 0) AS "closedProjectTotal"
FROM
fact_grid_project_daily
WHERE
del_flag = '0'
AND date_id = #{dateId}
<foreach item="gridId" collection="gridIds" open="AND (" separator="or" close=")" index="">
grid_id = #{gridId}
</foreach>
ORDER BY
project_total DESC
</select>
</mapper>

33
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java

@ -5,7 +5,9 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.dto.group.form.GroupTotalFormDTO;
import com.epmet.dto.stats.form.CustomerIdAndDateIdFormDTO;
import com.epmet.service.StatsGroupService;
import com.epmet.service.evaluationindex.extract.todata.*;
import com.epmet.service.stats.DimCustomerPartymemberService;
import com.epmet.service.stats.DimCustomerService;
@ -50,6 +52,8 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService {
private FactOriginProjectCategoryDailyService originProjectCategoryDailyService;
@Autowired
private FactGroupActDailyService factGroupActDailyService;
@Autowired
private StatsGroupService statsGroupService;
@Override
@ -229,6 +233,35 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService {
}
});
//网格、组织小组总数日统计
threadPool.submit(() -> {
GroupTotalFormDTO formDTO = new GroupTotalFormDTO();
formDTO.setCustomerId(param.getCustomerId());
if (!isRange) {
formDTO.setDateId(param.getDateId());
try {
statsGroupService.gridGroupTotal(formDTO);
} catch (Exception e) {
log.error("小组总数-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e);
}
try {
statsGroupService.agencyGroupTotal(formDTO);
} catch (Exception e) {
log.error("小组总数-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e);
}
} else {
try {
statsGroupService.gridGroupTotal(formDTO);
} catch (Exception e) {
log.error("小组总数-网格日统计计算错误,参数:" + JSON.toJSONString(formDTO), e);
}
try {
statsGroupService.agencyGroupTotal(formDTO);
} catch (Exception e) {
log.error("小组总数-机关日统计计算错误,参数:" + JSON.toJSONString(formDTO), e);
}
}
});
submitProjectRelationData(param, finalDaysBetween);
}

Loading…
Cancel
Save