自动化立体仓库 - WCS系统
#1
zjj
2024-11-26 65bb940703144c7c4fb6ae18d81fa58d5e320e2a
#1
1个文件已修改
51 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -163,7 +163,7 @@
                if (!back && staProtocol.isBarcodeErr()) {
                    errMsg = "扫码失败";
                    log.error("物料码扫码失败");
//                    back = true;
                    back = true;
                }
                // 退回
                if (back) {
@@ -175,6 +175,10 @@
                    }
                    if (!staProtocol.isPakMk()) {
                        continue;
                    }
                    // led 异常显示
                    if (ledThread != null) {
                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                    }
                    staProtocol.setWorkNo(wrkNo);
                    News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
@@ -193,7 +197,11 @@
                        && staProtocol.isPakMk()) {
                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                        News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode);
                        // led 异常显示
                        if (ledThread != null) {
                            String errorMsg = "扫码失败,请重试";
                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                        }
                        staProtocol.setWorkNo(wrkNo);
                        News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
                        wrkNo++;
@@ -203,17 +211,19 @@
                        log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta());
                        continue;
                    }
                    if(Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
                        News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat);
                    if (staProtocol.getSiteId()!= 159){
                        if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
                            News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat);
                        staProtocol.setWorkNo(wrkNo);
                        News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,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());
                        continue;
                            staProtocol.setWorkNo(wrkNo);
                            News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,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());
                            continue;
                        }
                    }
                    // 判断重复工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -299,9 +309,10 @@
                            JSONObject jsonObject2 = JSON.parseObject(response2);
                            if (jsonObject2.getInteger("code").equals(200)) {
                                log.info("自动组托成功!!");
                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "自动组托成功"));
                            } else {
                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "自动组托失败!!!barcodeMat==>"+barcodeMat));
                                News.error(methodName + "==>组托失败:请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response);
                                News.error(methodName + "==>组托失败:请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response2);
                            }
                            try{
                                Thread.sleep(500);
@@ -726,7 +737,7 @@
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
                if (staProtocol.isAutoing() ) {
                    // 查询工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
                    if (wrkMast == null) {
@@ -2377,15 +2388,15 @@
     * 小车地图更新  更新锁
     * */
    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
        log.info("小车地图更新![标记:{}];[BasRgvMap:{}];[staStart:{}];[staEnd:{}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd);
//        log.info("小车地图更新![标记:{}];[BasRgvMap:{}];[staStart:{}];[staEnd:{}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd);
//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
        //更新当前小车锁
        try{
            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点
            log.info("小车地图更新!获取最远站点;[farCurrentStaNo:{}]",farCurrentStaNo);
//            log.info("小车地图更新!获取最远站点;[farCurrentStaNo:{}]",farCurrentStaNo);
            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //获取合并干涉项
            log.info("小车地图更新!获取合并干涉项;[fallMerge:{}]",fallMerge);
//            log.info("小车地图更新!获取合并干涉项;[fallMerge:{}]",fallMerge);
            basRgvMapCurrent.setLockEndRoute(fallMerge);
            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
//            if (i>0){
@@ -2394,14 +2405,14 @@
            //更新另一台小车地图
            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
            log.info("小车地图更新!另一台小车号;[rgvNoOther:{}]",rgvNoOther);
//            log.info("小车地图更新!另一台小车号;[rgvNoOther:{}]",rgvNoOther);
            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
            log.info("小车地图更新!另一台小车;[basRgvMapOther:{}]",JSON.toJSONString(basRgvMapOther));
//            log.info("小车地图更新!另一台小车;[basRgvMapOther:{}]",JSON.toJSONString(basRgvMapOther));
            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//另一台小车可活动最远位置
            log.info("小车地图更新!另一台小车可活动最远位置;[lockEndRoute:{}]",lockEndRoute);
//            log.info("小车地图更新!另一台小车可活动最远位置;[lockEndRoute:{}]",lockEndRoute);
            basRgvMapOther.setEndRoute(lockEndRoute);
            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
//            if (i1>0){