#
zjj
2024-03-21 882d2ee2d9a35bf02e5fbb11a79c3abffe9cfe61
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -18,6 +18,7 @@
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.core.CrnThread;
import com.zy.core.RgvThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
@@ -66,38 +67,64 @@
    @ManagerAuth(memo = "复位")
    @PostMapping("/rgv/operator/reset")
    @PostMapping("/operator/reset")
    public R crnReset(RgvOperatorParam param){
        // 系统运行状态判断
//        if (SystemProperties.WCS_RUNNING_STATUS.get()) {
//            return R.error("wcs系统状态为开启");
//        }
        short[] array = new short[9];
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setReset(true);
        return rgvControl(command)?R.ok():R.error();
        return rgvControl2(command)?R.ok():R.error();
    }
    @ManagerAuth(memo = "联机")
    @PostMapping("/operator/auto")
    public R crnAuto(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setAuto(true);
        return rgvControl2(command)?R.ok():R.error();
    }
    @ManagerAuth(memo = "恢复任务")
    @PostMapping("/operator/restoreTask")
    public R crnRestoreTask(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setRestoreTask(true);
        return rgvControl2(command)?R.ok():R.error();
    }
    @ManagerAuth(memo = "完成任务")
    @PostMapping("/operator/compTask")
    public R rgvCompTask(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setCompTask(true);
        return rgvControl2(command)?R.ok():R.error();
    }
    @ManagerAuth(memo = "急停")
    @PostMapping("/operator/stop")
    public R rgvStop(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setStop(true);
        return rgvControl2(command)?R.ok():R.error();
    }
    private boolean rgvControl(CrnCommand command){
        if (command.getCrnNo() == null) {
    private boolean rgvControl2(RgvCommand command){
        if (command.getRgvNo() == null) {
            throw new CoolException("请选择RGV");
        }
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            // 获取堆垛机信息
            if (command.getCrnNo().equals(rgv.getId())) {
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
                if (crnThread == null) {
            if (command.getRgvNo().equals(rgv.getId())) {
                SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
                if (rgvThread == null) {
                    throw new CoolException("RGV不在线");
                }
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    throw new CoolException("RGV不在线");
                }
                // 空闲判断
//                if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) {
                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) {
                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) {
                    return true;
                } else {
                    throw new CoolException("命令下发失败");