Browse Source

数据-项目-程序调整、定时添加

master
sunyuchao 5 years ago
parent
commit
2c0ee7397c
  1. 19
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java
  2. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/form/MonthProjectListFormDTO.java
  3. 14
      epmet-module/data-statistical/data-statistical-client/src/main/java/feign/DataStatisticalOpenFeignClient.java
  4. 18
      epmet-module/data-statistical/data-statistical-client/src/main/java/feign/impl/DataStatisticalOpenFeignClientFallBack.java
  5. 23
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java
  6. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsProjectService.java
  7. 183
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java
  8. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml
  9. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml
  10. 23
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/StatsProjectService.java
  11. 34
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java
  12. 32
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectAgencyTask.java
  13. 35
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/StatsProjectGridTask.java

19
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -43,8 +46,14 @@ public class ProjectServiceImpl implements ProjectService {
//2:根据agencyId查询项目统计数据 //2:根据agencyId查询项目统计数据
ProjectSummaryResultDTO resultDTO = projectDao.selectProjectSummary(agencyId); ProjectSummaryResultDTO resultDTO = projectDao.selectProjectSummary(agencyId);
if (null != resultDTO) { 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; return resultDTO;
} }
@ -62,8 +71,12 @@ public class ProjectServiceImpl implements ProjectService {
//2:根据agencyId查询各状态统计数据 //2:根据agencyId查询各状态统计数据
resultList = projectDao.selectSummaryInfo(agencyId); resultList = projectDao.selectSummaryInfo(agencyId);
if (null != resultList && resultList.size() > NumConstant.ZERO) { if (null != resultList && resultList.size() > NumConstant.ZERO) {
//将结果转成百分比
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMaximumFractionDigits(2);
resultList.forEach(sum -> { resultList.forEach(sum -> {
sum.setRatio(sum.getRatioInt().stripTrailingZeros().toString() + "%"); //先四舍五入保留四位小数再把小数转成百分比
sum.setRatio(percent.format(sum.getRatioInt().setScale(4, RoundingMode.HALF_UP).doubleValue()));
}); });
} }
return resultList; return resultList;

14
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 * 客户Id
*/ */
private String customerId; private String customerId;
/**
* 月维度Id
*/
private String monthId;
/** /**
* 机关Id * 机关Id
@ -29,14 +33,4 @@ public class MonthProjectListFormDTO implements Serializable {
*/ */
private String gridId; private String gridId;
/**
* 起始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
} }

14
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") @PostMapping("/data/stats/statsgroup/groupagencymonthly")
Result groupAgencyMonthly(); Result groupAgencyMonthly();
/**
* @Description 数据统计-项目-机关日月统计
* @Author sun
*/
@PostMapping("/data/stats/statsproject/agencyprojectstats")
Result agencyProjectStats();
/**
* @Description 数据统计-项目-网格日月统计
* @Author sun
*/
@PostMapping("/data/stats/statsproject/gridprojectstats")
Result gridProjectStats();
} }

18
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() { public Result groupAgencyMonthly() {
return ModuleUtils.feignConError(ServiceConstant.DATA_STATISTICAL, "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");
}
} }

23
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsProjectController.java

@ -1,10 +1,11 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.service.StatsDemoService;
import com.epmet.service.StatsProjectService; import com.epmet.service.StatsProjectService;
import org.springframework.beans.factory.annotation.Autowired; 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 * @Author sun
* @Description 数据-项目-机关网格()统计 * @Description 数据-项目-机关日()统计
**/ **/
@PostMapping("projectstats") @PostMapping("agencyprojectstats")
public Result agencyGridProjectStats() { public Result agencyProjectStats() {
statsProjectService.agencyGridProjectStats(); statsProjectService.agencyProjectStats();
return new Result();
}
/**
* @Author sun
* @Description 数据-项目-网格日()统计
**/
@PostMapping("gridprojectstats")
public Result gridProjectStats() {
statsProjectService.gridProjectStats();
return new Result(); return new Result();
} }

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

@ -8,7 +8,13 @@ public interface StatsProjectService {
/** /**
* @Author sun * @Author sun
* @Description 数据-项目-机关网格()统计 * @Description 数据-项目-机关日()统计
**/ **/
void agencyGridProjectStats(); void agencyProjectStats();
/**
* @Author sun
* @Description 数据-项目-网格日()统计
**/
void gridProjectStats();
} }

183
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.project.ProjectService;
import com.epmet.service.stats.*; import com.epmet.service.stats.*;
import com.epmet.util.DimIdGenerator; import com.epmet.util.DimIdGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -34,6 +35,7 @@ import java.util.concurrent.atomic.AtomicInteger;
@Service @Service
public class StatsProjectServiceImpl implements StatsProjectService { public class StatsProjectServiceImpl implements StatsProjectService {
protected static final Logger log = LoggerFactory.getLogger(StatsProjectServiceImpl.class);
@Autowired @Autowired
private DimCustomerService dimCustomerService; private DimCustomerService dimCustomerService;
@Autowired @Autowired
@ -57,10 +59,10 @@ public class StatsProjectServiceImpl implements StatsProjectService {
/** /**
* @Author sun * @Author sun
* @Description 数据-项目-机关网格()统计 * @Description 数据-项目-机关日()统计
**/ **/
@Override @Override
public void agencyGridProjectStats() { public void agencyProjectStats() {
int pageNo = 1; int pageNo = 1;
int pageSize = 100; int pageSize = 100;
List<String> customerIdList = null; List<String> customerIdList = null;
@ -68,8 +70,13 @@ public class StatsProjectServiceImpl implements StatsProjectService {
customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize);
if (!CollectionUtils.isEmpty(customerIdList)) { if (!CollectionUtils.isEmpty(customerIdList)) {
for (String customerId : customerIdList) { for (String customerId : customerIdList) {
//遍历统计每一个客户数据 try {
customerStats(customerId); //遍历统计每一个客户数据
customerAgencyStats(customerId);
} catch (Exception e) {
log.error("项目-机关-数据统计程序错误,对应客户Id:"+customerId, e);
log.error("Error creating model JSON", e);
}
} }
} }
} while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize); } while (!CollectionUtils.isEmpty(customerIdList) && customerIdList.size() == pageSize);
@ -77,11 +84,10 @@ public class StatsProjectServiceImpl implements StatsProjectService {
/** /**
* @Author sun * @Author sun
* @Description 一个客户一个线程, 分别统计机关/网格/月数据 * @Description 分别统计机关日/月数据
**/ **/
@Async public void customerAgencyStats(String customerId) {
public void customerStats(String customerId) { Date date = yesterDay();
Date date = new Date();
//1:查询各维度表Id,方便使用 //1:查询各维度表Id,方便使用
DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date);
@ -90,39 +96,25 @@ public class StatsProjectServiceImpl implements StatsProjectService {
dimAgencyDTO.setCustomerId(customerId); dimAgencyDTO.setCustomerId(customerId);
List<DimAgencyDTO> dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); List<DimAgencyDTO> dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO);
//3:根据客户Id查询网格维度表数据 //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据)
List<DimGridEntity> dimGridList = dimGridService.getGridListByCustomerId(customerId);
//4:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据)
ProjectEntity projectEntity = new ProjectEntity(); ProjectEntity projectEntity = new ProjectEntity();
projectEntity.setCustomerId(customerId); projectEntity.setCustomerId(customerId);
projectEntity.setCreatedTime(date); projectEntity.setCreatedTime(date);
projectEntity.setStatus(ProjectConstant.CLOSED); projectEntity.setStatus(ProjectConstant.CLOSED);
List<ProjectEntity> projectList = projectService.getProjectList(projectEntity); List<ProjectEntity> projectList = projectService.getProjectList(projectEntity);
//5:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据) //4:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据)
List<ProjectProcessEntity> processList = projectProcessService.getProcessList(projectEntity); List<ProjectProcessEntity> processList = projectProcessService.getProcessList(projectEntity);
//6:机关层级日月统计 //5:机关层级日月统计
if (null != dimAgencyList && dimAgencyList.size() > NumConstant.ZERO) { if (null != dimAgencyList && dimAgencyList.size() > NumConstant.ZERO) {
//6.1:执行机关日数据统计 //5.1:执行机关日数据统计
agencyDateProjectStats(customerId, dimId, dimAgencyList, projectList, processList); agencyDateProjectStats(customerId, dimId, dimAgencyList, projectList, processList);
//6.2:执行机关月数据统计 //5.2:执行机关月数据统计
if (Calendar.getInstance().get(Calendar.DATE) == 1) { //if (Calendar.getInstance().get(Calendar.DATE) == 1) {
agencyMonthProjectStats(customerId, dimId, dimAgencyList); 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<FactAgencyProjectDailyEntity> projectDateEntityList = new ArrayList<>(); List<FactAgencyProjectDailyEntity> projectDateEntityList = new ArrayList<>();
//计算百分比使用,保留小数点后两位 //计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance(); NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(2); numberFormat.setMaximumFractionDigits(6);
//1:遍历机关维度数据,统计每个机关各项指标数 //1:遍历机关维度数据,统计每个机关各项指标数
for (DimAgencyDTO agency : dimAgencyList) { for (DimAgencyDTO agency : dimAgencyList) {
@ -232,12 +224,12 @@ public class StatsProjectServiceImpl implements StatsProjectService {
agencyDailyEntity.setResolvedTotal(resolvedTotal.intValue()); agencyDailyEntity.setResolvedTotal(resolvedTotal.intValue());
agencyDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue()); agencyDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue());
if (projectTotal.intValue() > NumConstant.ZERO) { if (projectTotal.intValue() > NumConstant.ZERO) {
agencyDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) agencyDailyEntity.getPendingTotal() / (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() * 100))); agencyDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue())));
} }
if (closedTotal.intValue() > NumConstant.ZERO) { if (closedTotal.intValue() > NumConstant.ZERO) {
agencyDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.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() * 100))); agencyDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue())));
} }
agencyDailyEntity.setProjectIncr(projectIncr.intValue()); agencyDailyEntity.setProjectIncr(projectIncr.intValue());
agencyDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue()); agencyDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue());
@ -276,8 +268,7 @@ public class StatsProjectServiceImpl implements StatsProjectService {
//1:获取昨天日期所在月份的起始日期和结束日期 //1:获取昨天日期所在月份的起始日期和结束日期
MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO(); MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO();
formDTO.setCustomerId(customerId); formDTO.setCustomerId(customerId);
formDTO.setStartTime(getMonthBegin(date)); formDTO.setMonthId(dimId.getMonthId());
formDTO.setEndTime(getMonthEnd(date));
//2:遍历机关维度数据,分别统计每个组织月数据 //2:遍历机关维度数据,分别统计每个组织月数据
for (DimAgencyDTO agency : dimAgencyList) { 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<String> 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<DimGridEntity> dimGridList = dimGridService.getGridListByCustomerId(customerId);
//3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据)
ProjectEntity projectEntity = new ProjectEntity();
projectEntity.setCustomerId(customerId);
projectEntity.setCreatedTime(date);
projectEntity.setStatus(ProjectConstant.CLOSED);
List<ProjectEntity> projectList = projectService.getProjectList(projectEntity);
//4:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据)
List<ProjectProcessEntity> 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 * @param customerId
* @return * @return
@ -354,7 +404,7 @@ public class StatsProjectServiceImpl implements StatsProjectService {
List<FactGridProjectDailyEntity> gridDateEntityList = new ArrayList<>(); List<FactGridProjectDailyEntity> gridDateEntityList = new ArrayList<>();
//计算百分比使用,保留小数点后两位 //计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance(); NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(2); numberFormat.setMaximumFractionDigits(6);
//1:根据客户Id查询议题库已转项目的网格项目关系数据 //1:根据客户Id查询议题库已转项目的网格项目关系数据
List<IssueEntity> gridProjectList = issueService.getGridProjectList(customerId); List<IssueEntity> gridProjectList = issueService.getGridProjectList(customerId);
@ -448,12 +498,12 @@ public class StatsProjectServiceImpl implements StatsProjectService {
gridDailyEntity.setResolvedTotal(resolvedTotal.intValue()); gridDailyEntity.setResolvedTotal(resolvedTotal.intValue());
gridDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue()); gridDailyEntity.setUnresolvedTotal(unResolvedTotal.intValue());
if (projectTotal.intValue() > NumConstant.ZERO) { if (projectTotal.intValue() > NumConstant.ZERO) {
gridDailyEntity.setPendingRatio(new BigDecimal(numberFormat.format((float) gridDailyEntity.getPendingTotal() / (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() * 100))); gridDailyEntity.setClosedRatio(new BigDecimal(numberFormat.format((float) closedTotal.intValue() / (float) projectTotal.intValue())));
} }
if (closedTotal.intValue() > NumConstant.ZERO) { if (closedTotal.intValue() > NumConstant.ZERO) {
gridDailyEntity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.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() * 100))); gridDailyEntity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) closedTotal.intValue())));
} }
gridDailyEntity.setProjectIncr(projectIncr.intValue()); gridDailyEntity.setProjectIncr(projectIncr.intValue());
gridDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue()); gridDailyEntity.setPendingIncr(projectIncr.intValue() - closedIncr.intValue());
@ -489,15 +539,14 @@ public class StatsProjectServiceImpl implements StatsProjectService {
//批量月数据新增对象 //批量月数据新增对象
List<FactGridProjectMonthlyEntity> monthlyEntityList = new ArrayList<>(); List<FactGridProjectMonthlyEntity> monthlyEntityList = new ArrayList<>();
//1:获取昨天日期所在月份的起始日期和结束日期 //1:查询客户网格月份内日统计数据
MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO(); MonthProjectListFormDTO formDTO = new MonthProjectListFormDTO();
formDTO.setCustomerId(customerId); formDTO.setCustomerId(customerId);
formDTO.setStartTime(getMonthBegin(yesterDay())); formDTO.setMonthId(dimId.getMonthId());
formDTO.setEndTime(getMonthEnd(yesterDay()));
//2:遍历网格维度数据,分别统计每个网格月数据 //2:遍历网格维度数据,分别统计每个网格月数据
for (DimGridEntity grid : dimGridList) { for (DimGridEntity grid : dimGridList) {
//2.1:查询上一月网格日统计数据,按时间倒序 //2.1:查询当前月网格日统计数据,按时间倒序
formDTO.setGridId(grid.getId()); formDTO.setGridId(grid.getId());
List<FactGridProjectDailyEntity> projectDailyList = factGridProjectDailyService.getMonthProjectList(formDTO); List<FactGridProjectDailyEntity> projectDailyList = factGridProjectDailyService.getMonthProjectList(formDTO);
@ -575,46 +624,4 @@ public class StatsProjectServiceImpl implements StatsProjectService {
return date; 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();
}
} }

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactAgencyProjectDailyDao.xml

@ -12,11 +12,7 @@
del_flag = '0' del_flag = '0'
AND customer_id = #{customerId} AND customer_id = #{customerId}
AND agency_id = #{agencyId} AND agency_id = #{agencyId}
AND ( AND month_id = #{monthId}
DATE_FORMAT(created_time, "%Y-%m-%d")
BETWEEN DATE_FORMAT(#{startTime}, "%Y-%m-%d")
AND DATE_FORMAT(#{endTime}, "%Y-%m-%d")
)
ORDER BY created_time DESC,project_total DESC ORDER BY created_time DESC,project_total DESC
</select> </select>

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactGridProjectDailyDao.xml

@ -12,11 +12,7 @@
del_flag = '0' del_flag = '0'
AND customer_id = #{customerId} AND customer_id = #{customerId}
AND grid_id = #{gridId} AND grid_id = #{gridId}
AND ( AND month_id = #{monthId}
DATE_FORMAT(created_time, "%Y-%m-%d")
BETWEEN DATE_FORMAT(#{startTime}, "%Y-%m-%d")
AND DATE_FORMAT(#{endTime}, "%Y-%m-%d")
)
ORDER BY created_time DESC,project_total DESC ORDER BY created_time DESC,project_total DESC
</select> </select>

23
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();
}

34
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();
}
}

32
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());
}
}
}

35
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());
}
}
}
Loading…
Cancel
Save