From 2c0ee7397c4167ac65a2c70fb546ee109982d36b Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 23 Jun 2020 15:09:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE-=E9=A1=B9=E7=9B=AE-=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E8=B0=83=E6=95=B4=E3=80=81=E5=AE=9A=E6=97=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/impl/ProjectServiceImpl.java | 19 +- .../project/form/MonthProjectListFormDTO.java | 14 +- .../feign/DataStatisticalOpenFeignClient.java | 14 ++ ...ataStatisticalOpenFeignClientFallBack.java | 18 ++ .../controller/StatsProjectController.java | 23 ++- .../epmet/service/StatsProjectService.java | 10 +- .../service/impl/StatsProjectServiceImpl.java | 183 +++++++++--------- .../stats/FactAgencyProjectDailyDao.xml | 6 +- .../mapper/stats/FactGridProjectDailyDao.xml | 6 +- .../epmet/service/StatsProjectService.java | 23 +++ .../service/impl/StatsProjectServiceImpl.java | 34 ++++ .../epmet/task/StatsProjectAgencyTask.java | 32 +++ .../com/epmet/task/StatsProjectGridTask.java | 35 ++++ 13 files changed, 298 insertions(+), 119 deletions(-) create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsProjectService.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectAgencyTask.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectGridTask.java diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java index 35769c0a39..1d8871803d 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java @@ -16,6 +16,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; @@ -43,8 +46,14 @@ public class ProjectServiceImpl implements ProjectService { //2:根据agencyId查询项目统计数据 ProjectSummaryResultDTO resultDTO = projectDao.selectProjectSummary(agencyId); if (null != resultDTO) { - resultDTO.setPendingRatio(resultDTO.getPendingRatioInt().stripTrailingZeros().toString() + "%"); - resultDTO.setClosedRatio(resultDTO.getClosedRatioInt().stripTrailingZeros().toString() + "%"); + //将结果转成百分比 + NumberFormat percent = NumberFormat.getPercentInstance(); + percent.setMaximumFractionDigits(2); + //四舍五入保留小数点后四位 + BigDecimal pendingRatio = resultDTO.getPendingRatioInt().setScale(4, RoundingMode.HALF_UP); + //将小数转成百分比 + resultDTO.setPendingRatio(percent.format(pendingRatio.doubleValue())); + resultDTO.setClosedRatio(percent.format(resultDTO.getClosedRatioInt().setScale(4, RoundingMode.HALF_UP).doubleValue())); } return resultDTO; } @@ -62,8 +71,12 @@ public class ProjectServiceImpl implements ProjectService { //2:根据agencyId查询各状态统计数据 resultList = projectDao.selectSummaryInfo(agencyId); if (null != resultList && resultList.size() > NumConstant.ZERO) { + //将结果转成百分比 + NumberFormat percent = NumberFormat.getPercentInstance(); + percent.setMaximumFractionDigits(2); resultList.forEach(sum -> { - sum.setRatio(sum.getRatioInt().stripTrailingZeros().toString() + "%"); + //先四舍五入保留四位小数再把小数转成百分比 + sum.setRatio(percent.format(sum.getRatioInt().setScale(4, RoundingMode.HALF_UP).doubleValue())); }); } return resultList; diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/form/MonthProjectListFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/form/MonthProjectListFormDTO.java index 73045ccb3c..b0ff888330 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/form/MonthProjectListFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/form/MonthProjectListFormDTO.java @@ -18,6 +18,10 @@ public class MonthProjectListFormDTO implements Serializable { * 客户Id */ private String customerId; + /** + * 月维度Id + */ + private String monthId; /** * 机关Id @@ -29,14 +33,4 @@ public class MonthProjectListFormDTO implements Serializable { */ private String gridId; - /** - * 起始时间 - */ - private Date startTime; - - /** - * 结束时间 - */ - private Date endTime; - } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/DataStatisticalOpenFeignClient.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/DataStatisticalOpenFeignClient.java index 01c9953043..3b914706b7 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/DataStatisticalOpenFeignClient.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/DataStatisticalOpenFeignClient.java @@ -104,4 +104,18 @@ public interface DataStatisticalOpenFeignClient { @PostMapping("/data/stats/statsgroup/groupagencymonthly") Result groupAgencyMonthly(); + /** + * @Description 数据统计-项目-机关日月统计 + * @Author sun + */ + @PostMapping("/data/stats/statsproject/agencyprojectstats") + Result agencyProjectStats(); + + /** + * @Description 数据统计-项目-网格日月统计 + * @Author sun + */ + @PostMapping("/data/stats/statsproject/gridprojectstats") + Result gridProjectStats(); + } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/impl/DataStatisticalOpenFeignClientFallBack.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/impl/DataStatisticalOpenFeignClientFallBack.java index 1ccec983eb..4cd8be3729 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/impl/DataStatisticalOpenFeignClientFallBack.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/feign/impl/DataStatisticalOpenFeignClientFallBack.java @@ -109,4 +109,22 @@ public class DataStatisticalOpenFeignClientFallBack implements DataStatisticalOp public Result groupAgencyMonthly() { return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL, "groupAgencyMonthly"); } + + /** + * @Description 数据统计-项目-机关日月统计 + * @Author sun + */ + @Override + public Result agencyProjectStats() { + return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL, "agencyProjectStats"); + } + + /** + * @Description 数据统计-项目-网格日月统计 + * @Author sun + */ + @Override + public Result gridProjectStats() { + return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL, "gridProjectStats"); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java index 7d6c958d66..0b1bd0eb47 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java @@ -1,10 +1,11 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; -import com.epmet.service.StatsDemoService; import com.epmet.service.StatsProjectService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 数据统计-项目 @@ -19,11 +20,21 @@ public class StatsProjectController { /** * @Author sun - * @Description 数据-项目-机关、网格日(月)统计 + * @Description 数据-项目-机关日(月)统计 **/ - @PostMapping("projectstats") - public Result agencyGridProjectStats() { - statsProjectService.agencyGridProjectStats(); + @PostMapping("agencyprojectstats") + public Result agencyProjectStats() { + statsProjectService.agencyProjectStats(); + return new Result(); + } + + /** + * @Author sun + * @Description 数据-项目-网格日(月)统计 + **/ + @PostMapping("gridprojectstats") + public Result gridProjectStats() { + statsProjectService.gridProjectStats(); return new Result(); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsProjectService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsProjectService.java index 996d4c6e7d..739e69a780 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsProjectService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsProjectService.java @@ -8,7 +8,13 @@ public interface StatsProjectService { /** * @Author sun - * @Description 数据-项目-机关、网格日(月)统计 + * @Description 数据-项目-机关日(月)统计 **/ - void agencyGridProjectStats(); + void agencyProjectStats(); + + /** + * @Author sun + * @Description 数据-项目-网格日(月)统计 + **/ + void gridProjectStats(); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java index 3525e45f97..1e5cac4aac 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java @@ -14,8 +14,9 @@ import com.epmet.service.project.ProjectProcessService; import com.epmet.service.project.ProjectService; import com.epmet.service.stats.*; import com.epmet.util.DimIdGenerator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -34,6 +35,7 @@ import java.util.concurrent.atomic.AtomicInteger; @Service public class StatsProjectServiceImpl implements StatsProjectService { + protected static final Logger log = LoggerFactory.getLogger(StatsProjectServiceImpl.class); @Autowired private DimCustomerService dimCustomerService; @Autowired @@ -57,10 +59,10 @@ public class StatsProjectServiceImpl implements StatsProjectService { /** * @Author sun - * @Description 数据-项目-机关、网格日(月)统计 + * @Description 数据-项目-机关日(月)统计 **/ @Override - public void agencyGridProjectStats() { + public void agencyProjectStats() { int pageNo = 1; int pageSize = 100; List customerIdList = null; @@ -68,8 +70,13 @@ public class StatsProjectServiceImpl implements StatsProjectService { customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); if (!CollectionUtils.isEmpty(customerIdList)) { for (String customerId : customerIdList) { - //遍历统计每一个客户数据 - customerStats(customerId); + try { + //遍历统计每一个客户数据 + customerAgencyStats(customerId); + } catch (Exception e) { + log.error("项目-机关-数据统计程序错误,对应客户Id:"+customerId, e); + log.error("Error creating model JSON", e); + } } } } while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize); @@ -77,11 +84,10 @@ public class StatsProjectServiceImpl implements StatsProjectService { /** * @Author sun - * @Description 一个客户一个线程, 分别统计机关/网格日/月数据 + * @Description 分别统计机关日/月数据 **/ - @Async - public void customerStats(String customerId) { - Date date = new Date(); + public void customerAgencyStats(String customerId) { + Date date = yesterDay(); //1:查询各维度表Id,方便使用 DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); @@ -90,39 +96,25 @@ public class StatsProjectServiceImpl implements StatsProjectService { dimAgencyDTO.setCustomerId(customerId); List dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); - //3:根据客户Id查询网格维度表数据 - List dimGridList = dimGridService.getGridListByCustomerId(customerId); - - //4:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) + //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) ProjectEntity projectEntity = new ProjectEntity(); projectEntity.setCustomerId(customerId); projectEntity.setCreatedTime(date); projectEntity.setStatus(ProjectConstant.CLOSED); List projectList = projectService.getProjectList(projectEntity); - //5:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据) + //4:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据) List processList = projectProcessService.getProcessList(projectEntity); - //6:机关层级日月统计 + //5:机关层级日月统计 if (null != dimAgencyList && dimAgencyList.size() > NumConstant.ZERO) { - //6.1:执行机关日数据统计 + //5.1:执行机关日数据统计 agencyDateProjectStats(customerId, dimId, dimAgencyList, projectList, processList); - //6.2:执行机关月数据统计 - if (Calendar.getInstance().get(Calendar.DATE) == 1) { + //5.2:执行机关月数据统计 + //if (Calendar.getInstance().get(Calendar.DATE) == 1) { agencyMonthProjectStats(customerId, dimId, dimAgencyList); - } - } - - //7:网格层级日月统计 - if (null != dimGridList && dimGridList.size() > NumConstant.ZERO) { - //7.1:执行网格日数据统计 - gridDateProjectStats(customerId, dimId, dimGridList, projectList, processList); - - //7.2:执行网格月数据统计 - if (Calendar.getInstance().get(Calendar.DATE) == 1) { - gridMonthProjectStats(customerId, dimId, dimGridList); - } + //} } } @@ -138,7 +130,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { List projectDateEntityList = new ArrayList<>(); //计算百分比使用,保留小数点后两位 NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(2); + numberFormat.setMaximumFractionDigits(6); //1:遍历机关维度数据,统计每个机关各项指标数 for (DimAgencyDTO agency : dimAgencyList) { @@ -232,12 +224,12 @@ public class StatsProjectServiceImpl implements StatsProjectService { agencyDailyEntity.setResolvedTotal(resolvedTotal.intValue()); agencyDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue()); if (projectTotal.intValue() > NumConstant.ZERO) { - agencyDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) agencyDailyEntity.getPendingTotal() / (float) projectTotal.intValue() * 100))); - agencyDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue() * 100))); + agencyDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) agencyDailyEntity.getPendingTotal() / (float) projectTotal.intValue()))); + agencyDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue()))); } if (closedTotal.intValue() > NumConstant.ZERO) { - agencyDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) closedTotal.intValue() * 100))); - agencyDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue() * 100))); + agencyDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) closedTotal.intValue()))); + agencyDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue()))); } agencyDailyEntity.setProjectIncr(projectIncr.intValue()); agencyDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue()); @@ -276,8 +268,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { //1:获取昨天日期所在月份的起始日期和结束日期 MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO(); formDTO.setCustomerId(customerId); - formDTO.setStartTime(getMonthBegin(date)); - formDTO.setEndTime(getMonthEnd(date)); + formDTO.setMonthId(dimId.getMonthId()); //2:遍历机关维度数据,分别统计每个组织月数据 for (DimAgencyDTO agency : dimAgencyList) { @@ -342,6 +333,65 @@ public class StatsProjectServiceImpl implements StatsProjectService { } + /** + * @Author sun + * @Description 数据-项目-机关日(月)统计 + **/ + @Override + public void gridProjectStats() { + int pageNo = 1; + int pageSize = 100; + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)) { + for (String customerId : customerIdList) { + try { + //遍历统计每一个客户数据 + customerGridStats(customerId); + } catch (Exception e) { + log.error("项目-网格-数据统计程序错误,对应客户Id:"+customerId, e); + log.error("Error creating model JSON", e); + } + } + } + } while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize); + } + + /** + * @Author sun + * @Description 分别统计网格日/月数据 + **/ + public void customerGridStats(String customerId) { + Date date = yesterDay(); + //1:查询各维度表Id,方便使用 + DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); + + //2:根据客户Id查询网格维度表数据 + List dimGridList = dimGridService.getGridListByCustomerId(customerId); + + //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) + ProjectEntity projectEntity = new ProjectEntity(); + projectEntity.setCustomerId(customerId); + projectEntity.setCreatedTime(date); + projectEntity.setStatus(ProjectConstant.CLOSED); + List projectList = projectService.getProjectList(projectEntity); + + //4:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据) + List processList = projectProcessService.getProcessList(projectEntity); + + //5:网格层级日月统计 + if (null != dimGridList && dimGridList.size() > NumConstant.ZERO) { + //5.1:执行网格日数据统计 + gridDateProjectStats(customerId, dimId, dimGridList, projectList, processList); + + //5.2:执行网格月数据统计 + //if (Calendar.getInstance().get(Calendar.DATE) == 1) { + gridMonthProjectStats(customerId, dimId, dimGridList); + //} + } + + } /** * @param customerId * @return @@ -354,7 +404,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { List gridDateEntityList = new ArrayList<>(); //计算百分比使用,保留小数点后两位 NumberFormat numberFormat = NumberFormat.getInstance(); - numberFormat.setMaximumFractionDigits(2); + numberFormat.setMaximumFractionDigits(6); //1:根据客户Id查询议题库已转项目的网格项目关系数据 List gridProjectList = issueService.getGridProjectList(customerId); @@ -448,12 +498,12 @@ public class StatsProjectServiceImpl implements StatsProjectService { gridDailyEntity.setResolvedTotal(resolvedTotal.intValue()); gridDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue()); if (projectTotal.intValue() > NumConstant.ZERO) { - gridDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) gridDailyEntity.getPendingTotal() / (float) projectTotal.intValue() * 100))); - gridDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue() * 100))); + gridDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) gridDailyEntity.getPendingTotal() / (float) projectTotal.intValue()))); + gridDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue()))); } if (closedTotal.intValue() > NumConstant.ZERO) { - gridDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) closedTotal.intValue() * 100))); - gridDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue() * 100))); + gridDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) closedTotal.intValue()))); + gridDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue()))); } gridDailyEntity.setProjectIncr(projectIncr.intValue()); gridDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue()); @@ -489,15 +539,14 @@ public class StatsProjectServiceImpl implements StatsProjectService { //批量月数据新增对象 List monthlyEntityList = new ArrayList<>(); - //1:获取昨天日期所在月份的起始日期和结束日期 + //1:查询客户网格月份内日统计数据 MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO(); formDTO.setCustomerId(customerId); - formDTO.setStartTime(getMonthBegin(yesterDay())); - formDTO.setEndTime(getMonthEnd(yesterDay())); + formDTO.setMonthId(dimId.getMonthId()); //2:遍历网格维度数据,分别统计每个网格月数据 for (DimGridEntity grid : dimGridList) { - //2.1:查询上一月网格日统计数据,按时间倒序 + //2.1:查询当前月网格日统计数据,按时间倒序 formDTO.setGridId(grid.getId()); List projectDailyList = factGridProjectDailyService.getMonthProjectList(formDTO); @@ -575,46 +624,4 @@ public class StatsProjectServiceImpl implements StatsProjectService { return date; } - /** - * @Author sun - * @Description 获取指定日期所在月份开始的时间 - **/ - public Date getMonthBegin(Date date) { - Calendar c = Calendar.getInstance(); - c.setTime(date); - //设置为1号,当前日期既为本月第一天 - c.set(Calendar.DAY_OF_MONTH, 1); - //将小时至0 - c.set(Calendar.HOUR_OF_DAY, 0); - //将分钟至0 - c.set(Calendar.MINUTE, 0); - //将秒至0 - c.set(Calendar.SECOND, 0); - //将毫秒至0 - c.set(Calendar.MILLISECOND, 0); - //获取本月第一天的时间 - return c.getTime(); - } - - /** - * @Author sun - * @Description 获取指定日期所在月份结束的时间 - **/ - public Date getMonthEnd(Date date) { - Calendar c = Calendar.getInstance(); - c.setTime(date); - //设置为当月最后一天 - c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); - //将小时至23 - c.set(Calendar.HOUR_OF_DAY, 23); - //将分钟至59 - c.set(Calendar.MINUTE, 59); - //将秒至59 - c.set(Calendar.SECOND, 59); - //将毫秒至999 - c.set(Calendar.MILLISECOND, 999); - //获取本月最后一天的时间 - return c.getTime(); - } - } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml index c9adcc2f29..eb6fc087bb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml @@ -12,11 +12,7 @@ del_flag = '0' AND customer_id = #{customerId} AND agency_id = #{agencyId} - AND ( - DATE_FORMAT(created_time, "%Y-%m-%d") - BETWEEN DATE_FORMAT(#{startTime}, "%Y-%m-%d") - AND DATE_FORMAT(#{endTime}, "%Y-%m-%d") - ) + AND month_id = #{monthId} ORDER BY created_time DESC,project_total DESC diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml index 4dc999bba0..3f386bf7ba 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml @@ -12,11 +12,7 @@ del_flag = '0' AND customer_id = #{customerId} AND grid_id = #{gridId} - AND ( - DATE_FORMAT(created_time, "%Y-%m-%d") - BETWEEN DATE_FORMAT(#{startTime}, "%Y-%m-%d") - AND DATE_FORMAT(#{endTime}, "%Y-%m-%d") - ) + AND month_id = #{monthId} ORDER BY created_time DESC,project_total DESC diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsProjectService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsProjectService.java new file mode 100644 index 0000000000..473f8c798b --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsProjectService.java @@ -0,0 +1,23 @@ +package com.epmet.service; + +import com.epmet.commons.tools.utils.Result; + +/** + * @Description 数据统计-项目-机关、网格日月统计任务接口 + * @Author sun + */ +public interface StatsProjectService { + + + /** + * @Description 数据统计-项目-机关日月统计 + * @Author sun + */ + Result agencyProjectStats(); + + /** + * @Description 数据统计-项目-网格日月统计 + * @Author sun + */ + Result gridProjectStats(); +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java new file mode 100644 index 0000000000..0245c79754 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java @@ -0,0 +1,34 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.StatsProjectService; +import feign.DataStatisticalOpenFeignClient; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description 数据统计-项目-机关、网格日月统计任务接口 + * @Author sun + */ +public class StatsProjectServiceImpl implements StatsProjectService { + + @Autowired + private DataStatisticalOpenFeignClient statsPublicityFeignClient; + + /** + * @Description 数据统计-项目-机关日月统计 + * @Author sun + */ + @Override + public Result agencyProjectStats() { + return statsPublicityFeignClient.agencyProjectStats(); + } + + /** + * @Description 数据统计-项目-网格日月统计 + * @Author sun + */ + @Override + public Result gridProjectStats() { + return statsPublicityFeignClient.gridProjectStats(); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectAgencyTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectAgencyTask.java new file mode 100644 index 0000000000..fcb09dae46 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectAgencyTask.java @@ -0,0 +1,32 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.StatsProjectService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description 数据统计-项目-机关日月统计任务 + * @Author sun + */ +@Component("statsProjectAgencyTask") +public class StatsProjectAgencyTask implements ITask { + + @Autowired + private StatsProjectService statsProjectService; + + private Logger log = LoggerFactory.getLogger(getClass()); + + @Override + public void run(String params) { + log.debug("StatsProjectAgencyTask定时任务正在执行,参数为:{}", params); + Result result = statsProjectService.agencyProjectStats(); + if (result.success()){ + log.debug("StatsProjectAgencyTask定时任务正在执行定时任务执行成功"); + }else { + log.debug("StatsProjectAgencyTask定时任务正在执行定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectGridTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectGridTask.java new file mode 100644 index 0000000000..293aa82380 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectGridTask.java @@ -0,0 +1,35 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.StatsProjectService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Author zxc + * @CreateTime 2020/6/22 14:09 + * + * 统计 “网格小组”, dim:【网格-日】 + * + */ +@Component("statsProjectGridTask") +public class StatsProjectGridTask implements ITask { + + @Autowired + private StatsProjectService statsProjectService; + + private Logger log = LoggerFactory.getLogger(getClass()); + + @Override + public void run(String params) { + log.debug("StatsProjectGridTask定时任务正在执行,参数为:{}", params); + Result result = statsProjectService.gridProjectStats(); + if (result.success()){ + log.debug("StatsProjectGridTask定时任务正在执行定时任务执行成功"); + }else { + log.debug("StatsProjectGridTask定时任务正在执行定时任务执行失败:" + result.getMsg()); + } + } +}