package com.zy.asrs.controller; import com.core.common.R; import com.zy.asrs.domain.NotifyDto; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.domain.param.*; import com.zy.asrs.utils.NotifyUtils; import com.zy.common.service.CommonService; import com.zy.core.cache.SlaveConnection; import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.SlaveType; import com.zy.core.model.ForkLiftSlave; import com.zy.core.model.ShuttleSlave; import com.zy.core.model.protocol.ForkLiftProtocol; import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.ForkLiftThread; import com.zy.core.thread.ShuttleThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; @Slf4j @RestController @RequestMapping("/openapi") public class OpenController { @Autowired private CommonService commonService; @Autowired private ShuttleDispatchUtils shuttleDispatchUtils; @Autowired private NotifyUtils notifyUtils; @Autowired private SlaveProperties slaveProperties; @PostMapping("/createMoveTask") public R createMoveTask(@RequestBody CreateMoveTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(null, param.getLocNo(), param.getShuttleNo()); if (dispatchShuttle) { return R.ok(); } return R.error("生成失败"); } //移库任务 @PostMapping("/createLocMoveTask") public R createLocMoveTask(@RequestBody CreateLocMoveTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean result = commonService.createLocMoveTask(param); if (result) { return R.ok(); } return R.error("生成移库任务失败"); } //入库任务 @PostMapping("/createInTask") public R createInTask(@RequestBody CreateInTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean result = commonService.createInTask(param); if (result) { return R.ok(); } return R.error("生成入库任务失败"); } //出库任务 @PostMapping("/createOutTask") public R createOutTask(@RequestBody CreateOutTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean result = commonService.createOutTask(param); if (result) { return R.ok(); } return R.error("生成出库任务失败"); } @PostMapping("/completeTask") public R completeTask(@RequestBody CompleteTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean completeTask = commonService.completeTask(param); if (completeTask) { return R.ok(); } return R.error("任务完成失败"); } @PostMapping("/cancelTask") public R cancelTask(@RequestBody CancelTaskParam param) { if (param == null) { return R.error("参数不能为空"); } boolean completeTask = commonService.cancelTask(param); if (completeTask) { return R.ok(); } return R.error("任务取消失败"); } @PostMapping("/deviceStatus") public R getDeviceStatus() { HashMap map = new HashMap<>(); //获取小车数据 ArrayList shuttleProtocols = new ArrayList<>(); for (ShuttleSlave slave : slaveProperties.getShuttle()) { ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } shuttleProtocols.add(shuttleProtocol); } //获取货叉提升机数据 ArrayList forkLiftProtocols = new ArrayList<>(); for (ForkLiftSlave slave : slaveProperties.getForkLift()) { ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, slave.getId()); if (forkLiftThread == null) { continue; } ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); if (forkLiftProtocol == null) { continue; } forkLiftProtocols.add(forkLiftProtocol); } map.put("shuttle", shuttleProtocols); map.put("forkLift", forkLiftProtocols); return R.ok().add(map); } @GetMapping("/test") public R test() { notifyUtils.notify("task", 1, "9999", NotifyMsgType.SHUTTLE_MOVING, "data"); notifyUtils.notify(String.valueOf(SlaveType.Shuttle), 2, "9999", NotifyMsgType.SHUTTLE_MOVE_COMPLETE); return R.ok(); } }