pjb
2025-07-05 015b9522a1a70a3e727fccfcc2f56365d82aaaf3
src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -206,7 +206,7 @@
//                    back = true;
//                }
                // 退回
                if (back && staProtocol.isInEnable()) {
                if (back && staProtocol.isInEnable() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                    if (!staProtocol.isLoading()){
@@ -267,7 +267,7 @@
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            log.error("输送线下发2:"+dto.getWorkNo()+","+dto.getStaNo());
                            log.info("输送线下发2:"+dto.getWorkNo()+","+dto.getStaNo());
                            if (!result) {
                                News.error(methodName + ":更新plc站点信息失败");
                                throw new CoolException("更新plc站点信息失败");
@@ -810,8 +810,9 @@
                }
                // 判断堆垛机出库站状态
                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                if ((staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable())
                        || (staProtocol.getSiteId() == 1056 && staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y"))) {
                    // 堆垛机控制过滤
                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                        break;
@@ -960,7 +961,7 @@
                        // 修改空桶库对应库位任务状态
                        if(slave.getId() == 4 && crnStn.getStaNo() == 1056) {
                            String locNo2 = (wrkMast.getSourceLocNo().startsWith("09") ? "10" : "12") + wrkMast.getSourceLocNo().substring(2);
                            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locNo2));
                            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locNo2).eq("wrk_sts",11));
                            if (wrkMast1 != null) {
                                wrkMast1.setWrkSts(12L);
                                wrkMast1.setCrnStrTime(now);
@@ -1105,6 +1106,12 @@
                        // 交换库位号
                        String locNo = wrkMast.getLocNo();
                        wrkMast.setLocNo(wrkMast1.getLocNo());
                        // 交换入库时间,提取库存时按顺序先浅后深
                        Date ioTime = wrkMast.getIoTime();
                        if(locNo.startsWith("10")) {
                            wrkMast.setIoTime(wrkMast1.getIoTime());
                            wrkMast1.setIoTime(ioTime);
                        }
                        wrkMast1.setLocNo(locNo);
                        wrkMast1.setCrnEndTime(now);
                        wrkMast1.setModiTime(now);
@@ -1148,6 +1155,9 @@
                }
                // 判断是不是空闲三分钟
                BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
                if (basCrnp.getWrkNo() != 0) {
                    continue;
                }
                Date now = new Date();
                Date modiTime = basCrnp.getModiTime();
                long diffInMillis = now.getTime()-modiTime.getTime();
@@ -1670,14 +1680,50 @@
                    log.error("呼叫rgv,任务号不存在:{}",staProtocol.getWorkNo());
                    continue;
                }
                // 1083,1086,1089 外形检测失败,不是去异常口的 停在原处
//                if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
//                    boolean back = false;
//                    String errMsg = "";
//                    if (staProtocol.isFrontErr()) {
//                        errMsg = "前超限";
//                        back = true;
//                    }
//                    if (!back && staProtocol.isBackErr()) {
//                        errMsg = "后超限";
//                        back = true;
//                    }
//                    if (!back && staProtocol.isHighErr()) {
//                        errMsg = "高超限";
//                        back = true;
//                    }
//                    if (!back && staProtocol.isLeftErr()) {
//                        errMsg = "左超限";
//                        back = true;
//                    }
//                    if (!back && staProtocol.isRightErr()) {
//                        errMsg = "右超限";
//                        back = true;
//                    }
//                    if (back) {
//                        log.error("{}站点,外形检测失败:{}",site,errMsg);
//                        continue;
//                    }
//                }
                if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
                    continue;
                }
                if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
                    // 有1090的任务跳过rgv分配
                    if(wrkMast.getStaNo() == 1090) {
                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 or source_sta_no = 1090 "));
                        if (count > 1) {
                        DevpThread devpThread2 = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
                        StaProtocol staProtocol2 = devpThread2.getStation().get(1090);
                        if(!staProtocol2.isAutoing() || staProtocol2.isLoading() || staProtocol2.getWorkNo() != 0) {
                            log.info("去异常口目标站点,非自动,有物,工作号为:{}",staProtocol2.getWorkNo());
                            continue;
                        }
                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 and wrk_sts in (9,10)"));
                        if (count > 0) {
                            log.info("去异常口,但是前面有去异常口任务数:{}",count);
                            continue;
                        }
                    }
@@ -1715,7 +1761,7 @@
                    continue;
                }
                if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) { // 到1024出库口,放到输送线后任务完成
                if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1031 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {  // 到1024出库口,放到输送线后任务完成
                    if(wrkMast.getWrkSts() != 2 ){
                        log.warn("rgv放货完成3,rgv未复位:rgv号{},任务号:{},任务状态{}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
                        continue;
@@ -1726,7 +1772,7 @@
//                    }
                    wrkMast.setModiTime(new Date());
                    wrkMastService.updateById(wrkMast);
                } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
                } else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1031 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
                    if(wrkMast.getWrkSts() != 2 ) {
                        log.warn("rgv放货完成101,rgv未复位:rgv号{},任务号:{},任务状态{}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
                        continue;
@@ -1930,6 +1976,7 @@
                // <4 < 2 < 4
                int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
                if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) {
                    log.info("{}自动补空桶,罐装线要桶型信息:{},正在执行任务数:{}",wantBucket.getSite(), wantBucket.getBucketType(),count);
                    // 判断库里有无空桶组
                    List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
                    for (int i = 0; i < locDetlList.size(); i++) {
@@ -2060,14 +2107,6 @@
                    param.setSourceStaNo(site + 2);
                    param.setTbFlag(staProtocol2.isBarcodeErr());
                    param.setCannedVolume(Math.round(staProtocol.getCannedVolume() * 100.0) / 100.0);
//                    param.setWrkNo(57);
//                    param.setMatnr("101");
//                    param.setBatch("tt1");
//                    param.setManuDate("2025-06-05");
//                    param.setWeight(100.0);
//                    param.setGrossWeight(100.0);
//                    param.setSourceStaNo(site);
//                    param.setTbFlag(true);
                    String response = new HttpHandler.Builder()
                            .setUri(wmsUrl)