#
zzgtfwq
5 小时以前 d635a99e20e207b40b16b8536c02a0b74df63c61
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -88,6 +88,8 @@
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.urlWMS}")
    private String urlWMS;
    @Value("${inventory.number}")
    private Integer inventoryNumber;
@@ -220,7 +222,7 @@
                        && staProtocol.isLoading()
                        && staProtocol.isInEnable()
                        && !staProtocol.isEmptyMk()
                        && staProtocol.getWorkNo() == 0
                        && staProtocol.getWorkNo() == 9999
                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
//                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -268,7 +270,7 @@
                        applyParam.setStatus(1); // 1:满板
                        
                        String response = new HttpHandler.Builder()
                                .setUri(wmsUrl)
                                .setUri(urlWMS)
                                .setPath("/inboundTaskApply")
                                .setJson(JSON.toJSONString(applyParam))
                                .build()
@@ -278,27 +280,8 @@
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (jsonObject != null && jsonObject.getInteger("code") != null && jsonObject.getInteger("code") == 200) {
                            log.info("入库任务申请成功,等待WMS下发任务。条码:{},站点:{}", barcode, inSta.getStaNo());
                            staProtocol.setStaNo((short)0);
                            staProtocol.setWorkNo(0);//设置为9998等待上位机下发任务/9997是空板入库判断,待下发时也写入9998
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            if (!result) {
                                LedErrorThreadUtil.ledErrorThread("更新plc站点信息失败!站点号:"+inSta.getStaNo(),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
                                throw new CoolException("更新plc站点信息失败");
                            }
                            Thread.sleep(300);
                            StaProtocol staProtocol2 = devpThread.getStation().get(inSta.getStaNo());
                            if (staProtocol2 == null) {
                                continue;
                            } else {
                                staProtocol2 = staProtocol2.clone();
                            }
                            staProtocol2.setStaNo(inSta.getStaNo().shortValue());
                            staProtocol2.setWorkNo(9998);//设置为9998等待上位机下发任务/9997是空板入库判断,待下发时也写入9998
                            boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol2));
                            if (!result2) {
                                LedErrorThreadUtil.ledErrorThread("更新plc站点信息失败!站点号:"+inSta.getStaNo(),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
                                throw new CoolException("更新plc站点信息失败");
                            }
                            devpThread.setPakMk(staProtocol.getSiteId(), false,9998);
                        } else {
                            //                            // 获取工作号
@@ -431,19 +414,18 @@
            // 遍历拣料入库口
            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
//                // 获取条码扫描仪信息
//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
//                if (barcodeThread == null) {
//                    continue;
//                }
//                String barcode = barcodeThread.getBarcode();
//                if(!Cools.isEmpty(barcode)) {
//                    log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
//                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
//                        continue;
//                    }
//                } else {
//                    continue;
//                }
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
                if (barcodeThread == null) {
                    continue;
                }
                String barcode = barcodeThread.getBarcode();
                if(!Cools.isEmpty(barcode)) {
                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                        continue;
                    }
                } else {
                    continue;
                }
                // 获取拣料入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -457,9 +439,9 @@
//                // 入出库模式判断
//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9998) {
//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep6(barcode);
                    if (wrkMast == null) {
                        // 无拣料数据
                        continue;
@@ -472,59 +454,38 @@
                    //   获取库位号
                    try {
                        SearchLocParam param = new SearchLocParam();
                        Integer staNo = wrkMast.getSourceStaNo();
                        param.setBarcode(wrkMast.getBarcode());
                        param.setIoType(wrkMast.getIoType());
                        param.setSourceStaNo(pickSta.getStaNo()); //作业站点
                        param.setLocType1((short)1);
                        String response = "";
                        log.info("入库作业站"+pickSta.getStaNo()+"盘点再入库任务请求WMS===>>参数:" + param);
                        try {
                            response = new HttpHandler.Builder()
                                    .setUri(wmsUrl)
                                    .setPath("/rpc/pakin2/loc/v1")
                                    .setJson(JSON.toJSONString(param))
                                    .setTimeout(15, TimeUnit.SECONDS)
                                    .build()
                                    .doPost();
                        } catch(Exception e){
                            log.error("入库作业站"+pickSta.getStaNo()+"盘点再入库任务请求WMS===>>参数:" + param);
                            log.error("stnToCrnStnPick2===>>盘点查库位入库接口失败", e);
                            e.printStackTrace();
                            continue;
                        wrkMast.setIoType(wrkMast.getIoType() - 50);
                        wrkMast.setWrkSts(2L);
                        wrkMast.setSourceStaNo(wrkMast.getStaNo()-1);
                        wrkMast.setStaNo(staNo - 2);
                        wrkMast.setLocNo(wrkMast.getSourceLocNo());
                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",wrkMast.getLocNo()));
                        if(locMast.getLocSts().equals("P")){
                            locMast.setLocSts("Q");
                            locMastService.updateById(locMast);
                        }
                        log.info("入库作业站"+pickSta.getStaNo()+"盘点再入库任务请求WMS===>>参数:" + param);
                        log.info("入库作业站"+pickSta.getStaNo()+"下发盘点再入库任务请求WMS返回结果===>>" + response);
                        if(response.equals("")) {
                            continue;
                        }
                        JSONObject jsonObject = JSON.parseObject(response);
//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
                        Integer code = jsonObject.getInteger("code");
                        if (code == 200) {
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
                                log.error("任务号"+wrkMast.getWrkNo()+"盘点再入库查询库位失败===>>" + jsonObject.toJSONString());
                            } else {
                                log.info("任务号"+wrkMast.getWrkNo()+"盘点再入库查询库位成功===>>" + jsonObject.toJSONString());
                                try {
                                    // 更新站点信息 且 下发plc命令
                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
                                    staProtocol.setStaNo(dto.getStaNo().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false,1096);
                        if (wrkMastService.updateById(wrkMast)) {
                            try {
                                // 更新站点信息 且 下发plc命令
                                staProtocol.setWorkNo(wrkMast.getWrkNo());
                                staProtocol.setStaNo((short)(wrkMast.getSourceStaNo() - 1));
                                devpThread.setPakMk(staProtocol.getSiteId(), false,9998);
//                                    ledThread.errorReset();
                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                    if (!result) {
                                        log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId());
                                    }
                                    log.info("任务号"+wrkMast.getWrkNo()+"盘点/拣料再入库任务下发成功===>>" + staProtocol);
                                } catch (Exception e) {
                                    log.error("盘点再入库失败===>>" + e);
                                    e.printStackTrace();
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                if (!result) {
                                    log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId());
                                }
                                log.info("任务号"+wrkMast.getWrkNo()+"盘点/拣料再入库任务下发成功===>>" + staProtocol);
                            } catch (Exception e) {
                                log.error("盘点再入库失败===>>" + e);
                                e.printStackTrace();
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            }
                        } else {
                            log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
                        }
                    } catch (Exception e) {
                        log.error("stnToCrnStnPick2===>>fail", e);