gongchunyi
20 小时以前 6bab142343375e744e46f2042aa3b0fedea70b06
fix: 设备巡检修改
已添加4个文件
已修改7个文件
150 ■■■■ 文件已修改
doc/inspection_task_add_acceptor.sql 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/inspection_task_add_exception_fields.sql 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/timing_task_add_acceptor.sql 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/update_inspection_task.sql 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/inspection_task_add_acceptor.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
-- å·¡æ£€ä»»åŠ¡è¡¨æ–°å¢žéªŒæ”¶å…¥å­—æ®µ
-- æ·»åŠ æ—¶é—´: 2026-05-19
-- è¯´æ˜Ž: ä¸ºå·¡æ£€ä»»åŠ¡è¡¨æ·»åŠ éªŒæ”¶äººå­—æ®µï¼Œç”¨äºŽè®°å½•å·¡æ£€çš„éªŒæ”¶äººå‘˜
-- æ–°å¢žå·¡æ£€éªŒæ”¶äººID字段
ALTER TABLE inspection_task
ADD COLUMN inspection_acceptor_id BIGINT NULL DEFAULT NULL COMMENT '巡检验收人ID' AFTER tenant_id;
-- æ–°å¢žå·¡æ£€éªŒæ”¶äººå§“名字段
ALTER TABLE inspection_task
ADD COLUMN inspection_acceptor VARCHAR(100) NULL DEFAULT NULL COMMENT '巡检验收人姓名' AFTER inspection_acceptor_id;
doc/inspection_task_add_exception_fields.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
-- inspection_task表新增异常相关字段
-- æ·»åŠ æ—¶é—´: 2026-05-19
-- è¯´æ˜Ž: ä¸ºå·¡æ£€ä»»åŠ¡è¡¨æ·»åŠ å¼‚å¸¸çŠ¶æ€å’Œå¼‚å¸¸æè¿°å­—æ®µ
-- æ–°å¢žå·¡æ£€çŠ¶æ€å­—æ®µ: 0=未巡检, 1=正常, 2=异常
ALTER TABLE inspection_task
ADD COLUMN inspection_status INT DEFAULT 0 COMMENT '巡检状态: 0=未巡检, 1=正常, 2=异常' AFTER frequency_detail;
-- æ–°å¢žå·¡æ£€å¼‚常描述字段
ALTER TABLE inspection_task
ADD COLUMN inspection_remark VARCHAR(2000) NULL DEFAULT NULL COMMENT '巡检异常描述' AFTER inspection_status;
doc/timing_task_add_acceptor.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
-- å®šæ—¶ä»»åŠ¡è¡¨æ–°å¢žéªŒæ”¶å…¥å­—æ®µ
-- æ·»åŠ æ—¶é—´: 2026-05-19
-- è¯´æ˜Ž: ä¸ºå®šæ—¶ä»»åŠ¡è¡¨æ·»åŠ éªŒæ”¶äººå­—æ®µï¼Œç”¨äºŽè®°å½•å·¡æ£€ä»»åŠ¡çš„éªŒæ”¶äººå‘˜
-- æ–°å¢žå·¡æ£€éªŒæ”¶äººID字段
ALTER TABLE timing_task
ADD COLUMN inspection_acceptor_id BIGINT NULL DEFAULT NULL COMMENT '巡检验收人ID' AFTER tenant_id;
-- æ–°å¢žå·¡æ£€éªŒæ”¶äººå§“名字段
ALTER TABLE timing_task
ADD COLUMN inspection_acceptor VARCHAR(100) NULL DEFAULT NULL COMMENT '巡检验收人姓名' AFTER inspection_acceptor_id;
doc/update_inspection_task.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
ALTER TABLE inspection_task ADD COLUMN accept_status INT DEFAULT 0 COMMENT '验收状态: 0=待验收, 1=已通过, 2=已退回';
src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -16,6 +16,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
 * @author :yys
@@ -64,6 +65,17 @@
    }
    /**
     * å·¡æ£€éªŒæ”¶
     */
    @PostMapping("/accept")
    @ApiOperation("巡检验收")
    public R acceptInspectionTask(@RequestBody Map<String, Object> params) {
        Long id = Long.valueOf(params.get("id").toString());
        Integer acceptStatus = Integer.valueOf(params.get("acceptStatus").toString());
        return R.ok(inspectionTaskService.acceptInspectionTask(id, acceptStatus));
    }
    /**
     * å·¡æ£€ä»»åŠ¡è¡¨åˆ é™¤
     */
    @DeleteMapping("/delInspectionTask")
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -1,7 +1,5 @@
package com.ruoyi.inspectiontask.dto;
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;
@@ -13,16 +11,9 @@
@EqualsAndHashCode(callSuper = true)
public class InspectionTaskDto extends InspectionTask {
//    private List<StorageBlobDTO> storageBlobDTO;
//    private List<StorageBlobDTO> beforeProduction;
//    private List<StorageBlobDTO> afterProduction;
//    private List<StorageBlobDTO> productionIssues;
//
//    private List<StorageAttachment> attachments;
    private Boolean hasException;
    private List<String> tempFileIds;
    private List<CommonFile> commonFileList; //生产中
    private List<CommonFile> commonFileListAfter;  //生产后
    private List<CommonFile> commonFileListBefore; //生产前
    private List<CommonFile> commonFileList; //巡检附件
}
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
@@ -60,6 +60,13 @@
    @Excel(name = "开始日期与时间")
    private String frequencyDetail;
    @ApiModelProperty(value = "巡检状态: 0=未巡检, 1=正常, 2=异常")
    private Integer inspectionStatus;
    @ApiModelProperty(value = "巡检异常描述")
    @Excel(name = "异常描述")
    private String inspectionRemark;
    @ApiModelProperty(value = "巡检地点详细描述")
    private String inspectionLocation;
@@ -89,6 +96,15 @@
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "巡检验收人ID")
    private Long inspectionAcceptorId;
    @ApiModelProperty(value = "巡检验收人姓名")
    private String inspectionAcceptor;
    @ApiModelProperty(value = "验收状态: 0=待验收, 1=已通过, 2=已退回")
    private Integer acceptStatus;
    @TableField(exist = false)
    private String dateStr;
}
src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java
@@ -106,4 +106,10 @@
    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "巡检验收人ID")
    private Long inspectionAcceptorId;
    @ApiModelProperty(value = "巡检验收人姓名")
    private String inspectionAcceptor;
}
src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java
@@ -18,5 +18,7 @@
    int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException;
    int acceptInspectionTask(Long id, Integer acceptStatus);
    int delByIds(Long[] ids);
}
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -122,10 +122,10 @@
                        SysUser::getNickName,
                        (existing, replacement) -> existing));
        //处理附件
        //处理附件 - åªæŸ¥è¯¢å·¡æ£€é™„件(type=20)
        List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                .in(CommonFile::getCommonId, ids)
                .in(CommonFile::getType, Arrays.asList(FileNameType.INSPECTION.getValue(), FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue(), FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())));
                .in(CommonFile::getType, Arrays.asList(FileNameType.INSPECTION.getValue())));
        if(commonFiles == null){
            commonFiles = new ArrayList<>();
        }
@@ -158,20 +158,11 @@
            dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            // åˆå§‹åŒ–三个附件列表
            // è®¾ç½®é™„件列表 - ç»Ÿä¸€ä½¿ç”¨ commonFileList
            List<CommonFile> taskFiles = finalCommonFiles.stream()
                    .filter(commonFile -> Objects.equals(commonFile.getCommonId(), inspectionTask.getId()))
                    .collect(Collectors.toList());
            dto.setCommonFileList(taskFiles.stream()
                    .filter(commonFile -> Objects.equals(commonFile.getType(), FileNameType.INSPECTION.getValue()))
                    .collect(Collectors.toList()));
            dto.setCommonFileListAfter(taskFiles.stream()
                    .filter(commonFile -> Objects.equals(commonFile.getType(), FileNameType.INSPECTION_PRODUCTION_AFTER.getValue()))
                    .collect(Collectors.toList()));
            dto.setCommonFileListBefore(taskFiles.stream()
                    .filter(commonFile -> Objects.equals(commonFile.getType(), FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue()))
                    .collect(Collectors.toList()));
            dto.setCommonFileList(taskFiles);
            return dto;
        }).collect(Collectors.toList());
@@ -212,6 +203,25 @@
        BeanUtils.copyProperties(inspectionTaskDto, inspectionTask);
        inspectionTask.setRegistrantId(SecurityUtils.getLoginUser().getUserId());
        inspectionTask.setRegistrant(SecurityUtils.getLoginUser().getUsername());
        // å¤„理异常状态转换:hasException -> inspectionStatus
        // hasException = null -> 0(未巡检), false -> 1(正常), true -> 2(异常)
        Boolean hasException = inspectionTaskDto.getHasException();
        if (hasException != null) {
            inspectionTask.setInspectionStatus(hasException ? 2 : 1);
            // å¦‚果有异常描述,设置异常描述
            if (hasException && inspectionTaskDto.getInspectionRemark() != null) {
                inspectionTask.setInspectionRemark(inspectionTaskDto.getInspectionRemark());
            }
        } else {
            inspectionTask.setInspectionStatus(0);
        }
        // é‡æ–°å·¡æ£€æ—¶ï¼Œé‡ç½®éªŒæ”¶çŠ¶æ€
        inspectionTask.setAcceptStatus(0);
        inspectionTask.setInspectionAcceptorId(null);
        inspectionTask.setInspectionAcceptor(null);
        int i;
        if (Objects.isNull(inspectionTaskDto.getId())) {
            i = inspectionTaskMapper.insert(inspectionTask);
@@ -224,6 +234,25 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int acceptInspectionTask(Long id, Integer acceptStatus) {
        InspectionTask task = inspectionTaskMapper.selectById(id);
        if (task == null) {
            throw new RuntimeException("任务不存在");
        }
        if (task.getInspectionStatus() == null || task.getInspectionStatus() == 0) {
            throw new RuntimeException("该任务尚未巡检,无法验收");
        }
        task.setInspectionAcceptorId(SecurityUtils.getLoginUser().getUserId());
        task.setInspectionAcceptor(SecurityUtils.getLoginUser().getUser().getNickName());
        task.setAcceptStatus(acceptStatus);
        // å¦‚果是退回(2),考虑到可能是重新巡检,可以保留之前的巡检记录但状态变为退回
        // APP端会根据 acceptStatus == 2 æ¥æ”¾å¼€å·¡æ£€æŒ‰é’®
        return inspectionTaskMapper.updateById(task);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int delByIds(Long[] ids) {
        // æ£€æŸ¥å‚æ•°
        if (ids == null || ids.length == 0) {
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -81,6 +81,13 @@
            }
        });
        // æ”¶é›†éªŒæ”¶å…¥ID
        taskPage.getRecords().forEach(task -> {
            if (task.getInspectionAcceptorId() != null) {
                userIds.add(task.getInspectionAcceptorId());
            }
        });
        // 4. æ‰¹é‡æŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
        Map<Long, String> userNickNameMap = new HashMap<>();
        if (!userIds.isEmpty()) {
@@ -111,6 +118,11 @@
                dto.setInspector(inspectorNickNames);
            }
            // è®¾ç½®éªŒæ”¶äººæ˜µç§°
            if (task.getInspectionAcceptorId() != null) {
                dto.setInspectionAcceptor(userNickNameMap.getOrDefault(task.getInspectionAcceptorId(), "未知用户"));
            }
            return dto;
        }).collect(Collectors.toList());