| | |
| | | @Slf4j |
| | | public class TaskProtocolCache { |
| | | // 本地缓存,键为 taskNo,值为 TaskProtocol |
| | | private final ConcurrentHashMap<Long, TaskProtocol> cache = new ConcurrentHashMap<>(); |
| | | private final ConcurrentHashMap<String, TaskProtocol> cache = new ConcurrentHashMap<>(); |
| | | |
| | | // 读写锁,确保线程安全 |
| | | // private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); |
| | |
| | | * 更新设备状态 |
| | | */ |
| | | public void updateTaskProtocol(TaskProtocol status) { |
| | | cache.put(status.getTaskNo(), status); |
| | | cache.put(status.getTaskNoDirection(), status); |
| | | } |
| | | |
| | | /** |
| | | * 删除任务缓存 |
| | | */ |
| | | public TaskProtocol removeTaskProtocol(String taskNo) { |
| | | public TaskProtocol removeTaskProtocol(String taskNoDirection) { |
| | | // lock.readLock().lock(); // 加读锁 |
| | | try { |
| | | return cache.remove(taskNo); |
| | | } finally { |
| | | // lock.readLock().unlock(); // 释放读锁 |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取任务缓存 |
| | | */ |
| | | public TaskProtocol getTaskProtocol(String taskNo) { |
| | | // lock.readLock().lock(); // 加读锁 |
| | | try { |
| | | return cache.get(taskNo); |
| | | return cache.remove(taskNoDirection); |
| | | } finally { |
| | | // lock.readLock().unlock(); // 释放读锁 |
| | | } |
| | |
| | | /** |
| | | * 获取所有任务 |
| | | */ |
| | | public ConcurrentHashMap<Long, TaskProtocol> getAllTaskProtocol() { |
| | | public ConcurrentHashMap<String, TaskProtocol> getAllTaskProtocol() { |
| | | // lock.readLock().lock(); // 加读锁 |
| | | try { |
| | | return new ConcurrentHashMap<>(cache); // 返回副本 |
| | |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | /** |
| | | * 获取所有取任务 |
| | | */ |
| | | public List<TaskProtocol> getAllTakeTaskProtocol() { |
| | | // lock.readLock().lock(); // 加读锁 |
| | | try { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取所有取任务 |
| | | * 获取所有放任务 |
| | | */ |
| | | public List<TaskProtocol> getAllPutTaskProtocol() { |
| | | // lock.readLock().lock(); // 加读锁 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取所有取任务 |
| | | * 获取所有行走任务 |
| | | */ |
| | | public List<TaskProtocol> getAllWalkTaskProtocol() { |
| | | // lock.readLock().lock(); // 加读锁 |