From 7d096488e3622d92e398e9e38197ac9e632d2687 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 20 四月 2026 17:05:05 +0800
Subject: [PATCH] feat(inspectiontask): 添加巡检任务状态管理功能

---
 sql/inspection_task_add_inspection_status.sql                                      |    2 +
 src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java |   44 +++++++++++++++++----
 src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java                    |    8 ++++
 src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java             |    1 
 src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java                  |   10 +++++
 5 files changed, 56 insertions(+), 9 deletions(-)

diff --git a/sql/inspection_task_add_inspection_status.sql b/sql/inspection_task_add_inspection_status.sql
new file mode 100644
index 0000000..b22e825
--- /dev/null
+++ b/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`;
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
index 87e3e61..7975a82 100644
--- a/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
+++ b/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;
 }
diff --git a/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java b/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
index ec51527..2d9bc09 100644
--- a/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
+++ b/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;
 
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
index b15c7c6..66bc2b8 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
+++ b/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());
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
index 5a0e6ab..f4cd4f2 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
+++ b/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());

--
Gitblit v1.9.3