fyxc
2025-05-22 09fcc4ec56a1ce6c0fcb308348d8dd5e2c08d336
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -163,6 +163,13 @@
     */
    public synchronized void generateInboundWrk() {
        try {
//            //检测是否存在调拨任务,不执行入库
//            boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
//            if (checkTransferWrkMast) {
//                News.error("存在调拨任务,不执行入库");
//                return;
//            }
            // 遍历入库口
            for (DevpSlave.Sta inSta : slaveProperties.getDevp().get(0).getInSta()) {
                if (inSta.getStaNo() == 1014 || inSta.getStaNo() == 1025) {
@@ -223,7 +230,12 @@
                                .in("sta_no", 1024, 1013)
                                .eq("io_type", 101));
                        if (!wrkMastOutList.isEmpty()) {
                            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                            Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId());
                            if (o == null) {
                                redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15);
                                MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                                setLedErrorData(staProtocol.getSiteId(), "任务冲突");
                            }
                            News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId());
                            continue;
                        }
@@ -363,7 +375,12 @@
                                .in("sta_no", 1011, 1021)
                                .eq("io_type", 101));
                        if (!wrkMastOutList.isEmpty()) {
                            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                            Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId());
                            if (o == null) {
                                redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + staProtocol.getSiteId(), "lock", 15);
                                MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                                setLedErrorData(staProtocol.getSiteId(), "任务冲突");
                            }
                            News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId());
                            continue;
                        }
@@ -492,6 +509,13 @@
    public void outFirst() {
//        //检测是否存在调拨任务,存在不执行出库
//        boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
//        if (checkTransferWrkMast) {
//            News.error("存在调拨任务,不执行出库");
//            return;
//        }
        DevpSlave devpSlave = slaveProperties.getDevp().get(0);
        // 遍历堆垛机出库站
        Date now = new Date();
@@ -515,7 +539,12 @@
                    .eq("source_sta_no", checkInSourceStaNo)
                    .eq("io_type", 1));
            if (!wrkMastInList.isEmpty()) {
                MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo());
                if (o == null) {
                    redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15);
                    MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                    setLedErrorData(wrkMast.getStaNo(), "任务冲突");
                }
                News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo());
                continue;
            }
@@ -661,6 +690,33 @@
                log.info("电视机数据设置:{},{}", staNo, data);
            } else {
                log.info("电视机数据设置异常:{},{}", wrkNo, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void setLedErrorData(Integer staNo, String msg) {
        try {
            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put("msg", msg);
            hashMap.put("sta", String.valueOf(staNo));
            String response = null;
            response = new HttpHandler.Builder()
                    .setUri(wmsUrl)
                    .setPath("/rpc/led/getError")
                    .setJson(JSON.toJSONString(hashMap))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            Integer code = jsonObject.getInteger("code");
            if (code.equals(200)) {
                String data = jsonObject.getString("data");
                List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class);
                redisUtil.set("LED_" + staNo, wrkDetls, 30);
                log.info("电视机数据设置:{},{}", staNo, data);
            } else {
                log.info("电视机数据设置异常:{},{}", staNo, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -1037,7 +1093,7 @@
                led = 3;
            } else if (wrkMast.getSourceStaNo() == 1031) {
                //工作号一致判断
                if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWmsWrkNo2())) {
                if (!String.valueOf(staProtocol.getFinishWorkNo()).equals(wrkMast.getWmsWrkNo2())) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}工作号1,{}工作号2,1135过来的托盘,为将工作号写到至1031", staProtocol.getFinishWorkNo(), wrkMast.getWmsWrkNo2());
                    return false;
                }
@@ -1220,6 +1276,14 @@
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId());
                    return false;
                }
                //调拨任务执行时,不允许有其他入出库任务工作
                boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking();
                if (checkNoTransferWorking) {
                    News.error("调拨任务执行时,不允许有其他入出库任务工作");
                    return false;
                }
            }
            //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机)
@@ -1353,7 +1417,12 @@
                            .eq("source_sta_no", checkInSourceStaNo)
                            .eq("io_type", 1));
                    if (!wrkMastInList.isEmpty()) {
                        MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                        Object o = redisUtil.get(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo());
                        if (o == null) {
                            redisUtil.set(RedisKeyType.DEVP_ERROR_FLAG.key + wrkMast.getStaNo(), "lock", 15);
                            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                            setLedErrorData(wrkMast.getStaNo(), "任务冲突");
                        }
                        News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo());
                        continue;
                    }
@@ -1394,11 +1463,25 @@
            }
            if (wrkMast.getStaNo() == 1031) {
                //调拨任务执行时,不允许有其他入出库任务工作
                boolean checkNoTransferWorking = wrkMastService.checkNoTransferWorking();
                if (checkNoTransferWorking) {
                    News.error("调拨任务执行时,不允许有其他入出库任务工作-出库");
                    return false;
                }
            } else {
                if (!isOutEnable(devpThread, wrkMast.getStaNo())) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), staProtocol.getSiteId());
                    return false;
                }
//                //检测是否存在调拨任务,存在不执行出库
//                boolean checkTransferWrkMast = wrkMastService.checkTransferWrkMast();
//                if (checkTransferWrkMast) {
//                    News.error("存在调拨任务,不执行出库");
//                    return false;
//                }
            }
            String locNo = "0200305";