|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+package com.water.patrol.service;
|
|
|
2
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
3
|
+import com.water.patrol.entity.PatrolTask; import com.water.patrol.mapper.PatrolTaskMapper;
|
|
|
4
|
+import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j;
|
|
|
5
|
+import org.springframework.stereotype.Service;
|
|
|
6
|
+import java.time.LocalDateTime; import java.util.*;
|
|
|
7
|
+@Slf4j @Service @RequiredArgsConstructor
|
|
|
8
|
+public class PatrolAppTaskService {
|
|
|
9
|
+ private final PatrolTaskMapper mapper;
|
|
|
10
|
+ public Map<String, Object> myTasks(Long workerId, String status) {
|
|
|
11
|
+ LambdaQueryWrapper<PatrolTask> w = new LambdaQueryWrapper<>();
|
|
|
12
|
+ w.eq(PatrolTask::getWorkerId, workerId);
|
|
|
13
|
+ if (status != null && !status.isEmpty()) w.eq(PatrolTask::getStatus, status);
|
|
|
14
|
+ w.orderByDesc(PatrolTask::getCreatedAt);
|
|
|
15
|
+ Map<String, Object> r = new LinkedHashMap<>();
|
|
|
16
|
+ r.put("tasks", mapper.selectList(w));
|
|
|
17
|
+ r.put("totalCount", mapper.selectCount(new LambdaQueryWrapper<PatrolTask>().eq(PatrolTask::getWorkerId, workerId)));
|
|
|
18
|
+ r.put("pendingCount", mapper.selectCount(new LambdaQueryWrapper<PatrolTask>().eq(PatrolTask::getWorkerId, workerId).eq(PatrolTask::getStatus, "pending")));
|
|
|
19
|
+ r.put("inProgressCount", mapper.selectCount(new LambdaQueryWrapper<PatrolTask>().eq(PatrolTask::getWorkerId, workerId).eq(PatrolTask::getStatus, "in_progress")));
|
|
|
20
|
+ return r;
|
|
|
21
|
+ }
|
|
|
22
|
+ public PatrolTask getDetail(Long id) { return mapper.selectById(id); }
|
|
|
23
|
+ public void accept(Long id) {
|
|
|
24
|
+ PatrolTask t = mapper.selectById(id);
|
|
|
25
|
+ if (t == null) throw new RuntimeException("任务不存在");
|
|
|
26
|
+ t.setStatus("in_progress"); t.setStartTime(LocalDateTime.now()); mapper.updateById(t);
|
|
|
27
|
+ }
|
|
|
28
|
+ public void complete(Long id, Integer cc, Double dist, String remark) {
|
|
|
29
|
+ PatrolTask t = mapper.selectById(id);
|
|
|
30
|
+ if (t == null) throw new RuntimeException("任务不存在");
|
|
|
31
|
+ t.setStatus("completed"); t.setEndTime(LocalDateTime.now());
|
|
|
32
|
+ t.setCompletedCheckpoints(cc); t.setDistance(dist); t.setRemark(remark);
|
|
|
33
|
+ mapper.updateById(t);
|
|
|
34
|
+ }
|
|
|
35
|
+ public Map<String, Object> myStats(Long workerId) {
|
|
|
36
|
+ Map<String, Object> r = new LinkedHashMap<>();
|
|
|
37
|
+ r.put("total", mapper.selectCount(new LambdaQueryWrapper<PatrolTask>().eq(PatrolTask::getWorkerId, workerId)));
|
|
|
38
|
+ r.put("completed", mapper.selectCount(new LambdaQueryWrapper<PatrolTask>().eq(PatrolTask::getWorkerId, workerId).eq(PatrolTask::getStatus, "completed")));
|
|
|
39
|
+ r.put("totalDistance", 0);
|
|
|
40
|
+ return r;
|
|
|
41
|
+ }
|
|
|
42
|
+}
|