Browse Source

项目节点耗时数据补齐接口

master
wangchao 5 years ago
parent
commit
92e6ee41d4
  1. 59
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  2. 2
      epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml
  3. 11
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  4. 6
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml
  5. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml

59
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -431,8 +431,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
ProjectOrgRelationEntity carrier = new ProjectOrgRelationEntity();
carrier.setProjectStaffId(operatorProjectReference.getId());
carrier.setOperation(ProjectConstant.OPERATION_CLOSE);
carrier.setTotalPeriod(delta_t);
carrier.setHandledDate(current);
carrier.setFirstReplyPeriod(delta_t);
if(null == orientRelation.getFirstDealtDate()){
carrier.setFirstReplyPeriod(delta_t);
carrier.setFirstDealtDate(current);
}
relationDao.maintainTimePropertyConsistency(carrier);
//通知
@ -836,7 +841,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//处理响应记录加入项目进展表
ProjectProcessEntity projectProcessEntity = new ProjectProcessEntity();
projectProcessEntity.setProjectId(formDTO.getProjectId());
projectEntity.setCustomerId(projectStaff.getCustomerId());
projectProcessEntity.setCustomerId(projectStaff.getCustomerId());
projectProcessEntity.setDepartmentName(formDTO.getDepartmentName());
projectProcessEntity.setOrgIdPath(projectStaff.getOrgIdPath());
projectProcessEntity.setGridId(projectStaff.getGridId());
@ -1018,6 +1023,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
List<ProjectOrgRelationWhenResponseResultDTO> responseList = projectProcessService.selectResponseTrace(projects);
Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> sorted =
responseList.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getProjectId));
//跨级分组
skipLevelGrouping(projectMap,sorted);
List<ProjectOrgPeriodResultDTO> calculatedData = new LinkedList<>();
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());
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();
interval.setId(relation.getProjectStaffId());
interval.setLeft(relation.getInformedDate());
interval.setRight(relation.getHandledDate());
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,
ProjectConstant.CALCULATION_TYPE_DEFAULT,timeInterval);
ProjectConstant.CALCULATION_TYPE_DEFAULT,handleTimeInterval);
Map<String,ProjectOrgRelationDTO> dataMap =
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) -> {
if(null != v){
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);
@ -1212,11 +1242,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!org.springframework.util.CollectionUtils.isEmpty(incompleteBodyUnit) && !org.springframework.util.CollectionUtils.isEmpty(staffResponseTraceUnit)) {
//int lastEndCount = NumConstant.ONE_NEG;
int seq = NumConstant.ZERO;
a:
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())) {
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index));
replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index),seq);
seq++;
int cursor = index;
if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break;
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;
index = cursor;
} 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,
ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit){
ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit,int seq){
// 传递过来的dest是已经按照projectId分好组之后再按照staff分组的集合
// dest key->staff
for(int cursor = 0; cursor < dest.size(); cursor++){
if(dest.get(cursor).getPeriodTillReplyFirstly() == null) continue;
dest.get(cursor).setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime());
}
ProjectOrgPeriodResultDTO target = dest.get(seq);
if(null != target) target.setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime());
}
}

2
epmet-module/gov-project/gov-project-server/src/main/resources/logback-spring.xml

@ -134,7 +134,7 @@
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<springProfile name="dev,test,local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>

11
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -195,4 +195,15 @@
AND p.ID = #{id}
AND ps.IS_HANDLE = 'unhandled'
</select>
<select id="selectAllCustomerIds" resultType="string">
SELECT
distinct
CUSTOMER_ID
FROM
PROJECT
WHERE
DEL_FLAG = '0'
</select>
</mapper>

6
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml

@ -110,6 +110,7 @@
ID,
PROJECT_STAFF_ID,
INFORMED_DATE,
HANDLED_DATE,
CREATED_TIME,
UPDATED_TIME,
SOURCE_OPERATION,
@ -125,10 +126,11 @@
(SELECT REPLACE(UUID(),'-','') as id),
#{item.projectStaffId},
#{item.informedDate},
#{item.handledDate},
NOW(),
NOW(),
#{item.sourceOperation},
#{item.OPERATION},
#{item.operation},
#{item.totalPeriod},
#{item.firstDealtDate},
#{item.firstReplyPeriod},
@ -140,7 +142,7 @@
</insert>
<delete id="deleteBatch">
DELETE
DELETE FROM
project_org_relation
WHERE
<foreach collection="list" item="projectStaffId" open="" separator=" OR " close="">

1
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml

@ -156,7 +156,6 @@
staff.GRID_ID,
staff.STAFF_ID AS staffId,
staff.ORG_ID_PATH,
IF(staff.IS_HANDLE='handle',timestampdiff(MINUTE , staff.CREATED_TIME , staff.UPDATED_TIME),0) AS TOTAL_PERIOD,
staff.CREATED_TIME AS informedDate,
IF(staff.IS_HANDLE='handle','resolved','unresolved') AS isResolved,

Loading…
Cancel
Save