Browse Source

【项目处理分析】事件总数查询

dev_shibei_match
sunyuchao 4 years ago
parent
commit
15dd331cb8
  1. 27
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 35
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java
  3. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java
  4. 14
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectTotalResultDTO.java
  5. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  6. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  7. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  8. 37
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  9. 48
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

27
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -890,4 +890,31 @@ public class DateUtils {
format = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD);
System.out.println(format);
}
/**
* @Author sun
* @Description 获取dateId对应的num天的dateId活monthId
* dateId yyyymmdd
* type[date;month]
* num[1;-1]
* 20211201 date 1 -> 20211202
* 20211201 month -1 -> 202111
**/
public static String dateOrmonthId(String dateId, String type, int num){
Calendar cal=Calendar.getInstance();
if (StringUtils.isNotBlank(dateId)){
cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD));
}
if("date".equals(type)){
cal.add(Calendar.DATE, num);
}else if("month".equals(type)){
cal.add(Calendar.MONTH, num);
}
Date time=cal.getTime();
if("month".equals(type)){
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMM).format(time);
}
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time);
}
}

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

@ -0,0 +1,35 @@
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 FactAgencyProjectResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String dateId;
//问题解决总数
private String monthId;
//党群自治占比
private Integer projectTotal = 0;
//网格自治占比
private Integer pendingTotal = 0;
//社区解决占比
private String pendingRatio = "0%";
//区直部门解决占比
private Integer closedTotal = 0;
//街道解决占比
private String closedRatio = "0%";
}

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java

@ -32,4 +32,9 @@ public class ProjectTotalFormDTO implements Serializable {
public interface Statuslist extends CustomerClientShowGroup {
}
//较昨日的dateId值
private String yeDateId;
//较dateId上月的monthId值
private String monthId;
}

14
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectTotalResultDTO.java

@ -17,18 +17,18 @@ public class ProjectTotalResultDTO implements Serializable {
//日期yyyymmdd
private String dateId;
//项目总数
private Integer projectTotal;
private Integer projectTotal = 0;
//较昨日数
private Integer dateIncr;
private Integer dateIncr = 0;
//较上月数
private Integer monthIncr;
private Integer monthIncr = 0;
//未结案项目数
private Integer pendingTotal;
private Integer pendingTotal = 0;
//为结案项目占比 xx%
private String pendingRatio;
private String pendingRatio = "0%";
//已结案项目数
private Integer closedTotal;
private Integer closedTotal = 0;
//已结案项目占比
private String closedRatio;
private String closedRatio = "0%";
}

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

@ -24,6 +24,7 @@ import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
@ -335,4 +336,10 @@ public interface DataStatsDao {
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> projectList(CustomerDataManageFormDTO formDTO);
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO);
}

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

@ -6,6 +6,7 @@ import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -247,4 +248,9 @@ public interface DataStatsService {
*/
CustomerDataManageResultDTO operateExport(CustomerDataManageFormDTO formDTO) throws ParseException;
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO);
}

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

@ -23,6 +23,7 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
@ -2114,5 +2115,14 @@ public class DataStatsServiceImpl implements DataStatsService {
return resultDTO;
}
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
@Override
public List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO) {
return dataStatsDao.getProjectTotal(formDTO);
}
}

37
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java

@ -5,10 +5,12 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.ProjectConstant;
import com.epmet.dataaggre.dao.govproject.ProjectDao;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
@ -17,6 +19,7 @@ import com.epmet.dataaggre.dto.govproject.form.ProjectDistributionFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.*;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.govissue.GovIssueService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.govproject.GovProjectService;
@ -52,6 +55,8 @@ public class GovProjectServiceImpl implements GovProjectService {
private GovIssueService govIssueService;
@Autowired
private ResiGroupService resiGroupService;
@Autowired
private DataStatsService dataStatsService;
/**
* @Description 查询项目信息
@ -251,7 +256,37 @@ public class GovProjectServiceImpl implements GovProjectService {
*/
@Override
public ProjectTotalResultDTO projectTotal(ProjectTotalFormDTO formDTO) {
return null;
ProjectTotalResultDTO result = new ProjectTotalResultDTO();
result.setAgencyId(formDTO.getAgencyId());
result.setDateId(formDTO.getDateId());
//较昨日dateId值
formDTO.setYeDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", -1));
//较上月monthId值
formDTO.setMonthId(DateUtils.dateOrmonthId(formDTO.getDateId(), "month", -1));
//1.分别查询组织下dateId、较昨日、较上月项目统计数据
List<FactAgencyProjectResultDTO> list = dataStatsService.getProjectTotal(formDTO);
if (CollectionUtils.isEmpty(list) || !formDTO.getDateId().equals(list.get(0).getDateId())) {
return result;
}
//2.封装数据
list.forEach(l -> {
if (formDTO.getDateId().equals(l.getDateId())) {
s result.setProjectTotal(l.getProjectTotal());
result.setPendingTotal(l.getPendingTotal());
result.setPendingRatio(l.getPendingRatio());
result.setClosedTotal(l.getClosedTotal());
result.setClosedRatio(l.getClosedRatio());
}
if (formDTO.getYeDateId().equals(l.getDateId())) {
result.setDateIncr(result.getProjectTotal() - l.getProjectTotal());
} else if (formDTO.getMonthId().equals(l.getMonthId())) {
result.setMonthIncr(result.getProjectTotal() - l.getProjectTotal());
}
});
return result;
}
/**

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

@ -1035,4 +1035,52 @@
GROUP BY t.orgId
</select>
<select id="getProjectTotal" resultType="com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO">
SELECT * FROM (
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND date_id = #{dateId}
UNION ALL
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND date_id = #{yeDateId}
UNION ALL
(
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND month_id = #{monthId}
ORDER BY date_id DESC
LIMIT 1
)
) a
ORDER BY a.date_id DESC
</select>
</mapper>

Loading…
Cancel
Save