Browse Source

Merge branch 'dev_project_real_time_statistics' into dev_temp

master
zhaoqifeng 4 years ago
parent
commit
d4c37f4640
  1. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java
  2. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  3. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  4. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  5. 64
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  6. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java
  7. 32
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java

@ -171,4 +171,6 @@ public class ScreenProjectDataDTO implements Serializable {
private String topicId;
private Integer responseCount;
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -14,6 +14,10 @@ public interface ProjectConstant {
* 状态-结案
*/
String CLOSED = "closed";
/**
* 状态-结案
*/
String CLOSED_CASE = "closed_case";
/**
* 结案状态-已解决
*/

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java

@ -368,4 +368,6 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
* @date 2021/4/12 1:35 下午
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId);
List<ScreenProjectDataDTO> selectResponseCount(@Param("customerId") String customerId);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java

@ -357,4 +357,14 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriod(ScreenCentralZoneDataFormDTO param);
/**
* 计算项目事件级别
* @author zhaoqifeng
* @date 2021/4/28 14:47
* @param list
* @param customerId
* @return void
*/
void setProjectLevel(List<ScreenProjectDataDTO> list, String customerId);
}

64
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java

@ -23,6 +23,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectMainDailyDao;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao;
import com.epmet.dto.extract.FactOriginProjectMainDailyDTO;
@ -436,16 +437,33 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
ifBeforeYesterday = false;
}
List<ScreenProjectDataDTO> projects = baseDao.initNewScreenProjectData(customerId, rows <= NumConstant.ZERO ? "" : dateId, dateId);
//如果不是昨天立项
if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday)
computerIfExceed(projects,exceedLimit,about2exceedLimit);
projects.forEach(project -> {
if (ProjectConstant.CLOSED_CASE.equals(project.getProjectStatusCode())) {
//绿灯事件-结案项目
project.setProjectLevel(NumConstant.THREE);
} else {
if (NumConstant.ZERO == project.getResponseCount()) {
//红灯事件-未做任何响应处理未结案的项目
project.setProjectLevel(NumConstant.ONE);
} else {
//黄灯事件-至少做过一次响应处理答复但未结案的项目
project.setProjectLevel(NumConstant.TWO);
}
}
});
// //如果不是昨天立项
// if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday) {
// computerIfExceed(projects,exceedLimit,about2exceedLimit);
// }
return projects;
}
@Override
public void computerIfExceed(List<ScreenProjectDataDTO> list,Integer exceedLimit,Integer about2exceedLimit){
if(CollectionUtils.isEmpty(list)) return;
if(CollectionUtils.isEmpty(list)) {
return;
}
Result<List<CostDayResultDTO>> costDays = epmetCommonServiceOpenFeignClient.costWorkDays(periodDao.selectProjectNodeStartStopTime(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())));
if(null != costDays && !CollectionUtils.isEmpty(costDays.getData())){
//key : projectId
@ -456,10 +474,11 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
if(!CollectionUtils.isEmpty(days)){
Integer max = days.stream().max(Comparator.comparing(CostDayResultDTO::getDetentionDays)).get().getDetentionDays();
//事件级别 红色1级:已超期;黄色2级:即将超期;绿色3级:未超期
if(max > exceedLimit)
if(max > exceedLimit) {
o.setProjectLevel(NumConstant.ONE);
else if(max >= about2exceedLimit)
} else if(max >= about2exceedLimit) {
o.setProjectLevel(NumConstant.TWO);
}
}
return o;
}).collect(Collectors.toList());
@ -476,5 +495,38 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return baseDao.getProjectPeriodForDiff(param.getCustomerId(),param.getDateId());
}
/**
* 计算项目事件级别
*
* @param list
* @param customerId
* @return void
* @author zhaoqifeng
* @date 2021/4/28 14:47
*/
@Override
public void setProjectLevel(List<ScreenProjectDataDTO> list, String customerId) {
if(CollectionUtils.isEmpty(list)) {
return;
}
List<ScreenProjectDataDTO> projects = baseDao.selectResponseCount(customerId);
Map<String, ScreenProjectDataDTO> map = projects.stream().collect(Collectors.toMap(ScreenProjectDataDTO :: getParentId, v -> v, (v1, v2) -> v1));
list.forEach(item -> {
ScreenProjectDataDTO dto = map.get(item.getProjectId());
if (ProjectConstant.CLOSED.equals(dto.getProjectStatusCode())) {
item.setProjectLevel(NumConstant.THREE);
} else {
if (NumConstant.ZERO == dto.getResponseCount()) {
//红灯事件-未做任何响应处理未结案的项目
item.setProjectLevel(NumConstant.ONE);
} else {
//黄灯事件-至少做过一次响应处理答复但未结案的项目
item.setProjectLevel(NumConstant.TWO);
}
}
});
}
}

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java

@ -118,9 +118,10 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
// 给metaData和orientData赋上分类信息
List<String> projectIds =
Optional.ofNullable(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>());
if(!CollectionUtils.isEmpty(orientData))
Optional.of(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>());
if(!CollectionUtils.isEmpty(orientData)) {
projectIds.addAll(orientData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList()));
}
Map<String, Set<String>> categoryMap = projectService.getProjectCategory(projectIds);
if(!CollectionUtils.isEmpty(categoryMap)){
Map<String, String> integratedProjectCategoryMap = issueService.getIntegratedProjectCategory(categoryMap, param.getCustomerId());
@ -135,7 +136,8 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
}
//重新计算orientData的级别 有现成的方法 fact_origin_project_org_period_daily
originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit);
// originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit);
originMainService.setProjectLevel(orientData, param.getCustomerId());
processService.updateProjectCloseTime(metaData);
//更新结案时间和结案状态
processService.updateProjectStatus(orientData,param.getDateId(),param.getCustomerId());

32
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -571,10 +571,18 @@
3 as projectLevel,
IF(data.PIDS IS NULL || TRIM(data.PIDS) = '',data.AGENCY_ID,CONCAT(REPLACE(data.PIDS,':',','),',',data.AGENCY_ID)) as allParentIds,
data.TOPIC_ID,
IFNULL(log.response, 0) AS responseCount,
#{dataEndTime} as dataEndTime
FROM `fact_origin_project_main_daily` data
LEFT JOIN DIM_AGENCY agency on data.agency_id = agency.id
LEFT JOIN (
SELECT PROJECT_ID, COUNT(IS_ACTIVE) AS response FROM fact_origin_project_log_daily
WHERE (ACTION_CODE = 'close' OR ACTION_CODE = 'response' OR ACTION_CODE = 'transfer' OR ACTION_CODE = 'return')
AND IS_ACTIVE = 1
AND CUSTOMER_ID = #{customerId}
GROUP BY PROJECT_ID
) log ON data.ID = log.PROJECT_ID
WHERE
data.DEL_FLAG = '0'
AND
@ -729,5 +737,29 @@
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
<select id="selectResponseCount" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
SELECT
main.ID AS projectId,
main.PROJECT_STATUS AS projectStatusCode,
IFNULL(log.responseCount, 0) AS responseCount
FROM
fact_origin_project_main_daily main
LEFT JOIN
(SELECT
PROJECT_ID,
COUNT( IS_ACTIVE ) AS responseCount
FROM
fact_origin_project_log_daily
WHERE
( ACTION_CODE = 'close' OR ACTION_CODE = 'response' OR ACTION_CODE = 'transfer' OR ACTION_CODE = 'return' )
AND IS_ACTIVE = 1
AND DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
GROUP BY
PROJECT_ID) log
ON main.ID = log.PROJECT_ID
WHERE CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
</select>
</mapper>

Loading…
Cancel
Save