Junjie
2025-11-19 40d95599c1ac6ef89d465e031132d9c627a7f0bc
src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -16,28 +16,28 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.CodeRes;
import com.zy.common.service.CommonService;
import com.zy.common.utils.News;
import com.zy.common.utils.RedisUtil;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.Slave;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.CrnModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.model.*;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.LiftProtocol;
import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.RgvThread;
import com.zy.core.thread.ScaleThread;
import com.zy.core.thread.SiemensCrnThread;
import com.zy.system.entity.Config;
@@ -64,8 +64,6 @@
    private WrkMastService wrkMastService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private LocMastMapper locMastMapper;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
@@ -187,6 +185,31 @@
        }
        redisUtil.set("crnLatestData", JSON.toJSONString(vos));
        return R.ok().add(vos);
    }
    @PostMapping("/latest/data/rgv")
    @ManagerAuth(memo = "RGV实时数据")
    public R rgvLatestData(){
        List<RgvLatestDataVo> vos = new ArrayList<>();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            // 获取堆垛机信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
            if (rgvThread == null) {
                continue;
            }
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            RgvLatestDataVo vo = new RgvLatestDataVo();
            vo.setRgvId(rgvProtocol.getRgvNo());   //  RGV编号
            vo.setTrackSiteNo(String.valueOf(rgvProtocol.getRgvPos()));
            vo.setRgvStatus(rgvProtocol.getStatusType());
            vos.add(vo);
        }
        redisUtil.set("rgvLatestData", JSON.toJSONString(vos));
        return R.ok().add(vos);
    }
@@ -312,6 +335,41 @@
        return R.error();
    }
    @PostMapping("/rgv/detail")
    @ManagerAuth(memo = "RGV设备数据详情")
    public R rgvDetail(@RequestParam Integer rgvNo){
        if (Cools.isEmpty(rgvNo)){
            return R.parse(CodeRes.EMPTY);
        }
        RgvDetailVo vo = new RgvDetailVo();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            if (rgvSlave.getId().equals(rgvNo)) {
                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                vo.setRgvNo(rgvNo);
                vo.setWorkNo(rgvProtocol.getTaskNo1());
                vo.setRgvStatus(rgvProtocol.getStatusType().desc);
                vo.setError(String.valueOf(rgvProtocol.getAlarm()));
                if (rgvProtocol.getTaskNo1() > 0) {
                    WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1());
                    if (wrkMast != null) {
                        vo.setSourceStaNo(wrkMast.getSourceStaNo$());
                        vo.setStaNo(wrkMast.getStaNo$());
                        vo.setWrkSts(wrkMast.getWrkSts$());   // 工作状态
                        vo.setIoType(wrkMast.getIoType$());   //  入出库类型
                        vo.setSourceLocNo(wrkMast.getSourceLocNo$());
                        vo.setLocNo(wrkMast.getLocNo$());
                        vo.setRgvStatus(rgvProtocol.getStatusType().desc);
                    }
                }
                return R.ok().add(vo);
            }
        }
        return R.error();
    }
    @Deprecated
    @PostMapping("/site/update")
    @ManagerAuth(memo = "输送设备数据修改")
@@ -351,4 +409,46 @@
        return R.ok();
    }
    @GetMapping("/getIoMode")
    public R getIoMode() {
        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        if (devpThread == null) {
            return R.error("线程不存在");
        }
        LiftProtocol liftProtocol = devpThread.getLiftStatus();
        if (liftProtocol == null) {
            return R.error("线程不存在");
        }
        return R.ok().add(liftProtocol.getIoMode());
    }
    @PostMapping("/switchIoMode")
    public R switchIoMode() {
        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        if (devpThread == null) {
            return R.error("线程不存在");
        }
        LiftProtocol liftProtocol = devpThread.getLiftStatus();
        if (liftProtocol == null) {
            return R.error("线程不存在");
        }
        //检测是否还有任务没做完
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>());
        if (!wrkMasts.isEmpty()) {
            return R.error("系统任务未完成,请完成后再切换模式");
        }
        int switchIoMode = 1;
        if (liftProtocol.getIoMode() == 1) {
            switchIoMode = 2;
        }
        boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, switchIoMode));
        return R.ok();
    }
}