db
2025-09-23 8193e394e54c37dd17d98638b5a2574bf999fc49
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -153,7 +153,7 @@
                    errMsg = "右超限";
                    back = true;
                }
                if (!back && staProtocol.getWeight() > 1000) {
                if (!back && staProtocol.getWeight() > 15000) {
                    errMsg = "超重或未读取";
                    back = true;
                }
@@ -183,13 +183,14 @@
                    if (!staProtocol.isPakMk()) {
                        continue;
                    }
                    staProtocol.setWorkNo(wrkNo);
                    staProtocol.setWorkNo(wrkNo);//退回 工作号:10000
                    News.info("{}PLC入库回退:{},任务号:{}", inSta.getStaNo(), errMsg, wrkNo);
                    wrkNo++;
//                    wrkNo++;
                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                    devpThread.setPakMk(staProtocol.getSiteId(), false);
                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                    log.error("输送线下发1:" + wrkNo + "," + inSta.getBackSta());
                    break;//超限托盘退回不生成工作档
                }
                // 判断是否满足入库条件
@@ -204,7 +205,7 @@
                        staProtocol.setWorkNo(wrkNo);
                        News.info("{}barcode入库回退:{},任务号:{}", inSta.getStaNo(), errMsg, wrkNo);
                        wrkNo++;
//                        wrkNo++;
                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -223,6 +224,13 @@
//                        }
                        News.error(barcode + "条码已存在状态为( 2.设备上走 )的数据,请查看WCS输送线界面,工作号={}", wrkMast.getWrkNo());
                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "条码已存在状态为( 2.设备上走 )的任务,工作号=" + wrkMast.getWrkNo()));
                        staProtocol.setWorkNo(wrkMast.getWrkNo());
                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                        if (!result) {
                            throw new CoolException("更新plc站点信息失败");
                        }
                        continue;
//                        barcodeThread.setBarcode("");
//                        staProtocol.setWorkNo(wrkMast.getWrkNo());
@@ -311,7 +319,7 @@
                                continue;
                            }
                            staProtocol.setWorkNo(wrkNo);
                            wrkNo++;
//                            wrkNo++;
                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -323,7 +331,7 @@
                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                            }
//                            }
//                            News.error(methodName + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                            News.error(methodName + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                        }
@@ -337,7 +345,7 @@
            }
        }
//        News.infoNoLog(""+mark+" - 0"+" - 组托  ===》执行完成");
        News.infoNoLog(""+mark+" - 0"+" - 组托  ===》执行完成");
    }
@@ -468,7 +476,7 @@
                // 退回
//                if (back) {
//                    log.info("errmsg: " + errMsg);
////                        News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
//                        News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
//                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
//                    if (!staProtocol.isLoading()) {
//                        continue;
@@ -503,7 +511,7 @@
//
//
//                    if (!Cools.isEmpty(barcode)) {
////                    News.info(""+mark+" - 1"+" - {}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
//                    News.info(""+mark+" - 1"+" - {}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
//                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
//                            continue;
//                        }
@@ -520,7 +528,7 @@
                    staProtocol = staProtocol.clone();
                }
//                // 入出库模式判断
                // 入出库模式判断
//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
@@ -1198,14 +1206,18 @@
                } else {
                    staProtocol = staProtocol.clone();
                }
                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() - 1);
                StaProtocol staProtocol1 = staProtocol.getSiteId()==101?devpThread.getStation().get(crnStn.getStaNo() + 1):devpThread.getStation().get(crnStn.getStaNo() - 1);
//                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() - 1);
//                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() + 1);
                if (staProtocol1 == null) {
                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol);
                    break;
                } else {
                    staProtocol1 = staProtocol1.clone();
                }
                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() - 2);
                StaProtocol staProtocol2 = staProtocol.getSiteId()==101?devpThread.getStation().get(crnStn.getStaNo() + 2):devpThread.getStation().get(crnStn.getStaNo());
//                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() - 2);
//                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() + 2);
                if (staProtocol2 == null) {
                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol);
                    break;
@@ -1213,7 +1225,7 @@
                    staProtocol2 = staProtocol2.clone();
                }
                //出入口输送线只允许存在一个托盘
                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() ) {
                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() || staProtocol.getWorkNo() != 0 || staProtocol1.getWorkNo() != 0 || staProtocol2.getWorkNo() != 0) {
                    break;
                }
@@ -1544,7 +1556,10 @@
            //  状态:等待确认 并且  任务完成位 = 1
            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                News.warnNoLog("" + mark + " - 0" + " - 开始执行对工作档的完成操作,任务号:" + crnProtocol.getTaskNo());
                if (crnProtocol.getTaskNo() == 9999){
                    crnThread.setResetFlag(true);
                    continue;
                }
                // 获取入库待确认工作档
                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
                if (wrkMast == null) {
@@ -1554,9 +1569,7 @@
                // 入库 + 库位转移  ==> 4.入库完成
                if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
                    wrkMast.setWrkSts(4L);
                } else if (wrkMast.getIoType()==120 && wrkMast.getWrkSts()==2){
                    wrkMast.setWrkSts(5L);
                }else {
                } else {
                    continue;
                }
                Date now = new Date();
@@ -1773,7 +1786,7 @@
                                LedCommand ledCommand = new LedCommand();
                                ledCommand.setWorkNo(dto.getWorkNo());
                                ledCommand.setIoType(1);
                                ledCommand.setTitle("全板入库");
                                ledCommand.setTitle("空板入库");
                                ledCommand.setLocNo(dto.getLocNo());
                                ledCommand.setStaNo(dto.getStaNo());
                                commands.add(ledCommand);
@@ -1810,7 +1823,7 @@
                }
            }
        }
//        News.infoNoLog(""+mark+" - 0"+" - 空栈板初始化入库,叉车入库站放货执行完成");
        News.infoNoLog(""+mark+" - 0"+" - 空栈板初始化入库,叉车入库站放货执行完成");
    }
    /**
@@ -3213,13 +3226,6 @@
            }
            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
//                if ((crnProtocol.getCrnNo()==3 || crnProtocol.getCrnNo()==4) && crnProtocol.getBay()==0 && crnProtocol.getLevel() == 1) {
//                    continue;
//                }
//                if ((crnProtocol.getCrnNo()==1 || crnProtocol.getCrnNo()==2) && crnProtocol.getBay()==1 && crnProtocol.getLevel() == 1) {
//                    continue;
//                }
                if (crnProtocol.getCrnNo()==1 && crnProtocol.getBay()==1 && crnProtocol.getLevel() == 1) {
                    continue;
                }
@@ -3244,49 +3250,20 @@
                CrnSlave.CrnStn crnStn = crn.getCrnInStn().get(0);
                News.info("堆垛机无任务自动回入库口待机==>>" + crnProtocol.getCrnNo() + "号堆垛机");
                //生成回原点工作档  余姚锐麒
                WrkMast wrkMast=new WrkMast();
                wrkMast.setWrkNo(9999);//工作号
                wrkMast.setIoTime(new Date());
                wrkMast.setWrkSts(2L);//工作状态
                wrkMast.setIoType(120);//任务类型  120.堆垛机回原点
                wrkMast.setIoPri(13.0);//优先级
                wrkMast.setCrnNo(1);//堆垛机号
                wrkMast.setSourceStaNo(0);//源站
                wrkMast.setStaNo(0);//目标站
                wrkMast.setSourceLocNo("");//源库位
                wrkMast.setLocNo("");//目标库位
                if (wrkMastMapper.insert(wrkMast)==0){
                    throw new CoolException("保存工作档数据状态失败");
                }
                // 命令下发区 --------------------------------------------------------------------------
                CrnCommand crnCommand = new CrnCommand();
//                if (crnProtocol.getCrnNo()==3 || crnProtocol.getCrnNo()==4){
//                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号
//                    crnCommand.setTaskNo((short) 9999); // 工作号
//                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
//                    crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式:  堆垛机移动
//                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
//                    crnCommand.setSourcePosY((short) 0);     // 源库位列
//                    crnCommand.setSourcePosZ((short) 1);     // 源库位层
//                    crnCommand.setDestinationPosX((short) 0);     // 目标库位排
//                    crnCommand.setDestinationPosY((short) 0);     // 目标库位列
//                    crnCommand.setDestinationPosZ((short) 0);     // 目标库位层
//                    crnCommand.setCommand((short) 1);
//                }else {
                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号
                    crnCommand.setTaskNo((short) 9999); // 工作号
                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
//                    crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式:  堆垛机移动
                    crnCommand.setTaskMode(CrnTaskModeType.X_MOVE);//余姚锐麒回原点任务类型
                    crnCommand.setTaskMode(CrnTaskModeType.X_MOVE);//余姚锐麒回原点任务模式:  站位转移
                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
                    crnCommand.setSourcePosY((short) 1);     // 源库位列
                    crnCommand.setSourcePosZ((short) 1);     // 源库位层
                    crnCommand.setDestinationPosX((short) 0);     // 目标库位排
                    crnCommand.setDestinationPosY((short) 0);     // 目标库位列
                    crnCommand.setDestinationPosZ((short) 0);     // 目标库位层
                    crnCommand.setCommand((short) 1);
//                }
                    crnCommand.setCommand((short) 1);//任务确认位
                if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
                    News.error("堆垛机移动命令下发失败,堆垛机号={},任务数据={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
                }