buhuazhen
4 天以前 ee690149bcf516b72df8f12916d5d93319bf55d5
feat 页面显示巡检状态
已修改5个文件
86 ■■■■■ 文件已修改
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/device/DeviceRepairMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -6,6 +6,7 @@
import com.ruoyi.sales.pojo.CommonFile;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@@ -23,4 +24,14 @@
    private List<CommonFile> commonFileListAfter;  //生产后
    private List<CommonFile> commonFileListBefore; //生产前
    /**
     * 要求的执行时间(来自定时任务的nextExecutionTime)
     */
    private LocalDateTime nextExecutionTime;
    /**
     * 状态:EXPIRED-已过期,IN_PROGRESS-巡检中,PENDING-待巡检
     */
    private String status;
}
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
@@ -95,6 +95,9 @@
    @TableField(fill = FieldFill.INSERT)
    private Long deptId;
    @ApiModelProperty(value = "关联定时任务ID")
    private Long timingTaskId;
    @ApiModelProperty(value = "生产前是否存在异常")
    private Boolean hasExceptionBefore;
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -18,7 +18,9 @@
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.inspectiontask.dto.InspectionTaskDto;
import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
import com.ruoyi.inspectiontask.pojo.InspectionTask;
import com.ruoyi.inspectiontask.pojo.TimingTask;
import com.ruoyi.inspectiontask.service.InspectionTaskService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -31,6 +33,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
@@ -71,6 +74,9 @@
    @Autowired
    private CommonFileServiceImpl commonFileService;
    @Autowired
    private TimingTaskMapper timingTaskMapper;
    @Override
    public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) {
@@ -134,6 +140,20 @@
        }
        List<CommonFile> finalCommonFiles = commonFiles;
        // 批量查询定时任务获取nextExecutionTime
        List<Long> timingTaskIds = entityPage.getRecords().stream()
                .map(InspectionTask::getTimingTaskId)
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
        Map<Long, TimingTask> timingTaskMap = new HashMap<>();
        if (!timingTaskIds.isEmpty()) {
            List<TimingTask> timingTasks = timingTaskMapper.selectBatchIds(timingTaskIds);
            timingTaskMap = timingTasks.stream()
                    .collect(Collectors.toMap(TimingTask::getId, Function.identity()));
        }
        final Map<Long, TimingTask> finalTimingTaskMap = timingTaskMap;
        final LocalDateTime now = LocalDateTime.now();
        List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> {
            InspectionTaskDto dto = new InspectionTaskDto();
            BeanUtils.copyProperties(inspectionTask, dto);  // 复制主对象属性
@@ -173,6 +193,17 @@
                    .filter(commonFile -> commonFile.getCommonId().equals(taskId) && commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue()))
                    .collect(Collectors.toList()));
            // 计算状态:已过期 > 巡检中 > 待巡检
            String status = calculateStatus(inspectionTask, finalTimingTaskMap, now);
            dto.setStatus(status);
            // 设置nextExecutionTime用于前端展示
            if (inspectionTask.getTimingTaskId() != null) {
                TimingTask timingTask = finalTimingTaskMap.get(inspectionTask.getTimingTaskId());
                if (timingTask != null) {
                    dto.setNextExecutionTime(timingTask.getNextExecutionTime());
                }
            }
            return dto;
        }).collect(Collectors.toList());
@@ -206,6 +237,38 @@
        return dto;
    }
    /**
     * 计算巡检任务状态
     * 优先级:已过期 > 巡检中 > 待巡检
     * @param inspectionTask 巡检任务
     * @param timingTaskMap 定时任务Map
     * @param now 当前时间
     * @return 状态:EXPIRED-已过期,IN_PROGRESS-巡检中,PENDING-待巡检
     */
    private String calculateStatus(InspectionTask inspectionTask, Map<Long, TimingTask> timingTaskMap, LocalDateTime now) {
        // 1. 判断是否已过期
        if (inspectionTask.getTimingTaskId() != null) {
            TimingTask timingTask = timingTaskMap.get(inspectionTask.getTimingTaskId());
            if (timingTask != null && timingTask.getNextExecutionTime() != null) {
                if (now.isAfter(timingTask.getNextExecutionTime())) {
                    return "EXPIRED";
                }
            }
        }else {
            return "EXPIRED";
        }
        // 2. 判断是否巡检中(任一异常字段不为null)
        if (inspectionTask.getHasExceptionBefore() != null
                || inspectionTask.getHasExceptionAfter() != null
                || inspectionTask.getHasExceptionIssue() != null) {
            return "IN_PROGRESS";
        }
        // 3. 待巡检
        return "PENDING";
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException {
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
@@ -116,6 +116,7 @@
        inspectionTask.setFrequencyType(timingTask.getFrequencyType());
        inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
        inspectionTask.setTenantId(timingTask.getTenantId());
        inspectionTask.setTimingTaskId(timingTask.getId());
        return inspectionTask;
    }
src/main/resources/mapper/device/DeviceRepairMapper.xml
@@ -46,8 +46,12 @@
            <if test="deviceRepairDto.maintenanceName != null">
                and dr.maintenance_name like concat('%',#{deviceRepairDto.maintenanceName},'%')
            </if>
            <if test="deviceRepairDto.repairTimeStart != null">
                and dr.repair_time_start &gt;= #{deviceRepairDto.repairTimeStart}
            </if>
            <if test="deviceRepairDto.repairTimeEnd != null">
                and dr.repair_time_end &lt;= #{deviceRepairDto.repairTimeEnd}
            </if>
            <if test="deviceRepairDto.maintenanceTimeStr != null and deviceRepairDto.maintenanceTimeStr != '' ">
                and dr.maintenance_time like concat('%',#{deviceRepairDto.maintenanceTimeStr},'%')
            </if>