zc
2025-04-25 d34366b9d348f47a8083aa3dd2e3e0efa2377dcf
初步调试
4个文件已修改
157 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/TVController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TVController.java
@@ -231,30 +231,37 @@
     */
    @GetMapping("/led")
    public R monitorLed(@RequestParam("ledId") Integer ledId) {
        int dev_no = 1012;
        int dev_no1 = 1011;
        int dev_no2 = 1012;
        int dev_no3 = 1015;
        if (ledId == 1) {
            dev_no = 1012;
            dev_no1 = 1011;
            dev_no2 = 1012;
        } else if (ledId == 2) {
            dev_no = 1014;
            dev_no1 = 1013;
            dev_no2 = 1015;
            dev_no3 = 1015;
        } else if (ledId == 3) {
            dev_no = 1021;
            dev_no1 = 1021;
            dev_no2 = 1022;
            dev_no3 = 1023;
        } else if (ledId == 4) {
            dev_no = 1024;
            dev_no1 = 1024;
            dev_no2 = 1025;
            dev_no3 = 1026;
        }
        BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", dev_no));
        if (Cools.isEmpty(basDevp)) {
            return R.ok();
        }
        if (Cools.isEmpty(basDevp.getWrkNo1())) {
            return R.ok();
        }
        if (basDevp.getWrkNo() == null || basDevp.getWrkNo() == 0) {
            return R.ok();
        }
        Object o = redisUtil.get("LED_" + dev_no);
        if (o != null) {
            log.info("电视机显示:{}",JSONObject.toJSONString(o));
            return R.ok().add(o);
        Object o1 = redisUtil.get("LED_" + dev_no1);
        Object o2 = redisUtil.get("LED_" + dev_no2);
        Object o3 = redisUtil.get("LED_" + dev_no3);
        if (o1 != null) {
            log.info("电视机显示1:{}", JSONObject.toJSONString(o1));
            return R.ok().add(o1);
        } else if (o2 != null) {
            log.info("电视机显示2:{}", JSONObject.toJSONString(o2));
            return R.ok().add(o2);
        } else if (o3 != null) {
            log.info("电视机显示3:{}", JSONObject.toJSONString(o3));
            return R.ok().add(o3);
        }
        return R.ok();
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -22,10 +22,7 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.*;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LiftSlave;
import com.zy.core.model.ShuttleSlave;
import com.zy.core.model.Task;
import com.zy.core.model.*;
import com.zy.core.model.command.*;
import com.zy.core.model.protocol.ForkLiftStaProtocol;
import com.zy.core.model.protocol.LiftProtocol;
@@ -37,7 +34,9 @@
import com.zy.core.thread.LiftThread;
import com.zy.core.thread.ShuttleThread;
import com.zy.core.thread.impl.FyDevpThread;
import com.zy.core.thread.impl.NormalLedThread;
import com.zy.system.service.ConfigService;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -200,15 +199,8 @@
                    }
                    // 退回
                    if (back) {
                        if (!staProtocol.isLoading()) {
                            continue;
                        }
                        if (!staProtocol.isPakMk()) {
                            continue;
                        }
                        // led 异常显示
                        if (ledThread != null) {
                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                            ledThread.error(errMsg);
                        }
                    }
@@ -231,8 +223,6 @@
                            wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts);
                            wrkMast.setModiTime(new Date());
                            wrkMastService.updateById(wrkMast);
                            setLedData(wrkMast.getWrkNo(), wrkMast.getStaNo());
                        } else if (wrkMast != null && wrkMast.getWrkSts() != WrkStsType.NEW_INBOUND.sts) {
                            continue;
                        }
@@ -308,6 +298,34 @@
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                    String errMsg = "";
                    boolean back = false;
                    if (!back && staProtocol.isBackErr()) {
                        errMsg = "超宽异常";
                        back = true;
                    }
                    if (!back && staProtocol.isHighErr()) {
                        errMsg = "超高异常";
                        back = true;
                    }
                    if (!back && staProtocol.isRightErr()) {
                        errMsg = "超长异常";
                        back = true;
                    }
                    if (!back && staProtocol.isWeightErr()) {
                        errMsg = "超重";
                        back = true;
                    }
                    // 退回
                    if (back) {
                        // led 异常显示
                        if (ledThread != null) {
                            ledThread.error(errMsg);
                        }
                    }
                    Short workNo = staProtocol.getWorkNo();
                    if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) {
                        String barcode = staProtocol.getBarcode();
@@ -329,7 +347,6 @@
                                JSONObject jsonObject = JSON.parseObject(response);
                                Integer code = jsonObject.getInteger("code");
                                if (code.equals(200)) {
                                    setLedData(wrkMast.getWrkNo(), wrkMast.getStaNo());
                                } else {
                                    String msg = jsonObject.getString("msg");
@@ -401,6 +418,8 @@
                wrkMast.setModiTime(new Date());
                if (!wrkMastService.updateById(wrkMast)) {
                    News.info("{}任务,更新工作档失败", wrkMast.getWrkNo());
                } else {
                    setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
                }
            }
        }
@@ -516,7 +535,7 @@
                        wrkMast.setModiTime(new Date());
                        wrkMast.setShuttleNo(null);
                        wrkMastService.updateById(wrkMast);
                        setLedData(wrkMast.getWrkNo(), wrkMast.getStaNo());
                        setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
                    }
                }
            }
@@ -526,7 +545,6 @@
    private void setLedData(Integer wrkNo, Integer staNo) {
        try {
            List<LedCommand> commands = new ArrayList<>();
            Map<String, Object> param = new HashMap<>();
            param.put("taskNo", wrkNo);
            String response = null;
@@ -541,9 +559,10 @@
            if (code.equals(200)) {
                String data = jsonObject.getString("data");
                List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class);
                commands.addAll(wrkDetls);
                redisUtil.set("LED_" + staNo, commands, 10);
                log.info("电视机数据设置:{}", data);
                redisUtil.set("LED_" + staNo, wrkDetls, 30);
                log.info("电视机数据设置:{},{}", staNo, data);
            } else {
                log.info("电视机数据设置异常:{},{}", wrkNo, response);
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -949,19 +968,21 @@
                }
            }
            String barcode = staProtocol.getBarcode();
            if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                return false;
            }
            if (!staProtocol.isAutoing()) {
                News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId());
                return false;
            }
            if (!staProtocol.isLoading()) {
                News.info("{}任务,{}站点,无托盘", wrkMast.getWrkNo(), staProtocol.getSiteId());
                return false;
            }
            if (wrkMast.getSourceStaNo() != 1031) {
                if (!staProtocol.isAutoing()) {
                    News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId());
                    return false;
                }
                if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                    return false;
                }
                if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) {
                    News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode());
                    return false;
@@ -993,6 +1014,7 @@
            wrkMast.setSystemMsg("");//清空消息
            wrkMast.setModiTime(now);
            if (wrkMastService.updateById(wrkMast)) {
                setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
                return false;
            }
            return false;
@@ -1341,7 +1363,7 @@
            wrkMast.setModiTime(now);
            if (wrkMastService.updateById(wrkMast)) {
                setLedData(wrkMast.getWrkNo(), wrkMast.getStaNo());
                setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo());
                //下发任务
                liftAction.assignWork(wrkMast.getLiftNo(), assignCommand);
                return false;
@@ -2301,6 +2323,10 @@
     * 入出库模式切换函数
     */
    public synchronized void ioConvert() {
        for (LedSlave led : slaveProperties.getLed()) {
            NormalLedThread ledThread = (NormalLedThread) SlaveConnection.get(SlaveType.Led, led.getId());
            ledThread.reset();
        }
        try {
            // 根据输送线plc遍历
            FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
@@ -542,19 +542,19 @@
            //去待机位
            String locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo));
            //防止另一辆车占用待机位
            try{
            try {
                if (shuttleProtocol.getShuttleNo() == 2) {
                    ShuttleThread shuttleThread1 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 1);
                    if (locNo.equals(shuttleThread1.getStatus().getCurrentLocNo())) {
                        locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 2, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo));
                        locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) - 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo));
                    }
                } else {
                    ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 2);
                    if (locNo.equals(shuttleThread2.getStatus().getCurrentLocNo())) {
                        locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 2, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo));
                        locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) - 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo));
                    }
                }
            }catch (Exception e){
            } catch (Exception e) {
            }
            //获取小车到提升机待机行走命令
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -434,7 +434,7 @@
                    if (wrkMast1.getIoType() == 101 && currentLocNo.equals(locNo)) {
                        //车辆当前位置已经是目标库位,调度该车
                        //给工作档绑定小车号
                        diffShuttles.put(-1, shuttleThread);
                        diffShuttles.put(-2, shuttleThread);
                    } else {
//                        if (tongLev && diffLev.size() >= 2) {
//                            //当前穿梭车线程到目标地点距离
@@ -445,14 +445,24 @@
//                            Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计算当前路径行走总距离
//                            diffShuttles.put(currentAllDistance, shuttleThread);
//                        } else {
                            //ABS(目标楼层 - 当前楼层) 得到差距,取最小差值
                            int currentValue = Math.abs(lev - currentLev);
                            if (diffShuttles.get(currentValue) != null) {
                        //ABS(目标楼层 - 当前楼层) 得到差距,取最小差值
                        int currentValue = Math.abs(lev - currentLev);
                        if (diffShuttles.get(currentValue) != null) {
                            try {
                                List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleProtocol.getShuttleNo(), Utils.getLev(currentLocNo)), null);//搜索空闲穿梭车,使用正常通道地图
                                if (currentShuttlePath == null) {
                                    continue;
                                }
                                Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计算当前路径行走总距离
                                diffShuttles.put(currentAllDistance, shuttleThread);
                                diffShuttles.put(currentValue - 1, shuttleThread);
                            } catch (Exception e) {
                                diffShuttles.put(currentValue + 1, shuttleThread);
                            } else {
                                diffShuttles.put(currentValue, shuttleThread);
                            }
    //                   }
                        } else {
                            diffShuttles.put(currentValue, shuttleThread);
                        }
                        //                   }
                    }
                }