自动化立体仓库 - WCS系统
Junjie
2023-03-27 87f00d0a2de9c22a56de6abd28806261adf38c10
src/main/java/com/zy/asrs/controller/SteController.java
@@ -7,10 +7,12 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.CrnStatusType;
import com.zy.asrs.domain.param.SteModeParam;
import com.zy.asrs.domain.param.SteOperatorParam;
import com.zy.asrs.domain.vo.SteMsgTableVo;
import com.zy.asrs.domain.vo.SteStateTableVo;
import com.zy.asrs.domain.vo.SteDataVo;
import com.zy.asrs.domain.vo.SteMsgTableVo;
import com.zy.asrs.domain.vo.SteSensorDataVo;
import com.zy.asrs.domain.vo.SteStateTableVo;
import com.zy.asrs.entity.BasSte;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasSteService;
@@ -25,6 +27,7 @@
import com.zy.core.model.command.SteCommand;
import com.zy.core.model.protocol.SteProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import com.zy.core.thread.SteThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -69,7 +72,8 @@
            if (steProtocol == null) {
                continue;
            }
            vo.setTaskNo(steProtocol.getTaskNo());  //  任务号
            vo.setTaskNo(steProtocol.getTaskNo().intValue());  //  任务号
            vo.setStatusVal(steProtocol.getMode().intValue());  // 在线状态
            vo.setStatusType(steProtocol.mode == 0 ? "离线" : "在线");   //  模式状态
            if (!Cools.isEmpty(steProtocol.getStatus())) {
                vo.setStatus(steProtocol.getStatusType().desc);     //  状态
@@ -95,6 +99,15 @@
            if (!Cools.isEmpty(steProtocol.getTrack())) {
                vo.setTrack(steProtocol.getTrack()==0?"✔":"×");
            }
            if (!Cools.isEmpty(steProtocol.getChargeStatus())) {
                vo.setChargeStatus(steProtocol.getChargeStatus()==1?"✔":"×");
            }
            if (!Cools.isEmpty(steProtocol.getAlarm())) {
                vo.setAlarm1(String.valueOf(steProtocol.getAlarm()));
            }
            if (!Cools.isEmpty(steProtocol.getAlarm0())) {
                vo.setAlarm2(String.valueOf(steProtocol.getAlarm0()));
            }
        }
        return R.ok().add(list);
    }
@@ -119,7 +132,7 @@
                continue;
            }
            vo.setWorkNo(steProtocol.getTaskNo());  //  任务号
            vo.setWorkNo(steProtocol.getTaskNo().intValue());  //  任务号
            if (steProtocol.getTaskNo() > 0) {
                WrkMast wrkMast = wrkMastService.selectById(steProtocol.getTaskNo());
                if (wrkMast != null) {
@@ -173,6 +186,84 @@
        return R.ok().add(vo);
    }
    @GetMapping("/sensor/detl/{steNo}")
    public R steSensorDetl(@PathVariable("steNo") Integer steNo){
        SteSensorDataVo vo = new SteSensorDataVo();
        for (SteSlave ste : slaveProperties.getSte()) {
            if (steNo.equals(ste.getId())) {
                vo.setSteNo(ste.getId());
                // 获取穿梭车信息
                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
                if (steThread == null) {
                    return R.error("设备不在线");
                }
                SteProtocol steProtocol = steThread.getSteProtocol();
                if (steProtocol == null) {
                    return R.error("设备不在线");
                }
                // 穿梭车异常 -----------
                vo.setLiftErr(steProtocol.isLiftErr());
                vo.setInFetchErr(steProtocol.isInFetchErr());
                vo.setOutFetchErr(steProtocol.isOutFetchErr());
                vo.setAntiErr(steProtocol.isAntiErr());
                vo.setLiftSwitchErr(steProtocol.isLiftSwitchErr());
                vo.setTrackErr(steProtocol.isTrackErr());
                vo.setTimeoutErr(steProtocol.isTimeoutErr());
                vo.setConnectErr(steProtocol.isConnectErr());
                vo.setEmergencyErr(steProtocol.isEmergencyErr());
                vo.setTaskTypeErr(steProtocol.isTaskTypeErr());
                vo.setTaskNoErr(steProtocol.isTaskNoErr());
                vo.setNewTaskErr(steProtocol.isNewTaskErr());
                vo.setErrTaskErr(steProtocol.isErrTaskErr());
                vo.setStopErr(steProtocol.isStopErr());
                vo.setOfflineTaskErr(steProtocol.isOfflineTaskErr());
                vo.setStartTaskErr(steProtocol.isStartTaskErr());
                vo.setVoltageTaskErr(steProtocol.isVoltageTaskErr());
                vo.setDevpErr(steProtocol.isDevpErr());
                // 穿梭车提示信息 ----------------------
                vo.setOnline(steProtocol.isOnline());
                vo.setNotOnTrack(steProtocol.isNotOnTrack());
                vo.setLowVoltage(steProtocol.isLowVoltage());
                vo.setElectricityLoss(steProtocol.isElectricityLoss());
                vo.setForcedTravel(steProtocol.isForcedTravel());
                vo.setDemoMode(steProtocol.isDemoMode());
                vo.setBrushConnect(steProtocol.isBrushConnect());
                vo.setTaskManualForbid(steProtocol.isTaskManualForbid());
                vo.setOnlineManualForbid(steProtocol.isOnlineManualForbid());
                vo.setDevpEmergency(steProtocol.isDevpEmergency());
                vo.setTaskInterrupt(steProtocol.isTaskInterrupt());
                vo.setTaskClear(steProtocol.isTaskClear());
                vo.setTaskConfirmTimeout(steProtocol.isTaskConfirmTimeout());
                vo.setTaskWithCharge(steProtocol.isTaskWithCharge());
                // 任务信息 ----------------
                vo.setPakInTask(steProtocol.isPakInTask());
                vo.setPakOutTask(steProtocol.isPakOutTask());
                vo.setPakMoveTask(steProtocol.isPakMoveTask());
                vo.setGoHpTask(steProtocol.isGoHpTask());
                vo.setGoOHpTask(steProtocol.isGoOHpTask());
                vo.setGoHpAvoid(steProtocol.isGoHpAvoid());
                vo.setGoOHpAvoid(steProtocol.isGoOHpAvoid());
                vo.setPakInEmpty(steProtocol.isPakInEmpty());
                vo.setPakInFinish(steProtocol.isPakInFinish());
                vo.setPakOutEmpty(steProtocol.isPakOutEmpty());
                vo.setPakOutFinish(steProtocol.isPakOutFinish());
                vo.setGoHpAvoidFinish(steProtocol.isGoHpAvoidFinish());
                vo.setGoOHpAvoidFinish(steProtocol.isGoOHpAvoidFinish());
                vo.setGoHpAvoidErr(steProtocol.isGoHpAvoidErr());
                vo.setGoOHpAvoidErr(steProtocol.isGoOHpAvoidErr());
                // 状态信息 -------------
                vo.setAutoMode(steProtocol.isAutoMode());
                vo.setVoltageLow(steProtocol.isVoltageLow());
                break;
            }
        }
        return R.ok().add(vo);
    }
    @PostMapping("/detl/update")
    @ManagerAuth
    public R steUpdate(SteDataVo vo){
@@ -191,6 +282,16 @@
                throw new CoolException("服务器错误");
            }
        }
        SteCommand steCommand = new SteCommand();
        steCommand.setTaskNo(vo.getWorkNo());
        if (MessageQueue.offer(SlaveType.Ste, vo.getSteNo(), new Task(2, steCommand))) {
        } else {
            throw new CoolException("命令下发失败");
        }
        basSte.setRow(vo.getRow());
        basSte.setBay(vo.getBay());
        basSte.setLev(vo.getLev());
        basSte.setPakMk(vo.getPakMk());
        basSte.setWrkNo(vo.getWorkNo());
        basSte.setCrnNo(vo.getCrnNo());
@@ -205,6 +306,42 @@
    /****************************************************************/
    /************************** 手动操作 ******************************/
    /****************************************************************/
    @PostMapping("/mode/switch")
    @ManagerAuth
    public R crnDemo(SteModeParam param) throws InterruptedException {
        if (Cools.isEmpty(param.getSteNo())){
            return R.error();
        }
        if (Cools.isEmpty(param.getPassword())){
            return R.error("请输入口令");
        }
        if (!param.getPassword().equals(SystemProperties.WCS_PASSWORD)){
            return R.error("口令错误");
        }
        Thread.sleep(200L);
        for (SteSlave steSlave : slaveProperties.getSte()) {
            if (steSlave.getId().equals(param.getSteNo())) {
                // 获取穿梭车信息
                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steSlave.getId());
                SteProtocol steProtocol = steThread.getSteProtocol();
                if (steProtocol == null) { continue; }
                SteCommand steCommand = new SteCommand();
                steCommand.setSteNo(param.getSteNo()); // 穿梭车编号
                if (steProtocol.getMode() == 0) {
                    steCommand.setControlMode((short) 1);
                } else {
                    steCommand.setControlMode((short) 0);
                }
                if (MessageQueue.offer(SlaveType.Ste, param.getSteNo(), new Task(2, steCommand))) {
                    return R.ok();
                } else {
                    throw new CoolException("命令下发失败");
                }
            }
        }
        return R.ok();
    }
    @ManagerAuth(memo = "手动操作")
    @PostMapping("/operator/ste")
@@ -229,9 +366,9 @@
                steCommand.setSteNo(ste.getId()); // 穿梭车编号
                if (param.getSteTaskMode() == 16) {
                    steCommand.setComplete(true);
                } else if (param.getSteTaskMode() == 17) {
                } else if (param.getSteTaskMode() == 99) {
                    steCommand.setControlMode((short) 1);
                } else if (param.getSteTaskMode() == 18) {
                } else if (param.getSteTaskMode() == 100) {
                    steCommand.setControlMode((short) 0);
                } else {
                    if (steTaskModeType == null) {