自动化立体仓库 - WCS系统
#
luxiaotao1123
2022-09-22 29e8cbccfba7cd77026c724d093d6a82da99e5af
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1655,46 +1655,12 @@
                                    steThread.setResetFlag(true);
                                }
                            } else if (wrkCharge.getWrkSts() == 25) {
                                // 25.小车行驶 ===>> 26.等待充电
                                // 25.小车去充电 ===>> 26.等待充电
                                wrkCharge.setWrkSts(26L);
                                if (!wrkChargeService.updateById(wrkCharge)) {
                                    log.error("修改充电任务状态 25.小车行驶 ===>> 26.等待充电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                    log.error("修改充电任务状态 25.小车去充电 ===>> 26.等待充电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                } else {
                                    steThread.setResetFlag(true);
                                }
                            } else if (wrkCharge.getWrkSts() == 26) {
                                if (steProtocol.getChargeStatus() == 0) { continue; }
                                // 穿梭车充电命令下发区 --------------------------------------------------------------------------
                                SteCommand steCommand = new SteCommand();
                                steCommand.setSteNo(wrkCharge.getSteNo()); // 穿梭车编号
                                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 工作号
                                steCommand.setTaskMode(SteTaskModeType.CHARGE);
                                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
                                    log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
                                } else {
                                    // 修改工作档状态  26.等待充电 ===> 27.输送线上电
                                    wrkCharge.setWrkSts(27L);
                                    wrkCharge.setModiTime(now);
                                    if (!wrkChargeService.updateById(wrkCharge)) {
                                        log.error("修改充电任务状态 26.等待充电 ===> 27.输送线上电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                    }
                                }
                            } else if (wrkCharge.getWrkSts() == 27) {
                                // 给输送线下发充电任务
                                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
                                SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo());
                                if (null != steChargeType) {
                                    if (devpThread.charge(steChargeType.ssbm - 1, true)) {
                                        // 修改工作档状态 27.输送线上电 ===> 28.完成充电
                                        wrkCharge.setWrkSts(28L);
                                        if (!wrkChargeService.updateById(wrkCharge)) {
                                            log.error("修改充电任务状态 27.输送线上电 ===> 28.完成充电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                        } else {
                                            steThread.setResetFlag(true);
                                        }
                                    }
                                } else {
                                    log.error("获取充电桩号失败,解析库位:{}", wrkCharge.getLocNo());
                                }
                            }
                        }
@@ -2091,8 +2057,15 @@
            BasSte basSte = basSteService.selectById(ste.getId());
            if (Cools.isEmpty(steProtocol, basSte)) { continue; }
            try {
                // 空闲   无作业标记   不在充电
                if (!steProtocol.statusType.equals(SteStatusType.IDLE) || basSte.getPakMk().equals("Y") || steProtocol.getChargeStatus() == 1) {
                // 在线 空闲   无作业标记   不在充电
                if (steProtocol.getMode() == 0
                        || !steProtocol.statusType.equals(SteStatusType.IDLE)
                        || basSte.getPakMk().equals("Y")
//                        || steProtocol.getChargeStatus() == 1
                ) {
                    continue;
                }
                if (!steProtocol.isEnable()) {
                    continue;
                }
                if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
@@ -2127,6 +2100,11 @@
                    }
                } else {
                    // filter
                    if (wrkCharge.getWrkSts() < 26 && steProtocol.getChargeStatus() == 1) {
                        continue;
                    }
                    // 22.小车待搬
                    if (wrkCharge.getWrkSts() == 22) {
                        // 搬小车至充电库位
@@ -2162,6 +2140,7 @@
                    } else if (wrkCharge.getWrkSts() == 24L) {
                        // 小车行驶至充电位
                        if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) {
                            if (steProtocol.getChargeStatus() == 1) { continue; }
                            // 命令下发区 --------------------------------------------------------------------------
                            SteCommand steCommand = new SteCommand();
                            steCommand.setSteNo(wrkCharge.getSteNo()); // 穿梭车编号
@@ -2170,16 +2149,34 @@
                            if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
                                log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
                            } else {
                                // 修改工作档状态 24.小车到达 ===> 25.小车行驶
                                // 修改工作档状态 24.小车到达 ===> 25.小车去充电
                                wrkCharge.setWrkSts(25L);
                                Date now = new Date();
                                wrkCharge.setCrnEndTime(now);
                                wrkCharge.setModiTime(now);
                                if (!wrkChargeService.updateById(wrkCharge)) {
                                    log.error("修改充电任务状态 24.小车到达 ===> 25.小车行驶 失败!!,工作号={}", wrkCharge.getWrkNo());
                                    log.error("修改充电任务状态 24.小车到达 ===> 25.小车去充电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                }
                            }
                        }
                    } else if (wrkCharge.getWrkSts() == 26) {
                        if (steProtocol.getChargeStatus() == 0) { continue; }
                        // 给输送线下发充电任务
                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
                        SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo());
                        if (null != steChargeType) {
                            if (devpThread.charge(steChargeType.ssbm - 1, true)) {
                                // 修改工作档状态 26.等待充电 ===> 28.完成充电
                                wrkCharge.setWrkSts(28L);
                                if (!wrkChargeService.updateById(wrkCharge)) {
                                    log.error("修改充电任务状态 26.等待充电 ===> 28.完成充电 失败!!,工作号={}", wrkCharge.getWrkNo());
                                } else {
                                    steThread.setResetFlag(true);
                                }
                            }
                        } else {
                            log.error("获取充电桩号失败,解析库位:{}", wrkCharge.getLocNo());
                        }
                    }
                }
            } catch (Exception e) {