|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol.isAutoing() | 
|---|
|  |  |  | && staProtocol.isLoading() | 
|---|
|  |  |  | //                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999) | 
|---|
|  |  |  | //                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) | 
|---|
|  |  |  | && staProtocol.isInEnable() | 
|---|
|  |  |  | && (staProtocol.getWorkNo() > 0) | 
|---|
|  |  |  | && staProtocol.isPakMk()){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取条码扫描仪信息 | 
|---|
|  |  |  | BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); | 
|---|
|  |  |  | if (barcodeThread == null) { | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue()); | 
|---|
|  |  |  | if (wrkMast == null) {//找不到工作档 | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String barcode = barcodeThread.getBarcode(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WrkMast wrkMast = null; | 
|---|
|  |  |  | wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); | 
|---|
|  |  |  | if (wrkMast == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                    if (staProtocol.getWorkNo() == 9996) { | 
|---|
|  |  |  | //                        String barcode = barcodeThread.getBarcode(); | 
|---|
|  |  |  | //                        if(!Cools.isEmpty(barcode)) { | 
|---|
|  |  |  | //                            News.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode); | 
|---|
|  |  |  | //                            if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { | 
|---|
|  |  |  | //                                staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | //                                staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | //                                devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | //                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                                // led 异常显示 | 
|---|
|  |  |  | //                                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | //                                if (ledThread != null) { | 
|---|
|  |  |  | //                                    String errorMsg = "扫码失败,请重试"; | 
|---|
|  |  |  | //                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | //                                } | 
|---|
|  |  |  | //                                continue; | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                        } else { | 
|---|
|  |  |  | //                            staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | //                            staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | //                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | //                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            // led 异常显示 | 
|---|
|  |  |  | //                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | //                            if (ledThread != null) { | 
|---|
|  |  |  | //                                String errorMsg = "扫码失败,请重试"; | 
|---|
|  |  |  | //                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                            continue; | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | //                        wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); | 
|---|
|  |  |  | //                        if (null == wrkMast) { | 
|---|
|  |  |  | //                            News.error("{}条码错误,暂无拣料任务!", barcode); | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) | 
|---|
|  |  |  | || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) { | 
|---|
|  |  |  | || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //*********************同库位组校验********************* | 
|---|
|  |  |  | boolean flag = false; | 
|---|
|  |  |  | String th = ""; | 
|---|
|  |  |  | List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getLocNo()); | 
|---|
|  |  |  | for (String loc : innerLoc) { | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(loc); | 
|---|
|  |  |  | if (locMast == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!locMast.getLocSts().equals("F")) { | 
|---|
|  |  |  | flag = true; | 
|---|
|  |  |  | th = loc + "库位存在非空浅库位"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (flag) { | 
|---|
|  |  |  | throw new CoolException(th); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //*********************同库位组校验********************* | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 保存工作主档历史档 | 
|---|
|  |  |  | if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | throw new CoolException("修改库位状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | barcodeThread.setBarcode("");//清理条码 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                    try { | 
|---|
|  |  |  | //                        // 访问 WMS 获取入库库位 | 
|---|
|  |  |  | //                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol); | 
|---|
|  |  |  | //                        SearchLocParam param = new SearchLocParam(); | 
|---|
|  |  |  | //                        param.setWrkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | //                        param.setIoType(wrkMast.getIoType()); | 
|---|
|  |  |  | //                        param.setSourceStaNo(pickSta.getStaNo()); | 
|---|
|  |  |  | ////                        param.setLocType1(locTypeDto.getLocType1()); | 
|---|
|  |  |  | //                        String response = new HttpHandler.Builder() | 
|---|
|  |  |  | //                                .setUri(wmsUrl) | 
|---|
|  |  |  | //                                .setPath("/rpc/pakin/loc/v1") | 
|---|
|  |  |  | //                                .setJson(JSON.toJSONString(param)) | 
|---|
|  |  |  | //                                .build() | 
|---|
|  |  |  | //                                .doPost(); | 
|---|
|  |  |  | //                        JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  | //                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | //                        Integer code = jsonObject.getInteger("code"); | 
|---|
|  |  |  | //                        if (code.equals(200)) { | 
|---|
|  |  |  | //                            StartupDto dto = jsonObject.getObject("data", StartupDto.class); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | ////                            // 获取目标站 | 
|---|
|  |  |  | ////                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() | 
|---|
|  |  |  | ////                                    .eq("type_no", wrkMast.getIoType() - 50) | 
|---|
|  |  |  | ////                                    .eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站 | 
|---|
|  |  |  | ////                                    .eq("crn_no", dto.getCrnNo()); // 堆垛机号 | 
|---|
|  |  |  | ////                            StaDesc staDesc = staDescService.selectOne(wrapper); | 
|---|
|  |  |  | ////                            if (Cools.isEmpty(staDesc)) { | 
|---|
|  |  |  | ////                                News.error("入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); | 
|---|
|  |  |  | ////                                continue; | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                            // 堆垛机站点(目标站) | 
|---|
|  |  |  | ////                            Integer staNo = staDesc.getCrnStn(); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            // 保存工作明细档历史档 | 
|---|
|  |  |  | ////                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | ////                            throw new CoolException("保存工作明细档历史档失败"); | 
|---|
|  |  |  | ////                        } | 
|---|
|  |  |  | //                            // 保存工作主档历史档 | 
|---|
|  |  |  | //                            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | //                                throw new CoolException(wrkMast.getWrkNo() + "保存工作主档历史档失败"); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            String sourceLocNo = wrkMast.getSourceLocNo().trim(); | 
|---|
|  |  |  | //                            LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//获取回库提升机目标站 | 
|---|
|  |  |  | //                            if (liftStaProtocol == null) { | 
|---|
|  |  |  | //                                continue; | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            // 更新工作档数据状态 | 
|---|
|  |  |  | //                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 | 
|---|
|  |  |  | //                            wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走 | 
|---|
|  |  |  | //                            wrkMast.setSourceStaNo(pickSta.getStaNo()); // 源站 | 
|---|
|  |  |  | ////                            wrkMast.setStaNo(dto.getStaNo()); // 目标站 | 
|---|
|  |  |  | ////                            wrkMast.setCrnNo(dto.getCrnNo()); | 
|---|
|  |  |  | //                            wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站 | 
|---|
|  |  |  | //                            wrkMast.setLocNo(sourceLocNo); // 目标库位 = 出库时的源库位 | 
|---|
|  |  |  | //                            wrkMast.setShuttleNo(null); // 穿梭车清空 | 
|---|
|  |  |  | //                            wrkMast.setLiftNo(null);// 提升机清空 | 
|---|
|  |  |  | //                            wrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | //                            if (wrkMastMapper.updateById(wrkMast) == 0) { | 
|---|
|  |  |  | //                                throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                            if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | //                                throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            // 修改库位状态 Q.拣料/盘点/并板再入库 | 
|---|
|  |  |  | //                            LocMast locMast = locMastService.selectById(sourceLocNo); | 
|---|
|  |  |  | //                            locMast.setLocSts("Q"); | 
|---|
|  |  |  | //                            locMast.setModiTime(new Date()); | 
|---|
|  |  |  | //                            if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | //                                throw new CoolException("修改库位状态失败"); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | ////                            // 更新站点信息 且 下发plc命令 | 
|---|
|  |  |  | ////                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); | 
|---|
|  |  |  | ////                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); | 
|---|
|  |  |  | ////                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | ////                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | ////                            if (!result) { | 
|---|
|  |  |  | ////                                News.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            barcodeThread.setBarcode("");//清理条码 | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        } else if (code == 500){ | 
|---|
|  |  |  | //                            if (ledThread != null) { | 
|---|
|  |  |  | //                                String errorMsg = jsonObject.getString("msg"); | 
|---|
|  |  |  | //                                if (!Cools.isEmpty(errorMsg)) { | 
|---|
|  |  |  | //                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | //                                } | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                            News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); | 
|---|
|  |  |  | //                        } else { | 
|---|
|  |  |  | ////                            staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | ////                            staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | ////                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | ////                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            // led 异常显示 | 
|---|
|  |  |  | //                            if (ledThread != null) { | 
|---|
|  |  |  | //                                String errorMsg = jsonObject.getString("msg"); | 
|---|
|  |  |  | ////                                String errorMsg = barcode + "托盘识别异常,请先进行组托!"; | 
|---|
|  |  |  | //                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    } catch (Exception e) { | 
|---|
|  |  |  | //                        e.printStackTrace(); | 
|---|
|  |  |  | //                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | staProtocol.setStaNo(pickSta.getBackSta().shortValue());//写入目标站 | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    /** | 
|---|
|  |  |  | //     * 拣料、并板、盘点再入库 | 
|---|
|  |  |  | //     */ | 
|---|
|  |  |  | //    @Transactional | 
|---|
|  |  |  | //    public synchronized void stnToCrnStnPick(){ | 
|---|
|  |  |  | //        for (DevpSlave devp : slaveProperties.getDevp()) { | 
|---|
|  |  |  | //            // 遍历拣料入库口 | 
|---|
|  |  |  | //            for (DevpSlave.Sta pickSta : devp.getPickInSta()) { | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                // 获取拣料入库站信息 | 
|---|
|  |  |  | //                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); | 
|---|
|  |  |  | //                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); | 
|---|
|  |  |  | //                if (staProtocol == null) { | 
|---|
|  |  |  | //                    continue; | 
|---|
|  |  |  | //                } else { | 
|---|
|  |  |  | //                    staProtocol = staProtocol.clone(); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //                if (staProtocol.isAutoing() | 
|---|
|  |  |  | //                        && staProtocol.isLoading() | 
|---|
|  |  |  | ////                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999) | 
|---|
|  |  |  | ////                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) | 
|---|
|  |  |  | //                        && staProtocol.isPakMk()){ | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    // 获取条码扫描仪信息 | 
|---|
|  |  |  | //                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); | 
|---|
|  |  |  | //                    if (barcodeThread == null) { | 
|---|
|  |  |  | //                        continue; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                    String barcode = barcodeThread.getBarcode(); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    WrkMast wrkMast = null; | 
|---|
|  |  |  | //                    wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); | 
|---|
|  |  |  | //                    if (wrkMast == null) { | 
|---|
|  |  |  | //                        continue; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | ////                    if (staProtocol.getWorkNo() == 9996) { | 
|---|
|  |  |  | ////                        String barcode = barcodeThread.getBarcode(); | 
|---|
|  |  |  | ////                        if(!Cools.isEmpty(barcode)) { | 
|---|
|  |  |  | ////                            News.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode); | 
|---|
|  |  |  | ////                            if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { | 
|---|
|  |  |  | ////                                staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | ////                                staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | ////                                devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | ////                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                                // led 异常显示 | 
|---|
|  |  |  | ////                                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | ////                                if (ledThread != null) { | 
|---|
|  |  |  | ////                                    String errorMsg = "扫码失败,请重试"; | 
|---|
|  |  |  | ////                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | ////                                } | 
|---|
|  |  |  | ////                                continue; | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                        } else { | 
|---|
|  |  |  | ////                            staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | ////                            staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | ////                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | ////                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            // led 异常显示 | 
|---|
|  |  |  | ////                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | ////                            if (ledThread != null) { | 
|---|
|  |  |  | ////                                String errorMsg = "扫码失败,请重试"; | 
|---|
|  |  |  | ////                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                            continue; | 
|---|
|  |  |  | ////                        } | 
|---|
|  |  |  | ////                        wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); | 
|---|
|  |  |  | ////                        if (null == wrkMast) { | 
|---|
|  |  |  | ////                            News.error("{}条码错误,暂无拣料任务!", barcode); | 
|---|
|  |  |  | ////                        } | 
|---|
|  |  |  | ////                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) | 
|---|
|  |  |  | //                        || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) { | 
|---|
|  |  |  | //                        continue; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    // 保存工作主档历史档 | 
|---|
|  |  |  | //                    if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | //                        throw new CoolException(wrkMast.getWrkNo() + "保存工作主档历史档失败"); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    String sourceLocNo = wrkMast.getSourceLocNo().trim(); | 
|---|
|  |  |  | //                    LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//获取回库提升机目标站 | 
|---|
|  |  |  | //                    if (liftStaProtocol == null) { | 
|---|
|  |  |  | //                        continue; | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    // 更新工作档数据状态 | 
|---|
|  |  |  | //                    wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 | 
|---|
|  |  |  | //                    wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走 | 
|---|
|  |  |  | //                    wrkMast.setSourceStaNo(pickSta.getStaNo()); // 源站 | 
|---|
|  |  |  | ////                            wrkMast.setStaNo(dto.getStaNo()); // 目标站 | 
|---|
|  |  |  | ////                            wrkMast.setCrnNo(dto.getCrnNo()); | 
|---|
|  |  |  | //                    wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站 | 
|---|
|  |  |  | //                    wrkMast.setLocNo(sourceLocNo); // 目标库位 = 出库时的源库位 | 
|---|
|  |  |  | //                    wrkMast.setShuttleNo(null); // 穿梭车清空 | 
|---|
|  |  |  | //                    wrkMast.setLiftNo(null);// 提升机清空 | 
|---|
|  |  |  | //                    wrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | //                    if (wrkMastMapper.updateById(wrkMast) == 0) { | 
|---|
|  |  |  | //                        throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                    if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | //                        throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    // 修改库位状态 Q.拣料/盘点/并板再入库 | 
|---|
|  |  |  | //                    LocMast locMast = locMastService.selectById(sourceLocNo); | 
|---|
|  |  |  | //                    locMast.setLocSts("Q"); | 
|---|
|  |  |  | //                    locMast.setModiTime(new Date()); | 
|---|
|  |  |  | //                    if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | //                        throw new CoolException("修改库位状态失败"); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                    barcodeThread.setBarcode("");//清理条码 | 
|---|
|  |  |  | // | 
|---|
|  |  |  | ////                    try { | 
|---|
|  |  |  | ////                        // 访问 WMS 获取入库库位 | 
|---|
|  |  |  | ////                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol); | 
|---|
|  |  |  | ////                        SearchLocParam param = new SearchLocParam(); | 
|---|
|  |  |  | ////                        param.setWrkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | ////                        param.setIoType(wrkMast.getIoType()); | 
|---|
|  |  |  | ////                        param.setSourceStaNo(pickSta.getStaNo()); | 
|---|
|  |  |  | //////                        param.setLocType1(locTypeDto.getLocType1()); | 
|---|
|  |  |  | ////                        String response = new HttpHandler.Builder() | 
|---|
|  |  |  | ////                                .setUri(wmsUrl) | 
|---|
|  |  |  | ////                                .setPath("/rpc/pakin/loc/v1") | 
|---|
|  |  |  | ////                                .setJson(JSON.toJSONString(param)) | 
|---|
|  |  |  | ////                                .build() | 
|---|
|  |  |  | ////                                .doPost(); | 
|---|
|  |  |  | ////                        JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  | ////                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
|---|
|  |  |  | ////                        Integer code = jsonObject.getInteger("code"); | 
|---|
|  |  |  | ////                        if (code.equals(200)) { | 
|---|
|  |  |  | ////                            StartupDto dto = jsonObject.getObject("data", StartupDto.class); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | //////                            // 获取目标站 | 
|---|
|  |  |  | //////                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() | 
|---|
|  |  |  | //////                                    .eq("type_no", wrkMast.getIoType() - 50) | 
|---|
|  |  |  | //////                                    .eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站 | 
|---|
|  |  |  | //////                                    .eq("crn_no", dto.getCrnNo()); // 堆垛机号 | 
|---|
|  |  |  | //////                            StaDesc staDesc = staDescService.selectOne(wrapper); | 
|---|
|  |  |  | //////                            if (Cools.isEmpty(staDesc)) { | 
|---|
|  |  |  | //////                                News.error("入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); | 
|---|
|  |  |  | //////                                continue; | 
|---|
|  |  |  | //////                            } | 
|---|
|  |  |  | //////                            // 堆垛机站点(目标站) | 
|---|
|  |  |  | //////                            Integer staNo = staDesc.getCrnStn(); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            // 保存工作明细档历史档 | 
|---|
|  |  |  | //////                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | //////                            throw new CoolException("保存工作明细档历史档失败"); | 
|---|
|  |  |  | //////                        } | 
|---|
|  |  |  | ////                            // 保存工作主档历史档 | 
|---|
|  |  |  | ////                            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | ////                                throw new CoolException(wrkMast.getWrkNo() + "保存工作主档历史档失败"); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            String sourceLocNo = wrkMast.getSourceLocNo().trim(); | 
|---|
|  |  |  | ////                            LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//获取回库提升机目标站 | 
|---|
|  |  |  | ////                            if (liftStaProtocol == null) { | 
|---|
|  |  |  | ////                                continue; | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            // 更新工作档数据状态 | 
|---|
|  |  |  | ////                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 | 
|---|
|  |  |  | ////                            wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走 | 
|---|
|  |  |  | ////                            wrkMast.setSourceStaNo(pickSta.getStaNo()); // 源站 | 
|---|
|  |  |  | //////                            wrkMast.setStaNo(dto.getStaNo()); // 目标站 | 
|---|
|  |  |  | //////                            wrkMast.setCrnNo(dto.getCrnNo()); | 
|---|
|  |  |  | ////                            wrkMast.setStaNo(liftStaProtocol.getStaNo());//目标站 | 
|---|
|  |  |  | ////                            wrkMast.setLocNo(sourceLocNo); // 目标库位 = 出库时的源库位 | 
|---|
|  |  |  | ////                            wrkMast.setShuttleNo(null); // 穿梭车清空 | 
|---|
|  |  |  | ////                            wrkMast.setLiftNo(null);// 提升机清空 | 
|---|
|  |  |  | ////                            wrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | ////                            if (wrkMastMapper.updateById(wrkMast) == 0) { | 
|---|
|  |  |  | ////                                throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                            if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { | 
|---|
|  |  |  | ////                                throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败"); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            // 修改库位状态 Q.拣料/盘点/并板再入库 | 
|---|
|  |  |  | ////                            LocMast locMast = locMastService.selectById(sourceLocNo); | 
|---|
|  |  |  | ////                            locMast.setLocSts("Q"); | 
|---|
|  |  |  | ////                            locMast.setModiTime(new Date()); | 
|---|
|  |  |  | ////                            if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | ////                                throw new CoolException("修改库位状态失败"); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | //////                            // 更新站点信息 且 下发plc命令 | 
|---|
|  |  |  | //////                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); | 
|---|
|  |  |  | //////                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); | 
|---|
|  |  |  | //////                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | //////                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | //////                            if (!result) { | 
|---|
|  |  |  | //////                                News.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); | 
|---|
|  |  |  | //////                            } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            barcodeThread.setBarcode("");//清理条码 | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                        } else if (code == 500){ | 
|---|
|  |  |  | ////                            if (ledThread != null) { | 
|---|
|  |  |  | ////                                String errorMsg = jsonObject.getString("msg"); | 
|---|
|  |  |  | ////                                if (!Cools.isEmpty(errorMsg)) { | 
|---|
|  |  |  | ////                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | ////                                } | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                            News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); | 
|---|
|  |  |  | ////                        } else { | 
|---|
|  |  |  | //////                            staProtocol.setWorkNo((short) 32002); | 
|---|
|  |  |  | //////                            staProtocol.setStaNo(pickSta.getBackSta().shortValue()); | 
|---|
|  |  |  | //////                            devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | //////                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                            // led 异常显示 | 
|---|
|  |  |  | ////                            if (ledThread != null) { | 
|---|
|  |  |  | ////                                String errorMsg = jsonObject.getString("msg"); | 
|---|
|  |  |  | //////                                String errorMsg = barcode + "托盘识别异常,请先进行组托!"; | 
|---|
|  |  |  | ////                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); | 
|---|
|  |  |  | ////                            } | 
|---|
|  |  |  | ////                        } | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////                    } catch (Exception e) { | 
|---|
|  |  |  | ////                        e.printStackTrace(); | 
|---|
|  |  |  | ////                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | ////                    } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 初始化实时地图 | 
|---|
|  |  |  | */ | 
|---|