Junjie
2023-12-21 2b118d22f058eab19bef175753517c2f65dd4418
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -480,6 +480,7 @@
                            param.setBarcode(wrkMast.getBarcode());
                            param.setIoType(wrkMast.getIoType());
                            param.setSourceStaNo(pickSta.getStaNo());
                            param.setLiftNo(pickSta.getLiftNo());
                            param.setLocType1(locMast.getLocType1());
                            String response = new HttpHandler.Builder()
                                    .setUri(wmsUrl)
@@ -492,26 +493,26 @@
                            if (code.equals(200)) {
                                StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                                //获取回库提升机目标站
                                LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo()));
                                if (liftStaProtocol == null) {
                                    News.info(wrkMast.getWrkNo() + "获取回库提升机目标站失败");
                                    continue;
                                }
                                // 更新工作档数据状态
                                wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54
                                wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
                                wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 源站
                                wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站
                                wrkMast.setLocNo(dto.getLocNo()); // 目标库位
                                wrkMast.setShuttleNo(null); // 穿梭车清空
                                wrkMast.setLiftNo(null);// 提升机清空
                                wrkMast.setModiTime(new Date());
                                if (wrkMastMapper.updateById(wrkMast) == 0) {
                                    News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                                    continue;
                                }
//                                //获取回库提升机目标站
//                                LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo()));
//                                if (liftStaProtocol == null) {
//                                    News.info(wrkMast.getWrkNo() + "获取回库提升机目标站失败");
//                                    continue;
//                                }
//
//                                // 更新工作档数据状态
//                                wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54
//                                wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
//                                wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 源站
//                                wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站
//                                wrkMast.setLocNo(dto.getLocNo()); // 目标库位
//                                wrkMast.setShuttleNo(null); // 穿梭车清空
//                                wrkMast.setLiftNo(null);// 提升机清空
//                                wrkMast.setModiTime(new Date());
//                                if (wrkMastMapper.updateById(wrkMast) == 0) {
//                                    News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
//                                    continue;
//                                }
                            } else if (code == 500) {
                                News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                            }
@@ -630,6 +631,7 @@
                            param.setBarcode(wrkMast.getBarcode());
                            param.setIoType(107);//盘点
                            param.setSourceStaNo(pickSta.getStaNo());
                            param.setLiftNo(pickSta.getLiftNo());
                            param.setLocType1(locMast.getLocType1());
                            String response = new HttpHandler.Builder()
                                    .setUri(wmsUrl)
@@ -642,26 +644,26 @@
                            if (code.equals(200)) {
                                StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                                //获取回库提升机目标站
                                LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo()));
                                if (liftStaProtocol == null) {
                                    News.info(wrkMast.getWrkNo() + "获取回库提升机目标站失败");
                                    continue;
                                }
                                // 更新工作档数据状态
                                wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 107->57
                                wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
                                wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 源站
                                wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站
                                wrkMast.setLocNo(dto.getLocNo()); // 目标库位
                                wrkMast.setShuttleNo(null); // 穿梭车清空
                                wrkMast.setLiftNo(null);// 提升机清空
                                wrkMast.setModiTime(new Date());
                                if (wrkMastMapper.updateById(wrkMast) == 0) {
                                    News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                                    continue;
                                }
//                                //获取回库提升机目标站
//                                LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo()));
//                                if (liftStaProtocol == null) {
//                                    News.info(wrkMast.getWrkNo() + "获取回库提升机目标站失败");
//                                    continue;
//                                }
//
//                                // 更新工作档数据状态
//                                wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 107->57
//                                wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
//                                wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 源站
//                                wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站
//                                wrkMast.setLocNo(dto.getLocNo()); // 目标库位
//                                wrkMast.setShuttleNo(null); // 穿梭车清空
//                                wrkMast.setLiftNo(null);// 提升机清空
//                                wrkMast.setModiTime(new Date());
//                                if (wrkMastMapper.updateById(wrkMast) == 0) {
//                                    News.info(wrkMast.getWrkNo() + "更新工作档数据状态失败");
//                                    continue;
//                                }
//                                staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//写入目标站
//                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -2897,7 +2899,7 @@
                    if (ioType != 110 && ioType != 10) {
                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
                        locDetls.forEach(locDetl -> {
                            Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo());
                            Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo);
                            Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
                            Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
                            Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
@@ -2927,6 +2929,11 @@
                        });
                        if (ioType == 107) {
                            locDetls = new ArrayList<>();
                            ledCommand.setMatDtos(new ArrayList<>());
                        }
                        if (locDetls.isEmpty()) {
                            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
                            wrkDetls.forEach(wrkDetl -> {
@@ -2934,11 +2941,10 @@
                            });
                            if (wrkDetls.isEmpty()) {//从历史档查询
                                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo);
                                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode);
                                for (WrkDetlLog wrkDetlLog : wrkDetlLogs) {
                                    ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode()));
                                }
                            }
                        }
                    }
@@ -3389,6 +3395,17 @@
            //获取小车到输送站点行走命令
            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id);
            if (result == null) {
                //路径获取失败,需要解锁上面锁定的路径
                //尝试解锁目标站路径
                boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//所使用的路径进行解锁
                if (!result3) {
                    News.info("{}任务,{}小车,路径解锁失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                    return false;//路径解锁失败
                }
                News.info("{}任务,{}小车,路径计算失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                return false;//路径解锁失败
            }
            List<NyShuttleHttpCommand> commands = result.getCommands();
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();