wlzboy
4 天以前 c098f1e3a3e052aa3d65584aae6dc003a70d75ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.ruoyi.system.service.impl;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.service.ISysTaskEmergencyService;
 
import java.util.List;
 
/**
 * 急救转运任务扩展信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-01-16
 */
@Service
public class SysTaskEmergencyServiceImpl implements ISysTaskEmergencyService {
    
    @Autowired
    private SysTaskEmergencyMapper sysTaskEmergencyMapper;
 
    /**
     * 查询急救转运任务扩展信息
     * 
     * @param id 急救转运任务扩展信息主键
     * @return 急救转运任务扩展信息
     */
    @Override
    public SysTaskEmergency selectSysTaskEmergencyById(Long id) {
        return sysTaskEmergencyMapper.selectSysTaskEmergencyById(id);
    }
 
    /**
     * 通过任务ID查询急救转运任务扩展信息
     * 
     * @param taskId 任务ID
     * @return 急救转运任务扩展信息
     */
    @Override
    public SysTaskEmergency selectSysTaskEmergencyByTaskId(Long taskId) {
        return sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
    }
 
    /**
     * 新增急救转运任务扩展信息
     * 
     * @param sysTaskEmergency 急救转运任务扩展信息
     * @return 结果
     */
    @Override
    public int insertSysTaskEmergency(SysTaskEmergency sysTaskEmergency) {
        return sysTaskEmergencyMapper.insertSysTaskEmergency(sysTaskEmergency);
    }
 
    /**
     * 修改急救转运任务扩展信息
     * 
     * @param sysTaskEmergency 急救转运任务扩展信息
     * @return 结果
     */
    @Override
    public int updateSysTaskEmergency(SysTaskEmergency sysTaskEmergency) {
        return sysTaskEmergencyMapper.updateSysTaskEmergency(sysTaskEmergency);
    }
 
    /**
     * 删除急救转运任务扩展信息
     * 
     * @param id 急救转运任务扩展信息主键
     * @return 结果
     */
    @Override
    public int deleteSysTaskEmergencyById(Long id) {
        return sysTaskEmergencyMapper.deleteSysTaskEmergencyById(id);
    }
 
    /**
     * 通过任务ID删除急救转运任务扩展信息
     * 
     * @param taskId 任务ID
     * @return 结果
     */
    @Override
    public int deleteSysTaskEmergencyByTaskId(Long taskId) {
        return sysTaskEmergencyMapper.deleteSysTaskEmergencyByTaskId(taskId);
    }
 
    /**
     * 查询待同步的急救转运任务列表(同步状态为0或3的任务)
     * 
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 急救转运任务列表
     */
    @Override
    public List<SysTaskEmergency> selectPendingSyncTasks(Integer offset, Integer limit) {
        return sysTaskEmergencyMapper.selectPendingSyncTasks(offset, limit);
    }
    
    /**
     * 查询待同步调度单的任务列表(已同步服务单但未同步调度单)
     * 
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 急救转运任务列表
     */
    @Override
    public List<SysTaskEmergency> selectPendingDispatchSyncTasks(Integer offset, Integer limit) {
        return sysTaskEmergencyMapper.selectPendingDispatchSyncTasks(offset, limit);
    }
    
    /**
     * 查询已同步调度单且状态未完成的任务列表(用于状态同步)
     * 
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 急救转运任务列表
     */
    @Override
    public List<SysTaskEmergency> selectSyncedTasksForStatusUpdate(Integer offset, Integer limit) {
        return sysTaskEmergencyMapper.selectSyncedTasksForStatusUpdate(offset, limit);
    }
    
    /**
     * 标记任务需要重新同步(车辆或人员变更时调用)
     */
    @Override
    public void markNeedResync(Long taskId) {
        try {
            SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
            if (emergency == null) {
                return;
            }
            
            // 只有已经同步过调度单的任务才需要标记重新同步
            if (emergency.getDispatchSyncStatus() != null && emergency.getDispatchSyncStatus() == 2 
                    && emergency.getLegacyDispatchOrdId() != null && emergency.getLegacyDispatchOrdId() > 0) {
                emergency.setNeedResync(1);
                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
            }
        } catch (Exception e) {
            // 标记失败不影响主流程,只记录日志
            Logger log = LoggerFactory.getLogger(SysTaskEmergencyServiceImpl.class);
            log.error("标记任务需要重新同步失败,任务ID: {}", taskId, e);
        }
    }
}