diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index 157561cbe7..b1326b0214 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -64,10 +64,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { @Override public void exeDailyAll(BizDataFormDTO dataFormDTO) { String customerId = dataFormDTO.getCustomerId(); - if (StringUtils.isBlank(dataFormDTO.getDateId()) && (StringUtils.isBlank(dataFormDTO.getStartDate()) && StringUtils.isBlank(dataFormDTO.getEndDate()))) { - //如果没有设置开始日期、结束日期,默认查询昨天 - dataFormDTO.setDateId(DimIdGenerator.getDateDimId(DateUtils.addDateDays(new Date(), -1))); - } + List customerIds = new ArrayList<>(); if (StringUtils.isNotBlank(customerId)) { //指定某个客户 @@ -94,28 +91,38 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //校正参数里的前一天日期的数据 //获取所有网格员 List allGridMembers = getAllGridMembers(formDTO); - reloadStaffPatrolStatsData(formDTO, allGridMembers); + String yesterdayStr = getYesterdayString(formDTO); + StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class); + yesterdayParam.setDateId(yesterdayStr); + reloadStaffPatrolStatsData(yesterdayParam, allGridMembers); - //初始化参数里日期的数据 - initStaffPatrolTodayData(formDTO, allGridMembers); + //初始化参数里日期的数据 如果当前时间在1分钟内 则初始化 + String todayDateDimId = DimIdGenerator.getDateDimId(new Date()); + if (todayDateDimId.equals(formDTO.getDateId())){ + //如果当前时间-1分钟还等于今天 则进行初始化操作 否则执行数据纠正 + String dateDimId = DimIdGenerator.getDateDimId(new Date(System.currentTimeMillis() - 1 * 60 * 1000)); + if (!dateDimId.equals(todayDateDimId)){ + initStaffPatrolTodayData(formDTO, allGridMembers); + }else{ + reloadStaffPatrolStatsData(formDTO, allGridMembers); + } + } } private void reloadStaffPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List allGridMembers) { log.info("reloadStaffPatrolStatsData param:{}",JSON.toJSONString(formDTO)); //获取昨日的巡查统计记录 - String yesterdayStr = getYesterdayString(formDTO); - StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class); - yesterdayParam.setDateId(yesterdayStr); + //遍历网格员重新初始化数据 - List insertList = buildInitPatrolStatsData(yesterdayParam, allGridMembers); + List insertList = buildInitPatrolStatsData(formDTO, allGridMembers); Map yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1)); //获取昨日的巡查记录 - List yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), yesterdayStr); + List yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); //获取昨日的立项项目数 - List yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), yesterdayStr, ProjectConstant.PROJECT_ORIGIN_AGENCY); + List yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), formDTO.getDateId(), ProjectConstant.PROJECT_ORIGIN_AGENCY); //遍历网格员 设置其 巡查次数 巡查时常 上报项目数 yesterdayPatrolList.forEach(patrolRecord -> { @@ -158,7 +165,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { }); }); - Integer effectRow = statsStaffPatrolService.delAndInsertBatch(yesterdayParam, insertList); + Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); log.debug("initStaffPatrolStats insert rows:{}", effectRow); } @@ -255,6 +262,10 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { } private void submitJob(BizDataFormDTO param) { + if (StringUtils.isBlank(param.getDateId()) && (StringUtils.isBlank(param.getStartDate()) && StringUtils.isBlank(param.getEndDate()))) { + //如果没有设置开始日期、结束日期,默认查询今天 + param.setDateId(DimIdGenerator.getDateDimId(new Date())); + } boolean isRange = StringUtils.isBlank(param.getDateId()); List daysBetween = null; if (isRange) { @@ -265,11 +276,6 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { StaffPatrolStatsFormDTO formDTO = ConvertUtils.sourceToTarget(param, StaffPatrolStatsFormDTO.class); if (!isRange) { try { - //执行参数改为今天 - Date parse = DateUtils.parse(param.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD); - Date addDateId = DateUtils.addDateDays(parse, NumConstant.ONE); - String dateDimId = DimIdGenerator.getDateDimId(addDateId); - formDTO.setDateId(dateDimId); //初始化form里的今天的数据 并纠正昨日的数据 this.executeStaffPatrolStats(formDTO); } catch (Exception e) { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java index ca6e9b5988..0da9e3eea6 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java @@ -11,7 +11,6 @@ import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity; import com.epmet.service.user.StatsStaffPatrolService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -33,16 +32,6 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService { @Override public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List insertList) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StatsStaffPatrolRecordDailyEntity::getCustomerId, formDTO.getCustomerId()) - .eq(StatsStaffPatrolRecordDailyEntity::getDateId, formDTO.getDateId()); - if (StringUtils.isNotBlank(formDTO.getGridId())) { - queryWrapper.eq(StatsStaffPatrolRecordDailyEntity::getGridId, formDTO.getGridId()); - } - if (StringUtils.isNotBlank(formDTO.getStaffId())) { - queryWrapper.eq(StatsStaffPatrolRecordDailyEntity::getStaffId, formDTO.getStaffId()); - } - int delete = statsStaffPatrolRecordDailyDao.delete(formDTO); log.debug("delAndInsertBatch delete:{},param:{}", delete, JSON.toJSONString(formDTO)); return statsStaffPatrolRecordDailyDao.insertBatch(insertList);