Browse Source

project-period数据抽取修改

dev_shibei_match
wangchao 5 years ago
parent
commit
7dcc09f0b8
  1. 13
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java
  2. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.java
  3. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/ProjectExtractService.java
  4. 75
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectExtractServiceImpl.java
  5. 65
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectPeriodExtractServiceImpl.java
  6. 76
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java
  7. 54
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml
  8. 5
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml

13
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java

@ -26,17 +26,18 @@ public class ProjectOrgPeriodResultDTO implements Serializable {
* */ * */
private String projectId; private String projectId;
/** /**
* 是这个节点的操作相当于上一个人的操作而不是对于这个节点的处理 * 对这个节点的处理如果未处理则为null
* created transfer close return response * created transfer close return response(查不出response,因为response类型的节点不会与process_staff产生关联需要另取)
* */ * */
private String operation; private String operation;
/** /**
* 对这个节点的处理如果未处理则为null * 是这个节点的操作相当于上一个人的操作而不是对于这个节点的处理
* created transfer close return response(查不出response,因为response类型的节点不会与process_staff产生关联需要另取) * created transfer close return response
* */ * */
private String selfAction; private String lastAction;
/** /**
* 节点所属的机关即上个节点推到这个节点的负责部门 * 节点所属的机关即上个节点推到这个节点的负责部门
@ -83,6 +84,6 @@ public class ProjectOrgPeriodResultDTO implements Serializable {
/** /**
* 第一次响应时间 * 第一次响应时间
* */ * */
private Date firstResponseDate; private Date periodTillReplyFirstly;
} }

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.java

@ -22,6 +22,8 @@ import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyE
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 业务数据抽取-机关项目响应时间 * 业务数据抽取-机关项目响应时间
* *
@ -42,10 +44,19 @@ public interface FactOriginProjectOrgPeriodDailyDao extends BaseDao<FactOriginPr
/** /**
* @Description 在插入之前先删除所有与这个项目相关的历时信息 * @Description 在插入之前先删除所有与这个项目相关的历时信息
* @param projectId * @param list
* @return * @return
* @author wangc * @author wangc
* @date 2020.09.17 14:43 * @date 2020.09.17 14:43
**/ **/
void deleteByProjectId(@Param("projectId") String projectId); void deleteByProjectId(@Param("list") List<String> list);
/**
* @Description 批量插入
* @param list
* @return
* @author wangc
* @date 2020.09.18 17:11
**/
void insertBatch(@Param("list") List<FactOriginProjectOrgPeriodDailyEntity> list);
} }

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/ProjectExtractService.java

@ -1,7 +1,10 @@
package com.epmet.service.evaluationindex.extract; package com.epmet.service.evaluationindex.extract;
import com.epmet.dto.extract.form.ExtractFormDTO; import com.epmet.dto.extract.form.ExtractFormDTO;
import java.util.Date;
/** /**
* @author zhaoqifeng * @author zhaoqifeng
* @dscription * @dscription
@ -19,4 +22,13 @@ public interface ProjectExtractService {
* @date 2020/9/15 14:38 * @date 2020/9/15 14:38
*/ */
void saveOriginProjectDaily(ExtractFormDTO extractFormDTO); void saveOriginProjectDaily(ExtractFormDTO extractFormDTO);
/**
* @Description 抽取项目节点历时逻辑
* @param param
* @return
* @author wangc
* @date 2020.09.17 14:05
**/
void extractProjectPeriodData(ExtractFormDTO param);
} }

75
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectExtractServiceImpl.java

@ -1,8 +1,10 @@
package com.epmet.service.evaluationindex.extract.impl; package com.epmet.service.evaluationindex.extract.impl;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao;
import com.epmet.dto.ProjectDTO; import com.epmet.dto.ProjectDTO;
import com.epmet.dto.extract.FactOriginProjectMainDailyDTO; import com.epmet.dto.extract.FactOriginProjectMainDailyDTO;
import com.epmet.dto.extract.form.ExtractFormDTO; import com.epmet.dto.extract.form.ExtractFormDTO;
@ -10,10 +12,12 @@ import com.epmet.dto.form.WorkDayFormDTO;
import com.epmet.dto.issue.IssueDTO; import com.epmet.dto.issue.IssueDTO;
import com.epmet.dto.party.PartyMemberDTO; import com.epmet.dto.party.PartyMemberDTO;
import com.epmet.dto.project.ProcessInfoDTO; import com.epmet.dto.project.ProcessInfoDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.result.WorkDayResultDTO; import com.epmet.dto.result.WorkDayResultDTO;
import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.topic.ResiTopicDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectLogDailyEntity; import com.epmet.entity.evaluationindex.extract.FactOriginProjectLogDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.entity.project.ProjectProcessEntity; import com.epmet.entity.project.ProjectProcessEntity;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.Issue.IssueService; import com.epmet.service.Issue.IssueService;
@ -28,10 +32,12 @@ import com.epmet.util.DimIdGenerator;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
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 org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -59,7 +65,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
private ProjectProcessService projectProcessService; private ProjectProcessService projectProcessService;
@Autowired @Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Autowired
private FactOriginProjectOrgPeriodDailyDao factOriginProjectOrgPeriodDailyDao;
@Override @Override
public void saveOriginProjectDaily(ExtractFormDTO extractFormDTO) { public void saveOriginProjectDaily(ExtractFormDTO extractFormDTO) {
@ -219,6 +226,72 @@ public class ProjectExtractServiceImpl implements ProjectExtractService {
} }
} }
/**
* @Description 抽取项目节点历时逻辑
* @param param
* @return
* @author wangc
* @date 2020.09.17 14:05
**/
@Override
public void extractProjectPeriodData(ExtractFormDTO param) {
int trace = factOriginProjectOrgPeriodDailyDao.selectIfExisted(param.getCustomerId());
Boolean isFirst = trace <= NumConstant.ZERO ? true : false;
if(StringUtils.isBlank(param.getDateId())){
Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
param.setDateId(format.format(yesterday));
}
List<ProjectOrgPeriodResultDTO> extractData =
projectProcessService.getProjectPeriod(isFirst,param.getCustomerId(),param.getDateId());
List<FactOriginProjectOrgPeriodDailyEntity> formattingData = new LinkedList<>();
extractData.forEach(original -> {
FactOriginProjectOrgPeriodDailyEntity dest
= ConvertUtils.sourceToTarget(original,FactOriginProjectOrgPeriodDailyEntity.class);
if(StringUtils.isNotBlank(original.getDepartmentId())){
dest.setOrgType("dept");
dest.setPid(original.getOrgId());
dest.setPids(original.getOrgIdPath());
}else if(StringUtils.isNotBlank(original.getGridId())){
dest.setOrgType("grid");
dest.setPid(original.getOrgId());
dest.setPids(original.getOrgIdPath());
}else{
dest.setOrgType("agency");
dest.setPids("");
String[] array = original.getOrgIdPath().split(":");
if(null == array || array.length <= NumConstant.ZERO){
dest.setPid(NumConstant.ZERO_STR);
}
if(array[NumConstant.ZERO] == original.getOrgId() && array.length == NumConstant.ONE){
dest.setPid(NumConstant.ZERO_STR);
}
if(array.length > NumConstant.ONE && original.getOrgId() == array[array.length - NumConstant.ONE]){
dest.setPid(array[array.length - NumConstant.TWO]);
dest.setPids(original.getOrgIdPath().replace(original.getOrgId(),""));
}
if(StringUtils.isNotBlank(dest.getPids())){
while(dest.getPids().endsWith(":")){
dest.setPids(dest.getPids().substring(NumConstant.ZERO,dest.getPids().length() - NumConstant.ONE));
}
while(dest.getPids().startsWith(":")){
dest.setPids(dest.getPids().replaceFirst(":",""));
}
}
dest.setPids(dest.getPids().replaceAll(" ",""));
}
formattingData.add(dest);
});
if(!CollectionUtils.isEmpty(formattingData)) {
List<String> projectIds = formattingData.stream().map(FactOriginProjectOrgPeriodDailyEntity::getProjectId).distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(projectIds)) {
factOriginProjectOrgPeriodDailyDao.deleteByProjectId(projectIds);
factOriginProjectOrgPeriodDailyDao.insertBatch(formattingData);
}
}
}
/** /**
* 工作日计算 * 工作日计算

65
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/impl/ProjectPeriodExtractServiceImpl.java

@ -1,16 +1,26 @@
package com.epmet.service.evaluationindex.extract.impl; package com.epmet.service.evaluationindex.extract.impl;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao; import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao;
import com.epmet.dto.extract.form.ExtractFormDTO; import com.epmet.dto.extract.form.ExtractFormDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO; import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO; import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO;
import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity;
import com.epmet.service.evaluationindex.extract.ProjectPeriodExtractService; import com.epmet.service.evaluationindex.extract.ProjectPeriodExtractService;
import com.epmet.service.project.ProjectProcessService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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 org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Description 业务数据抽取 - 项目节点历时 * @Description 业务数据抽取 - 项目节点历时
@ -24,7 +34,8 @@ public class ProjectPeriodExtractServiceImpl implements ProjectPeriodExtractServ
@Autowired @Autowired
private FactOriginProjectOrgPeriodDailyDao factOriginProjectOrgPeriodDailyDao; private FactOriginProjectOrgPeriodDailyDao factOriginProjectOrgPeriodDailyDao;
@Autowired
private ProjectProcessService projectProcessService;
/** /**
* @Description 抽取项目节点历时逻辑 * @Description 抽取项目节点历时逻辑
@ -37,6 +48,58 @@ public class ProjectPeriodExtractServiceImpl implements ProjectPeriodExtractServ
public void extractProjectPeriodData(ExtractFormDTO param) { public void extractProjectPeriodData(ExtractFormDTO param) {
int trace = factOriginProjectOrgPeriodDailyDao.selectIfExisted(param.getCustomerId()); int trace = factOriginProjectOrgPeriodDailyDao.selectIfExisted(param.getCustomerId());
Boolean isFirst = trace <= NumConstant.ZERO ? true : false; Boolean isFirst = trace <= NumConstant.ZERO ? true : false;
if(StringUtils.isBlank(param.getDateId())){
Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
param.setDateId(format.format(yesterday));
}
List<ProjectOrgPeriodResultDTO> extractData =
projectProcessService.getProjectPeriod(isFirst,param.getCustomerId(),param.getDateId());
List<FactOriginProjectOrgPeriodDailyEntity> formattingData = new LinkedList<>();
extractData.forEach(original -> {
FactOriginProjectOrgPeriodDailyEntity dest
= ConvertUtils.sourceToTarget(original,FactOriginProjectOrgPeriodDailyEntity.class);
if(StringUtils.isNotBlank(original.getDepartmentId())){
dest.setOrgType("dept");
dest.setPid(original.getOrgId());
dest.setPids(original.getOrgIdPath());
}else if(StringUtils.isNotBlank(original.getGridId())){
dest.setOrgType("grid");
dest.setPid(original.getOrgId());
dest.setPids(original.getOrgIdPath());
}else{
dest.setOrgType("agency");
dest.setPids("");
String[] array = original.getOrgIdPath().split(":");
if(null == array || array.length <= NumConstant.ZERO){
dest.setPid(NumConstant.ZERO_STR);
}
if(array[NumConstant.ZERO] == original.getOrgId() && array.length == NumConstant.ONE){
dest.setPid(NumConstant.ZERO_STR);
}
if(array.length > NumConstant.ONE && original.getOrgId() == array[array.length - NumConstant.ONE]){
dest.setPid(array[array.length - NumConstant.TWO]);
dest.setPids(original.getOrgIdPath().replace(original.getOrgId(),""));
}
if(StringUtils.isNotBlank(dest.getPids())){
while(dest.getPids().endsWith(":")){
dest.setPids(dest.getPids().substring(NumConstant.ZERO,dest.getPids().length() - NumConstant.ONE));
}
while(dest.getPids().startsWith(":")){
dest.setPids(dest.getPids().replaceFirst(":",""));
}
}
dest.setPids(dest.getPids().replaceAll(" ",""));
}
formattingData.add(dest);
});
if(!CollectionUtils.isEmpty(formattingData)) {
List<String> projectIds = formattingData.stream().map(FactOriginProjectOrgPeriodDailyEntity::getProjectId).distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(projectIds)) {
factOriginProjectOrgPeriodDailyDao.deleteByProjectId(projectIds);
factOriginProjectOrgPeriodDailyDao.insertBatch(formattingData);
}
}
} }
} }

76
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java

@ -19,19 +19,22 @@ package com.epmet.service.project.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.constant.DataSourceConstant; import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.project.ProjectProcessDao; import com.epmet.dao.project.ProjectProcessDao;
import com.epmet.dto.form.CommonStaffIdFormDTO;
import com.epmet.dto.project.ProcessInfoDTO; import com.epmet.dto.project.ProcessInfoDTO;
import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO; import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO;
import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO; import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO;
import com.epmet.entity.project.ProjectEntity; import com.epmet.entity.project.ProjectEntity;
import com.epmet.entity.project.ProjectProcessEntity; import com.epmet.entity.project.ProjectProcessEntity;
import com.epmet.service.project.ProjectProcessService; import com.epmet.service.project.ProjectProcessService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -40,6 +43,7 @@ import java.util.stream.Collectors;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-05-11 * @since v1.0.0 2020-05-11
*/ */
@Slf4j
@Service @Service
@DataSource(DataSourceConstant.GOV_PROJECT) @DataSource(DataSourceConstant.GOV_PROJECT)
public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao, ProjectProcessEntity> implements ProjectProcessService { public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao, ProjectProcessEntity> implements ProjectProcessService {
@ -93,19 +97,83 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
} }
if(!CollectionUtils.isEmpty(projectNodePeriodPerOrgList)){ if(!CollectionUtils.isEmpty(projectNodePeriodPerOrgList)){
Map<String,List<ProjectOrgPeriodResultDTO>> processMap
= projectNodePeriodPerOrgList.stream().collect(Collectors.groupingBy(ProjectOrgPeriodResultDTO :: getProcessId));
List<String> projects = List<String> projects =
projectNodePeriodPerOrgList.stream().map(ProjectOrgPeriodResultDTO::getProjectId).distinct().collect(Collectors.toList()); projectNodePeriodPerOrgList.stream().map(ProjectOrgPeriodResultDTO::getProjectId).distinct().collect(Collectors.toList());
if(!projects.isEmpty()){ if(!projects.isEmpty()){
List<ProjectOrgRelationWhenResponseResultDTO> responseList = baseDao.selectResponseTrace(projects); List<ProjectOrgRelationWhenResponseResultDTO> responseList = baseDao.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(processMap,sorted);
List<ProjectOrgPeriodResultDTO> result = new LinkedList<>();
processMap.values().forEach(list -> {list.forEach(obj -> {result.add(obj);});});
return result;
} }
} }
return null; return new ArrayList<>();
}
/**
* @Description 跨级分组 eg -> transfer ; response response transfer ; return ; response close.
* @param dest - Map<String,List<ProjectOrgPeriodResultDTO>> 需要填充的数据
* @param fillFactor - Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> 填充因子
* @return
* @author wangc
* @date 2020.09.18 15:27
**/
private void skipLevelGrouping(Map<String,List<ProjectOrgPeriodResultDTO>> dest,Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> fillFactor){
for(String projectId : fillFactor.keySet()){
List<ProjectOrgRelationWhenResponseResultDTO> projectTraceUnit = fillFactor.get(projectId);
if(!projectTraceUnit.isEmpty()){
Map<String,List<ProjectOrgRelationWhenResponseResultDTO>> staffResponseTrace =
projectTraceUnit.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getStaffId));
if(!CollectionUtils.isEmpty(staffResponseTrace)){
staffResponseTrace.keySet().forEach( staffId -> {
if(!CollectionUtils.isEmpty(staffResponseTrace.get(staffId))){
List<ProjectOrgRelationWhenResponseResultDTO> staffResponseTraceUnit
= staffResponseTrace.get(staffId);
int lastEndCount = NumConstant.ONE_NEG;
for(int index = NumConstant.ZERO; index < staffResponseTraceUnit.size(); index ++){
if(StringUtils.equalsAny(staffResponseTraceUnit.get(index).getOperation(),
"transfer","return","close")){
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,false);
lastEndCount = index;
}else{
if(lastEndCount == NumConstant.ONE_NEG) continue;
if(index - NumConstant.ONE == lastEndCount){
replaceFirstResponseDate(dest,index,staffResponseTraceUnit,true);
}else{continue;}
} }
}
}
});
}
}
}
}
private void replaceFirstResponseDate(Map<String,List<ProjectOrgPeriodResultDTO>> dest, int index, List<ProjectOrgRelationWhenResponseResultDTO> staffResponseTraceUnit, boolean ifResponsed){
List<ProjectOrgPeriodResultDTO> processSingleList =
dest.get(staffResponseTraceUnit.get(index).getProcessId());
if(!CollectionUtils.isEmpty(processSingleList)){
ProjectOrgPeriodResultDTO element = processSingleList.get(NumConstant.ZERO);
if(!ifResponsed && null == element.getHandledDate()){
log.warn("com.epmet.service.project.impl.ProjectProcessServiceImpl.skipLevelGrouping::已流出节点没有办结日期,节点ID{}",element.getProcessId() );
}
element.setPeriodTillReplyFirstly(ifResponsed ? staffResponseTraceUnit.get(index).getCreatedTime() :element.getHandledDate());
}
}
} }

54
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml

@ -37,7 +37,59 @@
<delete id="deleteByProjectId"> <delete id="deleteByProjectId">
DELETE FROM DELETE FROM
fact_origin_project_org_period_daily fact_origin_project_org_period_daily
WHERE PROJECT_ID = #{projectId} WHERE
DEL_FLAG = '0'
<foreach collection="list" open="AND ( " close=" )" separator=" OR " item="item">
PROJECT_ID = #{item}
</foreach>
</delete> </delete>
<!-- 批量插入 -->
<insert id="insertBatch" parameterType="java.util.List">
insert into fact_origin_project_org_period_daily
(
id,
customer_id,
project_id,
org_id,
org_type,
pid,
pids,
informed_date,
handled_date,
total_period,
period_till_reply_firstly,
is_resolved,
operation,
del_flag,
revision,
created_time,
created_by,
updated_time,
updated_by
)values
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{customerId},
#{projectId},
#{orgId},
#{orgType},
#{pid},
#{pids},
#{informedDate},
#{handledDate},
#{totalPeriod},
#{periodTillReplyFirstly},
#{isResolved},
#{operation},
'0',
0,
'CRAWLER_ROBOT',
now(),
'CRAWLER_ROBOT',
now()
)
</foreach>
</insert>
</mapper> </mapper>

5
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml

@ -81,10 +81,11 @@
<!-- 查询项目-机关各个节点历时详情 --> <!-- 查询项目-机关各个节点历时详情 -->
<select id="selectProjectOrgPeriod" resultType="com.epmet.dto.project.result.ProjectOrgPeriodResultDTO"> <select id="selectProjectOrgPeriod" resultType="com.epmet.dto.project.result.ProjectOrgPeriodResultDTO">
SELECT SELECT
project.CUSTOMER_ID,
process.ID AS processId, process.ID AS processId,
process.PROJECT_ID, process.PROJECT_ID,
process.OPERATION, process.OPERATION AS lastAction,
IF(staff.IS_HANDLE='handle',selfAction.OPERATION,null) AS selfAction, IF(staff.IS_HANDLE='handle',selfAction.OPERATION,null) AS operation,
staff.DEPARTMENT_NAME, staff.DEPARTMENT_NAME,
staff.ORG_ID, staff.ORG_ID,
staff.DEPARTMENT_ID, staff.DEPARTMENT_ID,

Loading…
Cancel
Save