|
|
@@ -33,6 +33,7 @@ import org.springframework.util.Assert;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
@@ -259,11 +260,8 @@ public class RiskInspectionTaskServiceImpl implements IRiskInspectionTaskService
|
|
|
}
|
|
|
// 不查 已删除 的
|
|
|
lqw.eq(RiskInspectionTask::getDelFlag, "0");
|
|
|
- // 状态过滤(移动端状态 PENDING/PUNCHED/OVERDUE/FINISHED)
|
|
|
- if (StringUtils.isBlank(status)) {
|
|
|
- // 默认查 全部,但隐藏 已完成
|
|
|
- lqw.ne(RiskInspectionTask::getTaskStatus, "已完成");
|
|
|
- }
|
|
|
+ // 状态过滤(移动端 tab: ALL/PENDING/DONE/OVERDUE)
|
|
|
+ applyStatusFilter(lqw, status);
|
|
|
lqw.orderByDesc(RiskInspectionTask::getPlanStartTime);
|
|
|
Page<RiskInspectionTask> page = baseMapper.selectPage(pageQuery.build(), lqw);
|
|
|
List<MobileInspectionTaskVo> rows = page.getRecords().stream()
|
|
|
@@ -288,9 +286,8 @@ public class RiskInspectionTaskServiceImpl implements IRiskInspectionTaskService
|
|
|
lqw.eq(RiskInspectionTask::getInspectorId, inspectorId);
|
|
|
}
|
|
|
lqw.eq(RiskInspectionTask::getDelFlag, "0");
|
|
|
- if (StringUtils.isBlank(status)) {
|
|
|
- lqw.ne(RiskInspectionTask::getTaskStatus, "已完成");
|
|
|
- }
|
|
|
+ // 状态过滤(移动端 tab: ALL/PENDING/DONE/OVERDUE)
|
|
|
+ applyStatusFilter(lqw, status);
|
|
|
lqw.orderByDesc(RiskInspectionTask::getPlanStartTime);
|
|
|
Page<RiskInspectionTask> page = baseMapper.selectPage(pageQuery.build(), lqw);
|
|
|
List<MobileInspectionTaskVo> rows = page.getRecords().stream()
|
|
|
@@ -310,7 +307,10 @@ public class RiskInspectionTaskServiceImpl implements IRiskInspectionTaskService
|
|
|
public MobileInspectionTaskVo queryMobileDetail(Long id) {
|
|
|
RiskInspectionTask task = baseMapper.selectById(id);
|
|
|
Assert.notNull(task, "巡检任务不存在: " + id);
|
|
|
- return convertToMobileVo(task);
|
|
|
+ MobileInspectionTaskVo vo = convertToMobileVo(task);
|
|
|
+ // 加载巡检项目列表(供详情页渲染;needPhoto 字符串"0"/"1" 留到前端按需转 boolean)
|
|
|
+ vo.setItems(taskItemMapper.selectVoListByTaskId(id));
|
|
|
+ return vo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -374,4 +374,40 @@ public class RiskInspectionTaskServiceImpl implements IRiskInspectionTaskService
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 移动端列表按状态过滤(对应前端 tab: 全部/未打卡/已打卡/已过期)
|
|
|
+ *
|
|
|
+ * 任务表 task_status 实际值: 待执行 / 已打卡 / 异常打卡 / 已完成
|
|
|
+ * 移动端 punchStatus 含义: PENDING(待执行+未超时) / PUNCHED(已打卡) / OVERDUE(待执行+超时) / FINISHED(已完成)
|
|
|
+ *
|
|
|
+ * 前端 tab 简化为 4 个,后端按 status 字符串做粗过滤(punchStatus 是 convert 阶段计算出来的,
|
|
|
+ * 不能直接 SQL 过滤,所以这里按 task_status + plan_end_time 近似还原)。
|
|
|
+ */
|
|
|
+ private void applyStatusFilter(LambdaQueryWrapper<RiskInspectionTask> lqw, String status) {
|
|
|
+ if (StringUtils.isBlank(status) || "ALL".equalsIgnoreCase(status)) {
|
|
|
+ // 全部:隐藏已完成
|
|
|
+ lqw.ne(RiskInspectionTask::getTaskStatus, "已完成");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if ("PENDING".equalsIgnoreCase(status)) {
|
|
|
+ // 未打卡:待执行 + 未超时
|
|
|
+ lqw.eq(RiskInspectionTask::getTaskStatus, "待执行");
|
|
|
+ lqw.gt(RiskInspectionTask::getPlanEndTime, new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if ("DONE".equalsIgnoreCase(status)) {
|
|
|
+ // 已打卡:已打卡 + 异常打卡(都有打卡记录)
|
|
|
+ lqw.in(RiskInspectionTask::getTaskStatus, Arrays.asList("已打卡", "异常打卡"));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if ("OVERDUE".equalsIgnoreCase(status) || "EXPIRED".equalsIgnoreCase(status)) {
|
|
|
+ // 已过期:待执行 + 已超时
|
|
|
+ lqw.eq(RiskInspectionTask::getTaskStatus, "待执行");
|
|
|
+ lqw.lt(RiskInspectionTask::getPlanEndTime, new Date());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 未知状态:兜底显示全部但隐藏已完成
|
|
|
+ lqw.ne(RiskInspectionTask::getTaskStatus, "已完成");
|
|
|
+ }
|
|
|
+
|
|
|
}
|