|
@ -431,8 +431,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
ProjectOrgRelationEntity carrier = new ProjectOrgRelationEntity(); |
|
|
ProjectOrgRelationEntity carrier = new ProjectOrgRelationEntity(); |
|
|
carrier.setProjectStaffId(operatorProjectReference.getId()); |
|
|
carrier.setProjectStaffId(operatorProjectReference.getId()); |
|
|
carrier.setOperation(ProjectConstant.OPERATION_CLOSE); |
|
|
carrier.setOperation(ProjectConstant.OPERATION_CLOSE); |
|
|
|
|
|
carrier.setTotalPeriod(delta_t); |
|
|
carrier.setHandledDate(current); |
|
|
carrier.setHandledDate(current); |
|
|
|
|
|
if(null == orientRelation.getFirstDealtDate()){ |
|
|
carrier.setFirstReplyPeriod(delta_t); |
|
|
carrier.setFirstReplyPeriod(delta_t); |
|
|
|
|
|
carrier.setFirstDealtDate(current); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
relationDao.maintainTimePropertyConsistency(carrier); |
|
|
relationDao.maintainTimePropertyConsistency(carrier); |
|
|
|
|
|
|
|
|
//通知
|
|
|
//通知
|
|
@ -836,7 +841,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
//处理响应记录加入项目进展表
|
|
|
//处理响应记录加入项目进展表
|
|
|
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity(); |
|
|
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity(); |
|
|
projectProcessEntity.setProjectId(formDTO.getProjectId()); |
|
|
projectProcessEntity.setProjectId(formDTO.getProjectId()); |
|
|
projectEntity.setCustomerId(projectStaff.getCustomerId()); |
|
|
projectProcessEntity.setCustomerId(projectStaff.getCustomerId()); |
|
|
projectProcessEntity.setDepartmentName(formDTO.getDepartmentName()); |
|
|
projectProcessEntity.setDepartmentName(formDTO.getDepartmentName()); |
|
|
projectProcessEntity.setOrgIdPath(projectStaff.getOrgIdPath()); |
|
|
projectProcessEntity.setOrgIdPath(projectStaff.getOrgIdPath()); |
|
|
projectProcessEntity.setGridId(projectStaff.getGridId()); |
|
|
projectProcessEntity.setGridId(projectStaff.getGridId()); |
|
@ -1018,6 +1023,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
List<ProjectOrgRelationWhenResponseResultDTO> responseList = projectProcessService.selectResponseTrace(projects); |
|
|
List<ProjectOrgRelationWhenResponseResultDTO> responseList = projectProcessService.selectResponseTrace(projects); |
|
|
Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> sorted = |
|
|
Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> sorted = |
|
|
responseList.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getProjectId)); |
|
|
responseList.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getProjectId)); |
|
|
|
|
|
//跨级分组
|
|
|
skipLevelGrouping(projectMap,sorted); |
|
|
skipLevelGrouping(projectMap,sorted); |
|
|
List<ProjectOrgPeriodResultDTO> calculatedData = new LinkedList<>(); |
|
|
List<ProjectOrgPeriodResultDTO> calculatedData = new LinkedList<>(); |
|
|
projectMap.values().forEach(list -> {list.forEach(obj -> {calculatedData.add(obj);});}); |
|
|
projectMap.values().forEach(list -> {list.forEach(obj -> {calculatedData.add(obj);});}); |
|
@ -1042,16 +1048,39 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
List<String> identities = totalContainer.stream().map(ProjectOrgRelationDTO::getProjectStaffId).distinct().collect(Collectors.toList()); |
|
|
List<String> identities = totalContainer.stream().map(ProjectOrgRelationDTO::getProjectStaffId).distinct().collect(Collectors.toList()); |
|
|
ListUtils.partition(identities,NumConstant.ONE_THOUSAND).forEach(partition -> {relationDao.deleteBatch(partition);}); |
|
|
ListUtils.partition(identities,NumConstant.ONE_THOUSAND).forEach(partition -> {relationDao.deleteBatch(partition);}); |
|
|
|
|
|
|
|
|
List<TimestampIntervalFormDTO> timeInterval = totalContainer.stream().map(relation -> { |
|
|
/*List<TimestampIntervalFormDTO> timeInterval = totalContainer.stream().map(relation -> { |
|
|
TimestampIntervalFormDTO interval = new TimestampIntervalFormDTO(); |
|
|
TimestampIntervalFormDTO interval = new TimestampIntervalFormDTO(); |
|
|
interval.setId(relation.getProjectStaffId()); |
|
|
interval.setId(relation.getProjectStaffId()); |
|
|
interval.setLeft(relation.getInformedDate()); |
|
|
interval.setLeft(relation.getInformedDate()); |
|
|
interval.setRight(relation.getHandledDate()); |
|
|
interval.setRight(relation.getHandledDate()); |
|
|
return interval; |
|
|
return interval; |
|
|
}).collect(Collectors.toList()); |
|
|
}).collect(Collectors.toList());*/ |
|
|
|
|
|
|
|
|
|
|
|
List<TimestampIntervalFormDTO> handleTimeInterval = new LinkedList<>(); |
|
|
|
|
|
|
|
|
|
|
|
List<TimestampIntervalFormDTO> responseTimeInterval = new LinkedList<>(); |
|
|
|
|
|
totalContainer.forEach(local -> { |
|
|
|
|
|
if(null != local.getHandledDate()){ |
|
|
|
|
|
TimestampIntervalFormDTO handle = new TimestampIntervalFormDTO(); |
|
|
|
|
|
handle.setId(local.getProjectStaffId()); |
|
|
|
|
|
handle.setLeft(local.getInformedDate()); |
|
|
|
|
|
handle.setRight(local.getHandledDate()); |
|
|
|
|
|
handleTimeInterval.add(handle); |
|
|
|
|
|
} |
|
|
|
|
|
if(null != local.getFirstDealtDate()){ |
|
|
|
|
|
TimestampIntervalFormDTO response = new TimestampIntervalFormDTO(); |
|
|
|
|
|
response.setId(local.getProjectStaffId()); |
|
|
|
|
|
response.setLeft(local.getInformedDate()); |
|
|
|
|
|
response.setRight(local.getFirstDealtDate()); |
|
|
|
|
|
responseTimeInterval.add(response); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,Integer> batchDelta_T = batchCalculateDelta_T(ProjectConstant.IMPRECISE_CALCULATION, |
|
|
Map<String,Integer> batchDelta_T = batchCalculateDelta_T(ProjectConstant.IMPRECISE_CALCULATION, |
|
|
ProjectConstant.CALCULATION_TYPE_DEFAULT,timeInterval); |
|
|
ProjectConstant.CALCULATION_TYPE_DEFAULT,handleTimeInterval); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,ProjectOrgRelationDTO> dataMap = |
|
|
Map<String,ProjectOrgRelationDTO> dataMap = |
|
|
totalContainer.stream().collect(Collectors.toMap(ProjectOrgRelationDTO::getProjectStaffId, Function.identity(), (key1, key2) -> key2)); |
|
|
totalContainer.stream().collect(Collectors.toMap(ProjectOrgRelationDTO::getProjectStaffId, Function.identity(), (key1, key2) -> key2)); |
|
@ -1061,6 +1090,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
dataMap.forEach((k,v) -> { |
|
|
dataMap.forEach((k,v) -> { |
|
|
if(null != v){ |
|
|
if(null != v){ |
|
|
v.setTotalPeriod(batchDelta_T.get(k)); |
|
|
v.setTotalPeriod(batchDelta_T.get(k)); |
|
|
|
|
|
if(v.getHandledDate() == v.getFirstDealtDate())v.setFirstReplyPeriod(batchDelta_T.get(k)); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
List<List<ProjectOrgRelationDTO>> partition = ListUtils.partition(totalContainer, NumConstant.ONE_HUNDRED); |
|
|
List<List<ProjectOrgRelationDTO>> partition = ListUtils.partition(totalContainer, NumConstant.ONE_HUNDRED); |
|
@ -1212,11 +1242,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
if (!org.springframework.util.CollectionUtils.isEmpty(incompleteBodyUnit) && !org.springframework.util.CollectionUtils.isEmpty(staffResponseTraceUnit)) { |
|
|
if (!org.springframework.util.CollectionUtils.isEmpty(incompleteBodyUnit) && !org.springframework.util.CollectionUtils.isEmpty(staffResponseTraceUnit)) { |
|
|
|
|
|
|
|
|
//int lastEndCount = NumConstant.ONE_NEG;
|
|
|
//int lastEndCount = NumConstant.ONE_NEG;
|
|
|
|
|
|
int seq = NumConstant.ZERO; |
|
|
a: |
|
|
a: |
|
|
for (int index = NumConstant.ZERO; index < staffResponseTraceUnit.size(); index++) { |
|
|
for (int index = NumConstant.ZERO; index < staffResponseTraceUnit.size(); index++) { |
|
|
|
|
|
if(StringUtils.isNotBlank(staffResponseTraceUnit.get(index).getOperation()) && staffResponseTraceUnit.get(index).getOperation().contains("create")) continue; |
|
|
if (StringUtils.equals("response", staffResponseTraceUnit.get(index).getOperation())) { |
|
|
if (StringUtils.equals("response", staffResponseTraceUnit.get(index).getOperation())) { |
|
|
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); |
|
|
|
|
|
|
|
|
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index),seq); |
|
|
|
|
|
seq++; |
|
|
int cursor = index; |
|
|
int cursor = index; |
|
|
if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; |
|
|
if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; |
|
|
while (StringUtils.equals("response", staffResponseTraceUnit.get(cursor++).getOperation())) { |
|
|
while (StringUtils.equals("response", staffResponseTraceUnit.get(cursor++).getOperation())) { |
|
@ -1225,7 +1258,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; |
|
|
if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; |
|
|
index = cursor; |
|
|
index = cursor; |
|
|
} else { |
|
|
} else { |
|
|
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); |
|
|
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index),seq); |
|
|
|
|
|
seq++; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -1239,13 +1273,10 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void replaceFirstResponseDate(List<ProjectOrgPeriodResultDTO> dest, |
|
|
private void replaceFirstResponseDate(List<ProjectOrgPeriodResultDTO> dest, |
|
|
ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit){ |
|
|
ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit,int seq){ |
|
|
// 传递过来的dest是已经按照projectId分好组之后再按照staff分组的集合
|
|
|
// 传递过来的dest是已经按照projectId分好组之后再按照staff分组的集合
|
|
|
// dest key->staff
|
|
|
// dest key->staff
|
|
|
for(int cursor = 0; cursor < dest.size(); cursor++){ |
|
|
ProjectOrgPeriodResultDTO target = dest.get(seq); |
|
|
if(dest.get(cursor).getPeriodTillReplyFirstly() == null) continue; |
|
|
if(null != target) target.setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime()); |
|
|
dest.get(cursor).setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |