project commit by lidongyang
This commit is contained in:
@@ -147,8 +147,8 @@ public class SimulationTaskController {
|
||||
*/
|
||||
@PostMapping("/getTaskCompleteStatistics")
|
||||
@Operation(summary = "按工位、学科的仿真任务达成统计", description = "按工位、学科的仿真任务达成统计")
|
||||
public SdmResponse getCommonCompleteStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
|
||||
return taskService.getCommonCompleteStatistics(req);
|
||||
public SdmResponse getTaskCompleteStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
|
||||
return taskService.getTaskCompleteStatistics(req);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,7 +40,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
||||
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId, @Param("pos") int pos, @Param("limit") int limit);
|
||||
|
||||
int getNodeListCount(@Param("nodeType") String nodeType, @Param("nodeSubType") String nodeSubType, @Param("progressStatus") Integer progressStatus, @Param("nodeCode") String nodeCode,
|
||||
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId);
|
||||
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId);
|
||||
|
||||
|
||||
List<SpdmNodeExtraVo> getNodeExtraListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
||||
@@ -53,9 +53,9 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
||||
|
||||
void deleteTaskBatch(List<String> deleteNodeIdList);
|
||||
|
||||
void deleteTaskExtraBatch(@Param("taskIdList") List<Long> taskIdList);
|
||||
void deleteTaskExtraBatch(@Param("taskIdList") List<String> taskIdList);
|
||||
|
||||
void deleteTaskMemberBatch(@Param("taskIdList") List<Long> taskIdList);
|
||||
void deleteTaskMemberBatch(@Param("taskIdList") List<String> taskIdList);
|
||||
|
||||
void deletePerformanceBatch(@Param("performanceIdList") List<Long> performanceIdList);
|
||||
|
||||
@@ -65,7 +65,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
||||
|
||||
List<TaskNodeMemberPo> getTaskMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
||||
|
||||
List<PerformanceNodePo> getPerformanceListByNodeIdList(@Param("taskIdList") List<Long> taskIdList);
|
||||
List<PerformanceNodePo> getPerformanceListByNodeIdList(@Param("taskIdList") List<String> taskIdList);
|
||||
|
||||
SpdmNodeVo getNodeById(@Param("projectNodeId") String projectNodeId);
|
||||
|
||||
|
||||
@@ -50,4 +50,8 @@ public interface SimulationTaskMapper extends BaseMapper<SimulationTask> {
|
||||
|
||||
List<TaskNodeExtraPo> getTaskExtraList(@Param("taskIdList") List<String> taskIdList);
|
||||
|
||||
List<SpdmTaskVo> getTaskListByTag(@Param("req") TaskCompleteStatisticsReq req);
|
||||
|
||||
List<SpdmTaskVo> getTaskListByName(@Param("taskNameList") List<String> taskNameList);
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ public class PerformanceNodePo extends NodeAllBase {
|
||||
*/
|
||||
private String method;
|
||||
|
||||
private String completeStatus;
|
||||
|
||||
/**
|
||||
* 目标值
|
||||
*/
|
||||
|
||||
@@ -159,4 +159,5 @@ public class ProjectNodePo extends NodeAllBase {
|
||||
private String tag10;
|
||||
|
||||
private Long imageFileId;
|
||||
private String englishName;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public interface ITaskService {
|
||||
|
||||
BosimSaveProjectTaskRsp syncCidTask(SyncCidTaskReq req);
|
||||
|
||||
SdmResponse getCommonCompleteStatistics(TaskCompleteStatisticsReq req);
|
||||
SdmResponse getTaskCompleteStatistics(TaskCompleteStatisticsReq req);
|
||||
|
||||
SdmResponse getPerformanceCompleteStatistics(PerformanceCompleteStatisticsReq req);
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
return true;
|
||||
}
|
||||
nodeMapper.deleteTaskBatch(deleteNodeIdList);
|
||||
List<Long> taskIdList = taskNodePoList.stream().map(TaskNodePo::getId).toList();
|
||||
List<String> taskIdList = taskNodePoList.stream().map(TaskNodePo::getUuid).toList();
|
||||
nodeMapper.deleteTaskExtraBatch(taskIdList);
|
||||
nodeMapper.deleteTaskMemberBatch(taskIdList);
|
||||
// 删除当前节点及子节点下的指标相关信息
|
||||
@@ -990,7 +990,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
}
|
||||
|
||||
req.setUserIds(userIds);
|
||||
|
||||
|
||||
List<UserGroupTaskCompleteVo> userGroupTaskCompleteStatistics = this.baseMapper.getUserGroupTaskCompleteStatistics(req);
|
||||
|
||||
// 按用户分组统计任务状态
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
|
||||
import com.sdm.common.utils.RandomUtil;
|
||||
import com.sdm.common.utils.excel.ExcelUtil;
|
||||
import com.sdm.project.common.MemberTypeEnum;
|
||||
import com.sdm.project.common.RunPerformanceStatusEnum;
|
||||
import com.sdm.project.common.TaskExeStatusEnum;
|
||||
import com.sdm.project.dao.SimulationDemandMapper;
|
||||
import com.sdm.project.dao.SimulationNodeMapper;
|
||||
@@ -153,12 +154,12 @@ public class TaskServiceImpl implements ITaskService {
|
||||
List<String> taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).toList();
|
||||
List<SpdmTaskMemberVo> taskMemberVoList = mapper.getMemberList(taskIdList, null);
|
||||
List<SpdmTaskMemberVo> copyTaskMemberList = taskMemberVoList.stream().map(i -> {
|
||||
SpdmTaskMemberVo o = new SpdmTaskMemberVo();
|
||||
o.setTaskId(i.getTaskId());
|
||||
o.setType(i.getType());
|
||||
o.setUserId(i.getUserId());
|
||||
return o;
|
||||
}).collect(Collectors.toList());
|
||||
SpdmTaskMemberVo o = new SpdmTaskMemberVo();
|
||||
o.setTaskId(i.getTaskId());
|
||||
o.setType(i.getType());
|
||||
o.setUserId(i.getUserId());
|
||||
return o;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
Map<String, List<SpdmTaskMemberVo>> memberMap = Map.of();
|
||||
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
|
||||
@@ -1322,6 +1323,18 @@ public class TaskServiceImpl implements ITaskService {
|
||||
resp.setMessage(ResultCode.FAILED.getMessage());
|
||||
return resp;
|
||||
}
|
||||
List<String> taskNameList = taskInfoList.stream().map(ProjectTaskInfo::getTaskName).distinct().toList();
|
||||
List<SpdmTaskVo> taskVoList = mapper.getTaskListByName(taskNameList);
|
||||
if (CollectionUtils.isNotEmpty(taskVoList)) {
|
||||
List<String> projectIdList = taskVoList.stream().map(SpdmTaskVo::getTag1).toList();
|
||||
if (projectIdList.contains(projectId)) {
|
||||
String existTaskName = taskVoList.stream().map(SpdmTaskVo::getTaskName).collect(Collectors.joining(","));
|
||||
log.error("本次同步任务失败,以下任务:{}已存在",existTaskName);
|
||||
resp.setCode(String.valueOf(ResultCode.FAILED.getCode()));
|
||||
resp.setMessage("本次同步任务失败,以下任务:"+existTaskName+"已存在");
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
List<CidTaskNode> taskNodeList = new ArrayList<>();
|
||||
for (ProjectTaskInfo projectTaskInfo : taskInfoList) {
|
||||
CidTaskNode taskNode = new CidTaskNode();
|
||||
@@ -1366,10 +1379,66 @@ public class TaskServiceImpl implements ITaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse getCommonCompleteStatistics(TaskCompleteStatisticsReq req) {
|
||||
public SdmResponse getTaskCompleteStatistics(TaskCompleteStatisticsReq req) {
|
||||
// 所有任务执行状态
|
||||
Set<String> allExeStatus = new HashSet<>();
|
||||
List<CommonGetCompleteFromTaskVo> commonCompleteStatisticsFromTask = mapper.getTaskCompleteStatistics(req);
|
||||
List<SpdmTaskVo> taskList = mapper.getTaskListByTag(req);
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
log.error("根据参数:{},未查询到任务",req);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
String resultTagType = req.getResultTagType();
|
||||
List<String> nodeIdList = new ArrayList<>();
|
||||
for (SpdmTaskVo taskVo : taskList) {
|
||||
try {
|
||||
String tagProperty = getTagProperty(taskVo, resultTagType);
|
||||
if (StringUtils.isNotBlank(tagProperty)) {
|
||||
nodeIdList.addAll(Arrays.stream(tagProperty.split(",")).toList());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(nodeIdList)) {
|
||||
log.error("根据任务:{},未查询到{}标签中的节点id",taskList,resultTagType);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
nodeIdList = nodeIdList.stream().distinct().toList();
|
||||
List<SpdmNodeVo> nodeList = nodeMapper.getNodeListByIds(nodeIdList);
|
||||
if (CollectionUtils.isEmpty(nodeList)) {
|
||||
log.error("根据节点id:{},未查询节点",nodeIdList);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
Map<String, String> nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName));
|
||||
List<CommonGetCompleteFromTaskVo> commonCompleteStatisticsFromTask = new ArrayList<>();
|
||||
String resultTagId;
|
||||
String[] resultTagIdArr;
|
||||
for (SpdmTaskVo taskVo : taskList) {
|
||||
try {
|
||||
resultTagId = getTagProperty(taskVo,resultTagType);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (StringUtils.isBlank(resultTagId)) {
|
||||
log.error("id:{}任务的:{}标签不存在",taskVo.getId(),resultTagType);
|
||||
continue;
|
||||
}
|
||||
resultTagIdArr = resultTagId.split(",");
|
||||
CommonGetCompleteFromTaskVo commonGetCompleteFromTaskVo = new CommonGetCompleteFromTaskVo();
|
||||
commonGetCompleteFromTaskVo.setTag(resultTagId);
|
||||
commonGetCompleteFromTaskVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
|
||||
commonGetCompleteFromTaskVo.setExeStatus(taskVo.getExeStatus());
|
||||
commonCompleteStatisticsFromTask.add(commonGetCompleteFromTaskVo);
|
||||
}
|
||||
// 按tag分组统计任务状态
|
||||
Map<String, CommonStatisticsVo> taskStatisticsMap = new HashMap<>();
|
||||
// 统计每个tag的各种状态任务数量
|
||||
@@ -1401,8 +1470,89 @@ public class TaskServiceImpl implements ITaskService {
|
||||
public SdmResponse getPerformanceCompleteStatistics(PerformanceCompleteStatisticsReq req) {
|
||||
// 所有指标执行状态
|
||||
Set<String> allExeStatus = new HashSet<>();
|
||||
// 处理指标完成情况统计
|
||||
List<CommonGetCompleteFromPerformanceVo> commonCompleteStatisticsFromPerformance = mapper.getPerformanceCompleteStatistics(req);
|
||||
TaskCompleteStatisticsReq taskCompleteStatisticsReq = new TaskCompleteStatisticsReq();
|
||||
BeanUtils.copyProperties(req,taskCompleteStatisticsReq);
|
||||
List<SpdmTaskVo> taskList = mapper.getTaskListByTag(taskCompleteStatisticsReq);
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
log.error("根据参数:{},未查询到任务",req);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
// 查询任务下所有指标
|
||||
List<String> taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).distinct().toList();
|
||||
List<PerformanceNodePo> performanceList = nodeMapper.getPerformanceListByNodeIdList(taskIdList);
|
||||
if (CollectionUtils.isEmpty(performanceList)) {
|
||||
log.error("根据任务id:{},未查询到指标",taskIdList);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
Map<String, SpdmTaskVo> taskMap = taskList.stream().collect(Collectors.groupingBy(
|
||||
SpdmTaskVo::getUuid,
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.toList(),
|
||||
list -> list.get(0)
|
||||
)
|
||||
));
|
||||
String resultTagType = req.getResultTagType();
|
||||
List<String> nodeIdList = new ArrayList<>();
|
||||
SpdmTaskVo eachTaskVo;
|
||||
for (PerformanceNodePo performanceNodePo : performanceList) {
|
||||
eachTaskVo = taskMap.get(performanceNodePo.getTaskId());
|
||||
if (ObjectUtils.isEmpty(eachTaskVo)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
String tagProperty = getTagProperty(eachTaskVo, resultTagType);
|
||||
if (StringUtils.isNotBlank(tagProperty)) {
|
||||
nodeIdList.addAll(Arrays.stream(tagProperty.split(",")).toList());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(nodeIdList)) {
|
||||
log.error("根据任务:{},未查询到{}标签中的节点id",taskList,resultTagType);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
nodeIdList = nodeIdList.stream().distinct().toList();
|
||||
List<SpdmNodeVo> nodeList = nodeMapper.getNodeListByIds(nodeIdList);
|
||||
if (CollectionUtils.isEmpty(nodeList)) {
|
||||
log.error("根据节点id:{},未查询节点",nodeIdList);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allExeStatus", allExeStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
Map<String, String> nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName));
|
||||
List<CommonGetCompleteFromPerformanceVo> commonCompleteStatisticsFromPerformance = new ArrayList<>();
|
||||
String resultTagId;
|
||||
String[] resultTagIdArr;
|
||||
for (PerformanceNodePo performanceNodePo : performanceList) {
|
||||
eachTaskVo = taskMap.get(performanceNodePo.getTaskId());
|
||||
try {
|
||||
resultTagId = getTagProperty(eachTaskVo,resultTagType);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (StringUtils.isBlank(resultTagId)) {
|
||||
log.error("id:{}任务的:{}标签不存在",eachTaskVo.getId(),resultTagType);
|
||||
continue;
|
||||
}
|
||||
resultTagIdArr = resultTagId.split(",");
|
||||
CommonGetCompleteFromPerformanceVo commonGetCompleteFromPerformanceVo = new CommonGetCompleteFromPerformanceVo();
|
||||
commonGetCompleteFromPerformanceVo.setTag(resultTagId);
|
||||
commonGetCompleteFromPerformanceVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
|
||||
commonGetCompleteFromPerformanceVo.setCompleteStatus(StringUtils.isNotBlank(performanceNodePo.getCompleteStatus()) ?
|
||||
performanceNodePo.getCompleteStatus() : RunPerformanceStatusEnum.UNCOMPLETED.getCode());
|
||||
commonCompleteStatisticsFromPerformance.add(commonGetCompleteFromPerformanceVo);
|
||||
}
|
||||
// 按tag分组统计指标状态
|
||||
Map<String, CommonStatisticsVo> performanceStatisticsMap = new HashMap<>();
|
||||
// 统计每个tag的各种状态指标数量
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -61,7 +61,7 @@
|
||||
#{exeStatus}
|
||||
</foreach>
|
||||
)
|
||||
</if>
|
||||
</if>
|
||||
<if test="req.achieveStatusList != null and req.achieveStatusList.size > 0">
|
||||
and achieve_status in (
|
||||
<foreach collection='req.achieveStatusList' item='achieveStatus' index='index' separator=','>
|
||||
@@ -318,5 +318,51 @@
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="getTaskListByTag" resultType="com.sdm.project.model.vo.SpdmTaskVo">
|
||||
select * from simulation_task task
|
||||
<where>
|
||||
task.exe_status is not null
|
||||
<if test="req.tag1 != null and req.tag1 !='' ">
|
||||
and task.tag1 like CONCAT('%',#{req.tag1},'%')
|
||||
</if>
|
||||
<if test="req.tag2 != null and req.tag2 !='' ">
|
||||
and task.tag2 like CONCAT('%',#{req.tag2},'%')
|
||||
</if>
|
||||
<if test="req.tag3 != null and req.tag3 !='' ">
|
||||
and task.tag3 like CONCAT('%',#{req.tag3},'%')
|
||||
</if>
|
||||
<if test="req.tag4 != null and req.tag4 !='' ">
|
||||
and task.tag4 like CONCAT('%',#{req.tag4},'%')
|
||||
</if>
|
||||
<if test="req.tag5 != null and req.tag5 !='' ">
|
||||
and task.tag5 like CONCAT('%',#{req.tag5},'%')
|
||||
</if>
|
||||
<if test="req.tag6 != null and req.tag6 !='' ">
|
||||
and task.tag6 like CONCAT('%',#{req.tag6},'%')
|
||||
</if>
|
||||
<if test="req.tag7 != null and req.tag7 !='' ">
|
||||
and task.tag7 like CONCAT('%',#{req.tag7},'%')
|
||||
</if>
|
||||
<if test="req.tag8 != null and req.tag8 !='' ">
|
||||
and task.tag8 like CONCAT('%',#{req.tag8},'%')
|
||||
</if>
|
||||
<if test="req.tag9 != null and req.tag9 !='' ">
|
||||
and task.tag9 like CONCAT('%',#{req.tag9},'%')
|
||||
</if>
|
||||
<if test="req.tag10 != null and req.tag10 !='' ">
|
||||
and task.tag10 like CONCAT('%',#{req.tag10},'%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getTaskListByName" resultType="com.sdm.project.model.vo.SpdmTaskVo">
|
||||
select * from simulation_task where task_name in
|
||||
(
|
||||
<foreach collection='taskNameList' item='taskName' index='index' separator=','>
|
||||
#{taskName}
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user