6 小时以前 7d096488e3622d92e398e9e38197ac9e632d2687
feat(inspectiontask): 添加巡检任务状态管理功能

- 在 InspectionTask 实体类中新增 timingId 字段和 inspectionStatus 字段
- 在 InspectionTaskDto 中添加时间范围查询参数 createTimeStart 和 createTimeEnd
- 实现巡检状态的自动设置逻辑,根据文件上传情况判断待巡检或已巡检状态
- 添加定时任务中 timingId 的赋值处理
- 更新数据库表结构,增加 inspection_status 字段
- 优化查询逻辑,支持按创建时间范围筛选和按 timingId 排序
已添加1个文件
已修改4个文件
65 ■■■■ 文件已修改
sql/inspection_task_add_inspection_status.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/inspection_task_add_inspection_status.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
ALTER TABLE `inspection_task`
    ADD COLUMN `inspection_status` tinyint DEFAULT 0 COMMENT '巡检状态:0=待巡检,1=已巡检' AFTER `inspection_location`;
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -1,11 +1,14 @@
package com.ruoyi.inspectiontask.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.basic.dto.StorageBlobDTO;
import com.ruoyi.basic.pojo.StorageAttachment;
import com.ruoyi.inspectiontask.pojo.InspectionTask;
import com.ruoyi.sales.pojo.CommonFile;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
@Data
@@ -23,4 +26,11 @@
    private List<CommonFile> commonFileListAfter;  //生产后
    private List<CommonFile> commonFileListBefore; //生产前
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTimeStart;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTimeEnd;
}
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
@@ -35,8 +35,12 @@
    @ApiModelProperty(value = "设备id")
    private Integer taskId;
    @ApiModelProperty(value = "巡检任务id")
    private Long timingId;
    @ApiModelProperty(value = "设备区域id")
    private Long areaId;
    @TableField(exist = false)
    @ApiModelProperty(value = "设备区域名称")
@@ -71,6 +75,10 @@
    @ApiModelProperty(value = "巡检地点详细描述")
    private String inspectionLocation;
    @ApiModelProperty(value = "巡检状态:1=待巡检,2=已巡检")
    @Excel(name = "巡检状态", readConverterExp = "1=待巡检,2=已巡检")
    private Integer inspectionStatus;
    @ApiModelProperty(value = "软删除标记,0=未删除,1=已删除")
    private Integer deleted;
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -8,7 +8,6 @@
import com.ruoyi.basic.dto.StorageBlobDTO;
import com.ruoyi.basic.mapper.StorageAttachmentMapper;
import com.ruoyi.basic.mapper.StorageBlobMapper;
import com.ruoyi.basic.pojo.StorageAttachment;
import com.ruoyi.basic.pojo.StorageBlob;
import com.ruoyi.basic.service.StorageAttachmentService;
import com.ruoyi.common.enums.FileNameType;
@@ -35,13 +34,13 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.ruoyi.common.constant.StorageAttachmentConstants.StorageAttachmentFile;
import static com.ruoyi.common.enums.StorageAttachmentRecordType.InspectionTasks;
/**
 * @author :yys
@@ -50,6 +49,9 @@
@Service
@Slf4j
public class InspectionTaskServiceImpl extends ServiceImpl<InspectionTaskMapper, InspectionTask> implements InspectionTaskService {
    private static final int INSPECTION_STATUS_PENDING = 1;
    private static final int INSPECTION_STATUS_COMPLETED = 2;
    @Autowired
@@ -85,12 +87,26 @@
    @Override
    public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) {
        LambdaQueryWrapper<InspectionTask> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByAsc(InspectionTask::getTimingId);
        queryWrapper.orderByDesc(InspectionTask::getCreateTime);
        if (StringUtils.isNotBlank(inspectionTaskDto.getTaskName())) {
            queryWrapper.like(InspectionTask::getTaskName, inspectionTaskDto.getTaskName());
        }
        if (inspectionTaskDto.getAreaId() != null) {
            queryWrapper.eq(InspectionTask::getAreaId, inspectionTaskDto.getAreaId());
        }
        LocalDateTime createTimeStart = inspectionTaskDto.getCreateTimeStart();
        LocalDateTime createTimeEnd = inspectionTaskDto.getCreateTimeEnd();
        if (createTimeStart == null && createTimeEnd == null) {
            LocalDate today = LocalDate.now();
            createTimeStart = today.atStartOfDay();
            createTimeEnd = today.atTime(23, 59, 59);
        }
        if (createTimeStart != null) {
            queryWrapper.ge(InspectionTask::getCreateTime, createTimeStart);
        }
        if (createTimeEnd != null) {
            queryWrapper.le(InspectionTask::getCreateTime, createTimeEnd);
        }
        IPage<InspectionTask> entityPage = inspectionTaskMapper.selectPage(page, queryWrapper);
@@ -149,7 +165,7 @@
        if(commonFiles == null){
            commonFiles = new ArrayList<>();
        }
        List<CommonFile> finalCommonFiles = commonFiles;
        AtomicReference<List<CommonFile>> finalCommonFiles = new AtomicReference<>(commonFiles);
        List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> {
            InspectionTaskDto dto = new InspectionTaskDto();
@@ -178,11 +194,11 @@
            }
            dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            finalCommonFiles.set(finalCommonFiles.get().stream().filter(commonFile -> commonFile.getCommonId().equals(inspectionTask.getId())).collect(Collectors.toList()));
            // åˆå§‹åŒ–三个附件列表
            dto.setCommonFileList(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION.getValue())).collect(Collectors.toList()));
            dto.setCommonFileListAfter(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())).collect(Collectors.toList()));
            dto.setCommonFileListBefore(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue())).collect(Collectors.toList()));
            dto.setCommonFileList(finalCommonFiles.get().stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION.getValue())).collect(Collectors.toList()));
            dto.setCommonFileListAfter(finalCommonFiles.get().stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())).collect(Collectors.toList()));
            dto.setCommonFileListBefore(finalCommonFiles.get().stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue())).collect(Collectors.toList()));
            return dto;
@@ -230,6 +246,7 @@
    public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException {
        InspectionTask inspectionTask = new InspectionTask();
        BeanUtils.copyProperties(inspectionTaskDto, inspectionTask);
        boolean hasUploadedFiles = CollectionUtils.isNotEmpty(inspectionTaskDto.getTempFileIds());
        if (inspectionTask.getAreaId() == null && inspectionTask.getTaskId() != null) {
            DeviceLedger deviceLedger = deviceLedgerMapper.selectById(Long.valueOf(inspectionTask.getTaskId()));
            if (deviceLedger != null) {
@@ -240,8 +257,17 @@
        inspectionTask.setRegistrant(SecurityUtils.getLoginUser().getUsername());
        int i;
        if (Objects.isNull(inspectionTaskDto.getId())) {
            inspectionTask.setInspectionStatus(hasUploadedFiles ? INSPECTION_STATUS_COMPLETED : INSPECTION_STATUS_PENDING);
            i = inspectionTaskMapper.insert(inspectionTask);
        } else {
            if (hasUploadedFiles) {
                inspectionTask.setInspectionStatus(INSPECTION_STATUS_COMPLETED);
            } else if (inspectionTask.getInspectionStatus() == null) {
                InspectionTask existingTask = inspectionTaskMapper.selectById(inspectionTaskDto.getId());
                if (existingTask != null) {
                    inspectionTask.setInspectionStatus(existingTask.getInspectionStatus());
                }
            }
            i = inspectionTaskMapper.updateById(inspectionTask);
        }
        commonFileService.migrateTempFilesToFormal(inspectionTask.getId(),inspectionTaskDto.getTempFileIds());
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
@@ -127,6 +127,7 @@
        InspectionTask inspectionTask = new InspectionTask();
        inspectionTask.setTaskName(deviceLedger.getDeviceName());
        inspectionTask.setTaskId(deviceLedger.getId().intValue());
        inspectionTask.setTimingId(timingTask.getId());
        inspectionTask.setAreaId(deviceLedger.getAreaId());
        inspectionTask.setInspectorId(timingTask.getInspectorIds());
        inspectionTask.setInspectionLocation(timingTask.getInspectionLocation());