Browse Source

Merge remote-tracking branch 'origin/dev_patrol_stats' into develop

dev_shibei_match
zxc 4 years ago
parent
commit
1b81bd8c56
  1. 35
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java
  2. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java

35
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java

@ -11,7 +11,6 @@ import com.epmet.dto.user.result.CustomerGridStaffDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
import com.epmet.dto.user.result.StaffPatrolRecordResult;
import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO;
import com.epmet.entity.user.StatsStaffPatrolRecordDailyEntity;
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService;
import com.epmet.service.org.CustomerStaffService;
import com.epmet.service.project.ProjectService;
@ -20,6 +19,7 @@ import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -64,12 +64,16 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
private void reloadStaffPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
//获取昨日的巡查统计记录
String yesterdayStr = getYesterdayString(formDTO);
List<StatsStaffPatrolRecordDailyDTO> yesterdayStatsList = statsStaffPatrolService.selectData(formDTO.getCustomerId(), yesterdayStr);
StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class);
yesterdayParam.setDateId(yesterdayStr);
//遍历网格员重新初始化数据
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(yesterdayParam, allGridMembers);
/* List<StatsStaffPatrolRecordDailyDTO> yesterdayStatsList = statsStaffPatrolService.selectData(formDTO.getCustomerId(), yesterdayStr);
if (CollectionUtils.isEmpty(yesterdayStatsList)) {
log.warn("reloadStaffPatrolStatsData have any yesterdayStats data,dateId:{}", yesterdayStr);
return;
}
Map<String, StatsStaffPatrolRecordDailyDTO> yesterdayStatsMap = yesterdayStatsList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1));
}*/
Map<String, StatsStaffPatrolRecordDailyDTO> yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1));
//获取昨日的巡查记录
List<StaffPatrolRecordResult> yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), yesterdayStr);
@ -77,13 +81,11 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
List<ProjectDTO> yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), yesterdayStr, ProjectConstant.PROJECT_ORIGIN_AGENCY);
//遍历网格员 设置其 巡查次数 巡查时常 上报项目数
Map<String, CustomerGridStaffDTO> gridMemberMap = allGridMembers.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getUserId(), o -> o, (o1, o2) -> o1));
List<StatsStaffPatrolRecordDailyEntity> updateList = new ArrayList<>();
yesterdayPatrolList.forEach(patrolRecord -> {
String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId());
StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key);
if (patrolRecordDailyDTO != null) {
long total = (patrolRecord.getActrualEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000;
long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000;
if (patrolRecordDailyDTO.getTotalTime() == null) {
patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO);
}
@ -101,25 +103,24 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
});
//填充项目数
yesterdayProjectList.forEach(projectDTO -> {
String key = projectDTO.getCreatedBy();
yesterdayPatrolList.forEach(patrol -> {
//项目立项时间 在巡查期间时 总数加1
long projectCreateTime = projectDTO.getCreatedTime().getTime();
if (patrol.getPatrolStartTime().getTime() >= projectCreateTime && patrol.getPatrolStartTime().getTime() >= projectCreateTime) {
if (projectCreateTime>= patrol.getPatrolStartTime().getTime() && projectCreateTime <= patrol.getPatrolEndTime().getTime()) {
String unqPatrolKey = getUnqPatrolKey(patrol.getGrid(), patrol.getStaffId());
StatsStaffPatrolRecordDailyDTO recordDailyDTO = yesterdayStatsMap.get(unqPatrolKey);
if (recordDailyDTO == null) {
log.error("have project data but have any patrolRecordDaily,gridId:{},staffId:{}", patrol.getGrid(), patrol.getStaffId());
return;
}
recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + 1);
}
});
});
StaffPatrolStatsFormDTO yesterdayParam = ConvertUtils.sourceToTarget(formDTO, StaffPatrolStatsFormDTO.class);
yesterdayParam.setDateId(yesterdayStr);
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(yesterdayParam, yesterdayStatsList);
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(yesterdayParam, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
}
@ -147,6 +148,13 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
private void initStaffPatrolTodayData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
List<StatsStaffPatrolRecordDailyDTO> insertList = buildInitPatrolStatsData(formDTO, allGridMembers);
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
}
@NotNull
private List<StatsStaffPatrolRecordDailyDTO> buildInitPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List<CustomerGridStaffDTO> allGridMembers) {
List<StatsStaffPatrolRecordDailyDTO> lastStaffPatrolList = userService.selectLastStaffPatrolList(formDTO);
Map<String, StatsStaffPatrolRecordDailyDTO> lastPatrolMap = lastStaffPatrolList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1));
//构建数据 插入
@ -181,8 +189,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
insertList.add(record);
});
Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList);
log.debug("initStaffPatrolStats insert rows:{}", effectRow);
return insertList;
}
private List<CustomerGridStaffDTO> getAllGridMembers(StaffPatrolStatsFormDTO formDTO) {

8
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffPatrolRecordServiceImpl.java

@ -252,13 +252,13 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
if (record.getPatrolStartTime().compareTo(endTime) > 0) {
throw new RenException(EpmetErrorCode.PATROL_END_TIME_ERROR.getCode());
}
Date actrualEndTime = new Date();
record.setActrualEndTime(actrualEndTime);
record.setActrualEndTime(new Date());
record.setUpdatedTime(null);
// 方便巡查统计表使用
Date patrolEndTime = DateUtils.parse(formDTO.getPatrolEndTime(), DateUtils.DATE_TIME_PATTERN);
record.setPatrolEndTime(patrolEndTime);
Integer totalTime = DateUtils.calculateSecond(record.getPatrolStartTime(), record.getPatrolEndTime());
// 总时间+59s,防止筛选项目时漏掉
Integer totalTime = DateUtils.calculateSecond(record.getPatrolStartTime(), record.getPatrolEndTime()) + 59;
record.setTotalTime(totalTime);
record.setStatus(PatrolConstant.END);
baseDao.updateById(record);
@ -273,7 +273,7 @@ public class StaffPatrolRecordServiceImpl extends BaseServiceImpl<StaffPatrolRec
detailEntity.setSpeed(formDTO.getSpeed());
staffPatrolDetailService.insert(detailEntity);
// 添加巡查统计表逻辑
statsPatrolUpdateEnd(tokenDto.getUserId(),totalTime,record.getPatrolStartTime(),actrualEndTime,record.getGrid());
statsPatrolUpdateEnd(tokenDto.getUserId(),totalTime,record.getPatrolStartTime(),patrolEndTime,record.getGrid());
}
/**

Loading…
Cancel
Save