09-24-巡检任务更新用户类型,实验任务处理节点进度及回显信息

This commit is contained in:
2025-09-24 17:15:58 +08:00
parent 77095ac5a2
commit 2033a7d3c6
4 changed files with 67 additions and 18 deletions

View File

@ -69,10 +69,9 @@ public class OpsInspectionTask extends BaseEntity {
private Long personId;
/**
* 进度
* 节点ids
*/
@TableField(exist = false)
private BigDecimal taskProgress;
private String nodeIds;
/**
* 状态 1待执行2已延期3执行中4已完成

View File

@ -74,12 +74,10 @@ public class OpsInspectionTaskBo extends BaseEntity {
@NotNull(message = "执行人ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personId;
/**
* 进度
* 节点ids
*/
@TableField(exist = false)
private BigDecimal taskProgress;
private String nodeIds;
/**
* 状态 1待执行2已延期3执行中4已完成

View File

@ -13,11 +13,12 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -86,13 +87,20 @@ public class OpsInspectionTaskVo implements Serializable {
@ExcelProperty(value = "执行人ID")
private Long personId;
private OpsUserVo person;
private RemoteUserVo person;
/**
* 进度
*/
private BigDecimal taskProgress;
/**
* 节点ids
*/
private String nodeIds;
private List<OpsInspectionNodeVo> nodes;
/**
* 状态 1待执行2已延期3执行中4已完成
*/

View File

@ -1,5 +1,6 @@
package org.dromara.inspection.service.impl;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -10,10 +11,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.inspection.domain.OpsInspectionNode;
import org.dromara.inspection.domain.vo.OpsInspectionNodeVo;
import org.dromara.inspection.domain.vo.OpsInspectionPlanVo;
import org.dromara.inspection.domain.vo.OpsInspectionRecordVo;
import org.dromara.inspection.mapper.OpsInspectionNodeMapper;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionTaskBo;
@ -28,10 +34,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -47,10 +50,12 @@ import java.util.stream.Collectors;
public class OpsInspectionTaskServiceImpl implements IOpsInspectionTaskService {
private final OpsInspectionTaskMapper baseMapper;
private final OpsInspectionNodeMapper nodeMapper;
@Autowired
private OpsInspectionPlanServiceImpl opsInspectionPlanService;
@Autowired
private OpsUserServiceImpl opsUserService;
@DubboReference
private RemoteUserService userService;
/**
* 查询运维-巡检计划-任务
@ -282,18 +287,57 @@ public class OpsInspectionTaskServiceImpl implements IOpsInspectionTaskService {
private void buildEcho(List<OpsInspectionTaskVo> taskVos) {
//TODO 回显信息
taskVos.forEach(taskVo -> {
LambdaQueryWrapper<OpsInspectionNode> nodeWrapper = new LambdaQueryWrapper<>();
if (taskVo.getPlanId()!=null) {
OpsInspectionPlanVo opsInspectionPlanVo = opsInspectionPlanService.queryById(taskVo.getPlanId());
if (opsInspectionPlanVo != null) {
taskVo.setPlan(opsInspectionPlanVo);
}
}
if (taskVo.getPersonId()!=null) {
OpsUserVo opsUserVo = opsUserService.queryById(taskVo.getPersonId());
if (opsUserVo != null) {
taskVo.setPerson(opsUserVo);
List<RemoteUserVo> remoteUserVos = userService.selectListByIds(List.of(taskVo.getPersonId()));
if (remoteUserVos != null && !remoteUserVos.isEmpty()) {
taskVo.setPerson(remoteUserVos.getFirst());
}
}
//处理进度和节点信息
if (taskVo.getNodeIds() != null && !taskVo.getNodeIds().isEmpty()){
List<String> stringList = Arrays.stream(taskVo.getNodeIds().split(",")).toList();
nodeWrapper.clear();
nodeWrapper.in(OpsInspectionNode::getId, stringList);
List<OpsInspectionNodeVo> nodeVoList = nodeMapper.selectVoList(nodeWrapper);
//处理进度百分比 完成节点 / 总节点 * 100
if (nodeVoList != null && !nodeVoList.isEmpty()){
//统计完成节点
int finishCount = nodeVoList.stream().filter(nodeVo -> nodeVo.getStatus().equals("1")).toList().size();
if (finishCount == nodeVoList.size()){
taskVo.setTaskProgress(new BigDecimal("100"));
}else {
taskVo.setTaskProgress(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(nodeVoList.size()), 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100.00)));
}
}
//处理节点列表
if (taskVo.getNodeIds() != null && !taskVo.getNodeIds().isEmpty()){
List<OpsInspectionNodeVo> nodeVos = new ArrayList<>();
for (String id : stringList) {
OpsInspectionNodeVo nodeVo = nodeMapper.selectVoById(id);
if (nodeVo != null) {
nodeVos.add(nodeVo);
}
}
taskVo.setNodes(nodeVos);
}
}
});
}