自动化立体仓库 - WCS系统
#
luxiaotao1123
2022-10-10 1da5c464f48dca0be85647b1d4f284d92c9b3eba
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -74,11 +74,15 @@
    @Autowired
    private BasErrLogService basErrLogService;
    @Autowired
    private BasSteErrLogService basSteErrLogService;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private BasSteService basSteService;
    @Autowired
    private WrkChargeService wrkChargeService;
    @Autowired
    private BasSteErrService basSteErrService;
    @Autowired
    private CommonService commonService;
@@ -1871,7 +1875,7 @@
                                continue;
                            }
                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                            String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
                            String errName = crnError==null? "未知异常":crnError.getErrName();
                            BasErrLog basErrLog = new BasErrLog(
                                    null,    // 编号
                                    wrkMast.getWrkNo(),    // 工作号
@@ -1918,7 +1922,7 @@
                        // 记录新异常
                        if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                            String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
                            String errName = crnError==null? "未知异常":crnError.getErrName();
                            BasErrLog basErrLog = new BasErrLog(
                                    null,    // 编号
                                    null,    // 工作号
@@ -1964,6 +1968,121 @@
        }
    }
    /**
     * 穿梭车异常信息记录
     */
    @Async
    public void recSteErr(){
        Date now = new Date();
        for (SteSlave ste : slaveProperties.getSte()) {
            // 获取堆垛机信息
            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
            SteProtocol steProtocol = steThread.getSteProtocol();
            if (steProtocol == null) {
                continue;
            }
            // 有任务
            if (steProtocol.getTaskNo() != 0) {
                BasSteErrLog latest = basSteErrLogService.findLatestByTaskNo(ste.getId(), steProtocol.getTaskNo().intValue());
                // 有异常
                if (latest == null) {
                    if (steProtocol.getAlarm() != null && steProtocol.isAlarm()) {
                        WrkMast wrkMast = wrkMastMapper.selectById(steProtocol.getTaskNo());
                        if (wrkMast == null) {
                            continue;
                        }
                        BasSteErr steErr = basSteErrService.selectById(steProtocol.getAlarm());
                        String errName = steErr==null? "未知异常":steErr.getErrName();
                        BasSteErrLog basSteErrLog = new BasSteErrLog(
                                null,    // 编号
                                wrkMast.getWrkNo(),    // 工作号
                                now,    // 发生时间
                                null,    // 结束时间
                                wrkMast.getWrkSts(),    // 工作状态
                                wrkMast.getIoType(),    // 入出库类型
                                ste.getId(),    // 堆垛机
                                null,    // plc
                                wrkMast.getLocNo(),    // 目标库位
                                wrkMast.getStaNo(),    // 目标站
                                wrkMast.getSourceStaNo(),    // 源站
                                wrkMast.getSourceLocNo(),    // 源库位
                                wrkMast.getBarcode(),    // 条码
                                (int) steProtocol.getAlarm(),    // 异常码
                                errName,    // 异常
                                1,    // 异常情况
                                now,    // 添加时间
                                null,    // 添加人员
                                now,    // 修改时间
                                null,    // 修改人员
                                "任务中异常"    // 备注
                        );
                        if (!basSteErrLogService.insert(basSteErrLog)) {
                            log.error("穿梭车plc异常记录失败 ===>> [id:{}] [error:{}]", ste.getId(), errName);
                        }
                    }
                } else {
                    // 异常修复
                    if (steProtocol.getAlarm() == null || !steProtocol.isAlarm()) {
                        latest.setEndTime(now);
                        latest.setUpdateTime(now);
                        latest.setStatus(2);
                        if (!basSteErrLogService.updateById(latest)) {
                            log.error("穿梭车plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", ste.getId(), latest.getId());
                        }
                    }
                }
                // 无任务
            } else {
                BasSteErrLog latest = basSteErrLogService.findLatest(ste.getId());
                // 有异常
                if (steProtocol.getAlarm() != null && steProtocol.isAlarm()) {
                    // 记录新异常
                    if (latest == null || (latest.getErrCode() != steProtocol.getAlarm().intValue())) {
                        BasSteErr steErr = basSteErrService.selectById(steProtocol.getAlarm());
                        String errName = steErr==null? "未知异常":steErr.getErrName();
                        BasSteErrLog basSteErrLog = new BasSteErrLog(
                                null,    // 编号
                                null,    // 工作号
                                now,    // 发生时间
                                null,    // 结束时间
                                null,    // 工作状态
                                null,    // 入出库类型
                                ste.getId(),    // 堆垛机
                                null,    // plc
                                null,    // 目标库位
                                null,    // 目标站
                                null,    // 源站
                                null,    // 源库位
                                null,    // 条码
                                (int)steProtocol.getAlarm(),    // 异常码
                                errName,    // 异常
                                1,    // 异常情况
                                now,    // 添加时间
                                null,    // 添加人员
                                now,    // 修改时间
                                null,    // 修改人员
                                "无任务异常"    // 备注
                        );
                        if (!basSteErrLogService.insert(basSteErrLog)) {
                            log.error("穿梭车plc异常记录失败 ===>> [id:{}] [error:{}]", ste.getId(), errName);
                        }
                    }
                    // 无异常
                } else {
                    // 异常修复
                    if (latest != null && latest.getStatus() == 1) {
                        latest.setEndTime(now);
                        latest.setUpdateTime(now);
                        latest.setStatus(2);
                        if (!basSteErrLogService.updateById(latest)) {
                            log.error("穿梭车plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", ste.getId(), latest.getId());
                        }
                    }
                }
            }
        }
    }
    // -------------------------------------------------------------------------------