diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index 72ef2b483d..db6abec6aa 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -11,6 +11,7 @@ package com.epmet.commons.tools.utils; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.TimeListResultDTO; +import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.LocalDate; @@ -917,4 +918,31 @@ public class DateUtils { return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time); } + /** + * @Author sun + * @Description 获取dateId对应上一个月过去12个月的monthId + * dateId yyyymmdd + * 20211201 -> 202012-202111的值 + **/ + public static LinkedHashMap getXproSub(String dateId){ + java.time.format.DateTimeFormatter fmt = java.time.format.DateTimeFormatter.ofPattern("yyyyMM"); + LinkedHashMap xAxis = new LinkedHashMap<>(); + Calendar cal=Calendar.getInstance(); + cal.setTime(DateUtils.parseDate(dateId, DateUtils.DATE_PATTERN_YYYYMMDD)); + TimeZone tz = cal.getTimeZone(); + ZoneId zid = tz == null ? ZoneId.systemDefault() : tz.toZoneId(); + java.time.LocalDate today = java.time.LocalDateTime.ofInstant(cal.toInstant(), zid).toLocalDate(); + //java.time.LocalDate today = java.time.LocalDate.now(); + + for(int i = NumConstant.TWELVE;i > NumConstant.ZERO; i--){ + java.time.LocalDate localDate = today.minusMonths(i); + String s = localDate.getMonth().getValue() + "月"; + xAxis.put(localDate.format(fmt),s); + } + LinkedHashMap result = Maps.newLinkedHashMap(); + xAxis.entrySet().stream().sorted(Map.Entry.comparingByKey()) + .forEachOrdered((e -> result.put(e.getKey(),e.getValue()))); + return result; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectMonthResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectMonthResultDTO.java new file mode 100644 index 0000000000..8138219216 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectMonthResultDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 项目月数据-接口返参 + * @Auth sun + */ +@Data +public class FactAgencyProjectMonthResultDTO implements Serializable { + private static final long serialVersionUID = 466974582608407121L; + //组织Id + private String agencyId; + //月维度Id + private String monthId; + //当月项目总数 【当前组织及下级前一月新增项目数】 + private Integer projectIncr = 0; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java index 4418c02cb3..13bc60fa06 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java @@ -19,17 +19,17 @@ public class FactAgencyProjectResultDTO implements Serializable { private String agencyId; //组织名称 private String dateId; - //问题解决总数 + //月维度Id private String monthId; - //党群自治占比 + //项目总数 private Integer projectTotal = 0; - //网格自治占比 + //处理中项目数 private Integer pendingTotal = 0; - //社区解决占比 + //处理中项目占比 private String pendingRatio = "0%"; - //区直部门解决占比 + //已结案中项目数 private Integer closedTotal = 0; - //街道解决占比 + //已结案中项目占比 private String closedRatio = "0%"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java index bf02cf40f2..ff60c5eb79 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java @@ -36,5 +36,9 @@ public class ProjectTotalFormDTO implements Serializable { private String yeDateId; //较dateId上月的monthId值 private String monthId; + //查询数据起始月份Id + private String startMonth; + //查询数据结束月份Id + private String endMonth; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java index 8947eb971b..ade71720ed 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java @@ -13,8 +13,8 @@ public class ProjectMonthIncrResultDTO implements Serializable { private static final long serialVersionUID = 6188316867855643263L; //横坐标值 - private String value; + private Integer value; //横坐标 - private Integer type; + private String type; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java index 503caedfb4..42d4633398 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java @@ -17,6 +17,7 @@ import com.epmet.dataaggre.service.govproject.GovProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.LinkedList; import java.util.List; /** @@ -75,9 +76,9 @@ public class GovProjectController { * @author sun */ @PostMapping("projectmonthincr") - public Result> projectMonthIncr(@RequestBody ProjectTotalFormDTO formDTO) { + public Result> projectMonthIncr(@RequestBody ProjectTotalFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ProjectTotalFormDTO.Monthincr.class); - return new Result>().ok(govProjectService.projectMonthIncr(formDTO)); + return new Result>().ok(govProjectService.projectMonthIncr(formDTO)); } /** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index b41d0cd9b1..237432f5c2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -25,6 +25,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.govproject.form.ProjectTotalFormDTO; +import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; @@ -342,4 +343,10 @@ public interface DataStatsDao { * @author sun */ List getProjectTotal(ProjectTotalFormDTO formDTO); + + /** + * @Description 查询dateId的上一月过去12个月份组织项目数据 + * @author sun + */ + List getProjectMonthIncr(ProjectTotalFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 80aa4defb5..de584839e2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -7,6 +7,7 @@ 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.govproject.result.ProjectMonthIncrResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; @@ -253,4 +254,10 @@ public interface DataStatsService { * @author sun */ List getProjectTotal(ProjectTotalFormDTO formDTO); + + /** + * @Description 查询dateId的上一月过去12个月份组织项目数据 + * @author sun + */ + List getProjectMonthIncr(ProjectTotalFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 88ff22c7db..31cf2174d6 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -24,6 +24,7 @@ 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.govproject.result.ProjectMonthIncrResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; @@ -2124,5 +2125,14 @@ public class DataStatsServiceImpl implements DataStatsService { return dataStatsDao.getProjectTotal(formDTO); } + /** + * @Description 查询dateId的上一月过去12个月份组织项目数据 + * @author sun + */ + @Override + public List getProjectMonthIncr(ProjectTotalFormDTO formDTO) { + return dataStatsDao.getProjectMonthIncr(formDTO); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java index a09c9257db..1cf1c73f18 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java @@ -7,6 +7,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 java.util.LinkedList; import java.util.List; /** @@ -61,7 +62,7 @@ public interface GovProjectService { * @Description 赋能平台【项目处理分析】进12月新增项目折线图 * @author sun */ - List projectMonthIncr(ProjectTotalFormDTO formDTO); + LinkedList projectMonthIncr(ProjectTotalFormDTO formDTO); /** * @Description 赋能平台【项目处理分析】按状态查询项目列表 diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java index d6af5cfe8b..b3da96257b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java @@ -10,6 +10,7 @@ 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.FactAgencyProjectMonthResultDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; @@ -294,8 +295,30 @@ public class GovProjectServiceImpl implements GovProjectService { * @author sun */ @Override - public List projectMonthIncr(ProjectTotalFormDTO formDTO) { - return null; + public LinkedList projectMonthIncr(ProjectTotalFormDTO formDTO) { + LinkedList resultList = new LinkedList<>(); + //1.获取起始终止月份值 + LinkedHashMap map = DateUtils.getXproSub(formDTO.getDateId()); + List monthIdList = map.keySet().stream().collect(Collectors.toList()); + formDTO.setStartMonth(monthIdList.get(NumConstant.ZERO)); + formDTO.setEndMonth(monthIdList.get(NumConstant.ELEVEN)); + + //2.查询dateId的上一月过去12个月份数据【2021-12-08 数据是202012到202111的数据】 + List list = dataStatsService.getProjectMonthIncr(formDTO); + + //3.封装数据并返回 + map.forEach((k, v) -> { + ProjectMonthIncrResultDTO dto = new ProjectMonthIncrResultDTO(); + dto.setType(v); + list.forEach(l -> { + if (k.equals(l.getMonthId())) { + dto.setValue(l.getProjectIncr()); + } + }); + resultList.add(dto); + }); + + return resultList; } /** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 2c39797518..4943a96776 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -1083,4 +1083,18 @@ ORDER BY a.date_id DESC + +