1
zhang
2025-05-07 7a0edfcd4fe0d82a66f8be2c3f894505d544feda
src/main/java/com/zy/asrs/controller/DevopsController.java
@@ -55,7 +55,7 @@
        List<DevopsMessage> devopsMessages = new ArrayList<>();
        DevopsMessage devopsMessage;
        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnSlave.getId()).in("io_type", 101, 103, 107).orderBy("wrk_sts", false));
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnSlave.getId()).orderBy("wrk_sts", false));
            //先查询堆垛机是否在工作
            WrkMast working = wrkMastMapper.selectWorking(crnSlave.getId());
            for (WrkMast wrkMast : wrkMasts) {
@@ -70,24 +70,28 @@
                    }
                    continue;
                }
                List<ErrorType> staError = isStaError(wrkMast);
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
                StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo());
                List<ErrorType> staError = isStaError(staProtocol, wrkMast);
                for (ErrorType type : staError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";" );
                    }
                }
                List<ErrorType> crnError = isCrnError(wrkMast);
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                List<ErrorType> crnError = isCrnError(crnProtocol, wrkMast);
                for (ErrorType type : crnError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";");
                    }
                }
                devopsMessages.add(devopsMessage);
@@ -96,73 +100,80 @@
        return R.ok(devopsMessages);
    }
    private List<ErrorType> isStaError(WrkMast staNo) {
    private List<ErrorType> isStaError(StaProtocol staProtocol, WrkMast wrkMast) {
        List<ErrorType> types = new ArrayList<>();
        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        StaProtocol staProtocol = devpThread.getStation().get(staNo);
        if (staProtocol == null) {
            types.add(ErrorType.ERROR);
            return types;
        } else {
            staProtocol = staProtocol.clone();
        }
        // 自动
        if (staProtocol.isAutoing()) {
            types.add(ErrorType.FEIZIDONG);
        }
        if (staProtocol.isLoading()) {
            types.add(ErrorType.YOUWU);
        }
        if (staProtocol.getWorkNo() == 0) {
            types.add(ErrorType.GONGZUOHAO);
        }
        if (staProtocol.getStaNo() == null) {
            types.add(ErrorType.STANO);
        if (wrkMast.getIoType() > 100) {
            // 出库校验
            // 有物
            if (staProtocol.isLoading()) {
                types.add(ErrorType.YOUWU);
            } // 工作号是否为0
            if (staProtocol.getWorkNo() == 0) {
                types.add(ErrorType.GONGZUOHAO);
            }
            // 目标站点
            if (staProtocol.getStaNo() == null) {
                types.add(ErrorType.STANO);
            }
        } else {
            // 入库校验
        }
        return types;
    }
    private List<ErrorType> isCrnError(WrkMast wrkMast) {
    private List<ErrorType> isCrnError(CrnProtocol crnProtocol, WrkMast wrkMast) {
        List<ErrorType> types = new ArrayList<>();
        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
        // 堆垛机是否空闲
        if (crnProtocol.getStatusType() == CrnStatusType.IDLE) {
            types.add(ErrorType.CRN_NO_IDLE);
        }
        //任务号是否为0
        if (crnProtocol.getTaskNo() == 0) {
            types.add(ErrorType.WORKING);
        }
        // 堆垛机是否自动
        if (crnProtocol.getModeType() == CrnModeType.AUTO) {
            types.add(ErrorType.CRN_FEIZIDONG);
        }
        // 载货台有物
        if (crnProtocol.getLoaded() == 0) {
            types.add(ErrorType.LOAD);
        }
        // 堆垛机取货中
        if (crnProtocol.statusType == CrnStatusType.FETCHING) {
            types.add(ErrorType.WORKING);
        }
        // 放货中
        if (crnProtocol.statusType == CrnStatusType.PUTTING) {
            types.add(ErrorType.WORKING);
        }
        // 堆垛机等待确认状态
        if (crnProtocol.statusType == CrnStatusType.WAITING) {
            types.add(ErrorType.WORKING);
        }
        // 货叉是否会回中
        if (crnProtocol.forkPosType == CrnForkPosType.HOME) {
            types.add(ErrorType.HOME);
        }
        if (crnProtocol.modeType == CrnModeType.AUTO) {
            types.add(ErrorType.FEIZIDONG);
        }
        return types;
    }
    @PostMapping("/site/list")
    @ManagerAuth(memo = "站点信息表")
    public R siteTable(){
    public R siteTable() {
        List<SiteTableVo> list = new ArrayList<>();
        // 内存数据
        Map<Integer, StaProtocol> station = new HashMap<>();
@@ -174,14 +185,19 @@
        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().orderBy("dev_no"));
        for (BasDevp devp : basDevps) {
            StaProtocol staProtocol = station.get(devp.getDevNo());
            if (null == staProtocol) { continue; }
            if (null == staProtocol) {
                continue;
            }
            SiteTableVo vo = new SiteTableVo();
            vo.setDevNo(devp.getDevNo());    // 站点编号
            vo.setWorkNo(staProtocol.getWorkNo());   //  工作号
            vo.setAutoing(staProtocol.isAutoing()?"Y":"N");     //  自动
            vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 有物
            vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 可入
            vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 可出
            vo.setAutoing(staProtocol.isAutoing() ? "Y" : "N");     //  自动
            vo.setLoading(staProtocol.isLoading() ? "Y" : "N");     // 有物
            vo.setInEnable(staProtocol.isInEnable() ? "Y" : "N");   // 可入
            vo.setOutEnable(staProtocol.isOutEnable() ? "Y" : "N"); // 可出
            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            list.add(vo);
        }
        return R.ok().add(list);