#
zjj
2024-03-29 a55e3a5cff9cf3d2067c4ba3668c1331f28b7ca0
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,73 @@
    @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) {
    @ManagerAuth(memo = "取消急停")
    @PostMapping("/operator/noStop")
    public R rgvNoStop(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setNoStop(true);
        return rgvControl2(command)?R.ok():R.error();
    }
    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("命令下发失败");
@@ -132,17 +168,12 @@
            vo.setStatusType(rgvProtocol.modeType.desc);   //  模式状态
            vo.setStatus(rgvProtocol.getStatusType().desc);     //  状态
            vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  工位1任务号
            vo.setStatus1(rgvProtocol.getStatusType1().desc);  // 工位1状态
            vo.setLoading1(rgvProtocol.getLoaded1()==1?"有物":"无物");  // 工位1有物
            vo.setRgvPos(rgvProtocol.getRgvPos());
            vo.setRgvPos1(rgvProtocol.getRgvPosI());
            vo.setWalkPos(rgvProtocol.getWalkPos()==1?"在定位":"不在定位");
            vo.setPakMk(rgvThread.isPakMk()?"无锁":"锁定");
//            vo.setWorkNo2(rgvProtocol.getTaskNo2());  //  工位2任务号
//            vo.setStatus2(rgvProtocol.getStatusType2().desc);  // 工位2状态
//            vo.setLoading2(rgvProtocol.getLoaded2()==1?"有物":"无物");  // 工位2有物
            vo.setWalkPos(rgvProtocol.getAlarm() == 0?"正常":"报警");
            vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
            vo.setStaNo(rgvProtocol.getSouSta().intValue());
            vo.setSourceStaNo(rgvProtocol.getEndSta().intValue());
            if (rgvProtocol.getAlarm() > 0) {
                BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName());