#
野心家
3 天以前 3adff2c549121bc166f49aa8de681265cd87b2d9
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,6 +29,7 @@
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
@@ -36,6 +37,7 @@
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
@@ -304,6 +306,8 @@
                    }
                    Short workNo = staProtocol.getWorkNo();
                    Short stano = staProtocol.getStaNo();
                    //led
                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                    // 尺寸检测异常
                    boolean back = false;
@@ -343,27 +347,34 @@
                            && staProtocol.isPakMk()) {
                        // 获取条码扫描仪信息
                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                        if (barcodeThread == null) {
                            continue;
                        }
                        String BoxNo = barcodeThread.getBarcode();
                        TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                        if (!Cools.isEmpty(taskWrk1)) {
                            log.info("托盘码:" + BoxNo + "任务档存在");
                            if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                        .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                if (Cools.isEmpty(staDesc)) {
                                    return;
                                } else {
                                    continue;
                        String BoxNo = "";
                        if (barcodeThread != null) {
                            BoxNo = barcodeThread.getBarcode();
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                            if (!Cools.isEmpty(taskWrk1)) {
                                log.info("托盘码:" + BoxNo + "任务档存在");
                                if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                            .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                    if (Cools.isEmpty(staDesc)) {
                                        return;
                                    } else {
                                        continue;
                                    }
                                }
                            }
                            if (back) {
                                storageEscalationParam.setWCSStatus(1);
                                storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                                // led 异常显示
                                if (ledThread != null) {
                                    String errorMsg = errMsg;
                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                }
                            }
                        }
                        if (back) {
                            storageEscalationParam.setWCSStatus(1);
                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                        }
                        storageEscalationParam.setBoxNo(BoxNo);
                        //是否满板 1满板  0空板
                        storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
@@ -432,6 +443,11 @@
                                            }
                                        }
                                    } else {
                                        // led 异常显示
                                        if (ledThread != null) {
                                            String errorMsg = "已有入库任务!!!";
                                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                        }
                                        staProtocol.setWorkNo((short) 9991);
                                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                        devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -439,6 +455,13 @@
                                    }
                                } else {
                                    // led 异常显示
                                    if (ledThread != null) {
                                        String errorMsg = jsonObject.getString("ErrorMessage");
                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                    }
                                    staProtocol.setWorkNo((short) 9991);
                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -498,19 +521,28 @@
                        staProtocol = staProtocol.clone();
                    }
                    Short workNo = staProtocol.getWorkNo();
                    //led
                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
                            && staProtocol.isInEnable()
                            && staProtocol.isPakMk()) {
                        // 获取条码扫描仪信息
                        String BoxNo = "";
                        //站点拣料回库任务是会有一条
                        TaskWrk taskWrkk =taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point",staProtocol.getSiteId()));
                        if (!Cools.isEmpty(taskWrkk)) {
                            continue;
                        }
                        if(!staProtocol.isEmptyMk()&&staProtocol.getWorkNo()<9990){
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", workNo));
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo));
                            if (!Cools.isEmpty(taskWrk1)) {
                                BoxNo = taskWrk1.getBarcode();
                            } else {
                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("task_no", workNo).orderBy("modi_time", false));
                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
                                if (taskWrkLog != null) {
                                    BoxNo = taskWrkLog.getBarcode();
                                }
@@ -536,6 +568,7 @@
                            if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                // 创新一个入库工作档
                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                                if (Cools.isEmpty(taskWrk)) {
@@ -579,6 +612,11 @@
                                        }
                                    }
                                } else {
                                    // led 异常显示
                                    if (ledThread != null) {
                                        String errorMsg = "任务已存在!!!!";
                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                    }
                                    staProtocol.setWorkNo((short) 9991);
                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -586,6 +624,11 @@
                                }
                            } else {
                                // led 异常显示
                                if (ledThread != null) {
                                    String errorMsg = jsonObject.getString("ErrorMessage");
                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                }
                                staProtocol.setWorkNo((short) 9991);
                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -932,7 +975,7 @@
                            staProtocol.setStaNo(staDesc.getStnNo().shortValue());
                            boolean offer = false;
                            try {
                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                                offer = MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol));
                            } catch (Exception e) {
                                log.error("下发输送线任务失败:异常:" + e);
                                log.error("下发输送线任务失败:异常:offer:" + offer);
@@ -1118,9 +1161,19 @@
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                    //判断其库位是否为深库位,如果为深库位找其浅库位是都有货
                    if (locMast.getRow1() == 8 || locMast.getRow1() == 5) {
                    if (locMast.getRow1() == 5) {
                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                .eq("row1", (locMast.getRow1() + 1))
                                .eq("bay1", locMast.getBay1())
                                .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                        if (!Cools.isEmpty(locMast1)) {
                            log.info(locMast.getLocNo() + "出深库位,浅库位有货");
                            continue;
                        }
                    }
                    if (locMast.getRow1() == 8) {
                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                .eq("row1", (locMast.getRow1() - 1 ))
                                .eq("bay1", locMast.getBay1())
                                .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                        if (!Cools.isEmpty(locMast1)) {
@@ -1836,4 +1889,43 @@
        return taskWrk;
    }
    //----------------------------------------------------------电视机显示处理----------------------------------------
    /**
     * 其他  ===>> LED显示器复位,显示默认信息
     */
    public synchronized void ledReset(Integer mark) {
//        log.info(""+mark+" - 0"+" - 开始执行:其他  ===>> LED显示器复位,显示默认信息");
        for (LedSlave led : slaveProperties.getLed()) {
            // 获取输送线plc线程
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
            // 命令集合
            boolean reset = true;
            for (Integer staNo : led.getStaArr()) {
                // 获取叉车站点
                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                if (staProtocol == null) {
                    continue;
                }
                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
                    reset = false;
                    break;
                }
            }
            // 获取led线程
            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
            // led显示默认内容
            if (reset && !ledThread.isLedMk()) {
                ledThread.setLedMk(true);
                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
                    log.error(""+mark+" - 1"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                } else {
                }
            }
        }
//        log.info(""+mark+" - 0"+" - 执行完成:其他  ===>> LED显示器复位,显示默认信息");
    }
}