#
Junjie
昨天 d2dbfe9ac555029ac6332703912ac7b753304aaf
#
6个文件已修改
145 ■■■■■ 已修改文件
src/main/java/com/zy/common/service/CommonService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/ZyStationConnectDriver.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java
@@ -446,7 +446,7 @@
        for (StationObjModel stationObjModel : stationList) {
            try {
                List<NavigateNode> navigateNodes = navigateUtils.calcByStationId(sourceStationId, stationObjModel.getStationId());
                if(navigateNodes != null) {
                if(!navigateNodes.isEmpty()) {
                    targetStationId = stationObjModel.getStationId();
                    break;
                }
@@ -478,7 +478,7 @@
        for (StationObjModel stationObjModel : stationList) {
            try {
                List<NavigateNode> navigateNodes = navigateUtils.calcByStationId(stationObjModel.getStationId(), targetStationId);
                if(navigateNodes != null) {
                if(!navigateNodes.isEmpty()) {
                    finalSourceStationId = stationObjModel.getStationId();
                    break;
                }
src/main/java/com/zy/core/network/ZyStationConnectDriver.java
@@ -16,6 +16,7 @@
import com.zy.core.network.real.ZyStationV3RealConnect;
import com.zy.core.network.real.ZyStationV4RealConnect;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
@@ -31,12 +32,14 @@
    private static final ZyStationFakeSegConnect zyStationFakeSegConnect = new ZyStationFakeSegConnect();
    private static final ZyStationV4FakeSegConnect zyStationV4FakeSegConnect = new ZyStationV4FakeSegConnect();
    private boolean connected = false;
    private volatile boolean connected = false;
    private volatile boolean connecting = false;
    private DeviceConfig deviceConfig;
    private RedisUtil redisUtil;
    private ZyStationConnectApi zyStationConnectApi;
    private volatile ZyStationConnectApi zyStationConnectApi;
    private volatile boolean closed = false;
    private ScheduledExecutorService executor;
    private final Object connectLock = new Object();
    public ZyStationConnectDriver(DeviceConfig deviceConfig, RedisUtil redisUtil) {
        this.deviceConfig = deviceConfig;
@@ -50,30 +53,50 @@
    @Override
    public boolean connect() {
        if (deviceConfig.getFake() == 0) {
            if ("ZyStationV3Thread".equals(deviceConfig.getThreadImpl())) {
                zyStationConnectApi = new ZyStationV3RealConnect(deviceConfig, redisUtil);
            } else if ("ZyStationV4Thread".equals(deviceConfig.getThreadImpl())) {
                zyStationConnectApi = new ZyStationV4RealConnect(deviceConfig, redisUtil);
            } else {
                zyStationConnectApi = new ZyStationRealConnect(deviceConfig, redisUtil);
        synchronized (connectLock) {
            if (closed) {
                return false;
            }
        } else {
            if ("ZyStationV3Thread".equals(deviceConfig.getThreadImpl())) {
                zyStationFakeSegConnect.addFakeConnect(deviceConfig, redisUtil);
                zyStationConnectApi = zyStationFakeSegConnect;
            } else if ("ZyStationV4Thread".equals(deviceConfig.getThreadImpl())) {
                zyStationV4FakeSegConnect.addFakeConnect(deviceConfig, redisUtil);
                zyStationConnectApi = zyStationV4FakeSegConnect;
            } else {
                zyStationFakeConnect.addFakeConnect(deviceConfig, redisUtil);
                zyStationConnectApi = zyStationFakeConnect;
            if (connected && zyStationConnectApi != null) {
                return true;
            }
            connecting = true;
            try {
                ZyStationConnectApi connectApi;
                if (deviceConfig.getFake() == 0) {
                    if ("ZyStationV3Thread".equals(deviceConfig.getThreadImpl())) {
                        connectApi = new ZyStationV3RealConnect(deviceConfig, redisUtil);
                    } else if ("ZyStationV4Thread".equals(deviceConfig.getThreadImpl())) {
                        connectApi = new ZyStationV4RealConnect(deviceConfig, redisUtil);
                    } else {
                        connectApi = new ZyStationRealConnect(deviceConfig, redisUtil);
                    }
                } else {
                    if ("ZyStationV3Thread".equals(deviceConfig.getThreadImpl())) {
                        zyStationFakeSegConnect.addFakeConnect(deviceConfig, redisUtil);
                        connectApi = zyStationFakeSegConnect;
                    } else if ("ZyStationV4Thread".equals(deviceConfig.getThreadImpl())) {
                        zyStationV4FakeSegConnect.addFakeConnect(deviceConfig, redisUtil);
                        connectApi = zyStationV4FakeSegConnect;
                    } else {
                        zyStationFakeConnect.addFakeConnect(deviceConfig, redisUtil);
                        connectApi = zyStationFakeConnect;
                    }
                }
                boolean connect = connectApi.connect();
                connected = connect;
                if (connect) {
                    zyStationConnectApi = connectApi;
                } else {
                    zyStationConnectApi = null;
                }
                return connect;
            } finally {
                connecting = false;
            }
        }
        boolean connect = zyStationConnectApi.connect();
        connected = connect;
        return connect;
    }
    @Override
@@ -83,11 +106,13 @@
        if (ex != null) {
            try { ex.shutdownNow(); } catch (Exception ignore) {}
        }
        if (zyStationConnectApi != null) {
            zyStationConnectApi.disconnect();
        ZyStationConnectApi connectApi = zyStationConnectApi;
        if (connectApi != null) {
            connectApi.disconnect();
            zyStationConnectApi = null;
        }
        connected = false;
        connecting = false;
    }
    public void start() {
@@ -116,13 +141,18 @@
    }
    public List<ZyStationStatusEntity> getStatus() {
        if (zyStationConnectApi == null) {
            return null;
        ZyStationConnectApi connectApi = zyStationConnectApi;
        if (!connected || connecting || connectApi == null) {
            return Collections.emptyList();
        }
        return zyStationConnectApi.getStatus(deviceConfig.getDeviceNo());
        return connectApi.getStatus(deviceConfig.getDeviceNo());
    }
    public CommandResponse sendCommand(StationCommand command) {
        ZyStationConnectApi connectApi = zyStationConnectApi;
        if (!connected || connecting || connectApi == null) {
            return new CommandResponse(false, "设备未连接,命令下发失败");
        }
        while (true) {
            Object lock = redisUtil.get(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
            if(lock != null) {
@@ -136,16 +166,24 @@
                break;
            }
        }
        CommandResponse commandResponse = zyStationConnectApi.sendCommand(deviceConfig.getDeviceNo(), command);
        CommandResponse commandResponse = connectApi.sendCommand(deviceConfig.getDeviceNo(), command);
        redisUtil.del(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
        return commandResponse;
    }
    public CommandResponse sendOriginCommand(String address, short[] data) {
        return zyStationConnectApi.sendOriginCommand(address, data);
        ZyStationConnectApi connectApi = zyStationConnectApi;
        if (!connected || connecting || connectApi == null) {
            return new CommandResponse(false, "设备未连接,原始命令下发失败");
        }
        return connectApi.sendOriginCommand(address, data);
    }
    public byte[] readOriginCommand(String address, int length) {
        return zyStationConnectApi.readOriginCommand(address, length);
        ZyStationConnectApi connectApi = zyStationConnectApi;
        if (!connected || connecting || connectApi == null) {
            return new byte[0];
        }
        return connectApi.readOriginCommand(address, length);
    }
}
src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -230,14 +230,14 @@
        Integer stationId = command.getStationId();
        Integer targetStationId = command.getTargetStaNo();
        List<NavigateNode> navigateNodes = null;
        List<NavigateNode> navigateNodes = new ArrayList<>();
        try {
            navigateNodes = navigateUtils.calcByStationId(stationId, targetStationId);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (navigateNodes == null) {
        if (navigateNodes.isEmpty()) {
            return;
        }
@@ -258,8 +258,8 @@
        Integer stationId = command.getStationId();
        Integer targetStationId = command.getTargetStaNo();
        List<NavigateNode> navigateNodes = null;
        List<NavigateNode> targetNavigateNodes = null;
        List<NavigateNode> navigateNodes = new ArrayList<>();
        List<NavigateNode> targetNavigateNodes = new ArrayList<>();
        try {
            BasStation startStation = basStationService.selectById(stationId);
@@ -308,14 +308,22 @@
                    continue;
                }
                navigateNodes = navigateUtils.calcByStationId(stationId, liftStationId);
                if(navigateNodes == null){
                try {
                    navigateNodes = navigateUtils.calcByStationId(stationId, liftStationId);
                } catch (Exception e) {
                }
                if(navigateNodes.isEmpty()){
                    continue;
                }
                //计算提升机到目标站的路径
                targetNavigateNodes = navigateUtils.calcByStationId(targetLiftStationId, targetStationId);
                if(targetNavigateNodes == null) {
                try {
                    //计算提升机到目标站的路径
                    targetNavigateNodes = navigateUtils.calcByStationId(targetLiftStationId, targetStationId);
                } catch (Exception e) {
                }
                if(targetNavigateNodes.isEmpty()) {
                    continue;
                }
            }
@@ -323,7 +331,7 @@
            e.printStackTrace();
        }
        if (navigateNodes == null || targetNavigateNodes == null) {
        if (navigateNodes.isEmpty() || targetNavigateNodes.isEmpty()) {
            return;
        }
src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
@@ -116,6 +116,7 @@
                boolean[] status2 = siemensNet.getByteTransform().TransBool(result.Content, i * 10 + 7, 1);
                statusEntity.setEnableIn(status2[1]);//启动入库
                statusEntity.setRunBlock(status2[2]);//重新规划路线
                Integer palletHeight = null;
                if (status[7]) {
src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
@@ -47,6 +47,7 @@
    private RedisUtil redisUtil;
    private ZyStationConnectDriver zyStationConnectDriver;
    private int deviceLogCollectTime = 200;
    private boolean initStatus = false;
    private long deviceDataLogTime = System.currentTimeMillis();
    private ExecutorService executor = Executors.newFixedThreadPool(9999);
@@ -64,14 +65,16 @@
        Thread readThread = new Thread(() -> {
            while (true) {
                try {
                    deviceLogCollectTime = Utils.getDeviceLogCollectTime();
                    if (initStatus) {
                        deviceLogCollectTime = Utils.getDeviceLogCollectTime();
                    }
                    readStatus();
                    Thread.sleep(100);
                } catch (Exception e) {
                    log.error("StationV4Thread Fail", e);
                }
            }
        });
        }, "DevpRead-" + deviceConfig.getDeviceNo());
        readThread.start();
        Thread processThread = new Thread(() -> {
@@ -91,7 +94,7 @@
                    log.error("StationV4Process Fail", e);
                }
            }
        });
        }, "DevpProcess-" + deviceConfig.getDeviceNo());
        processThread.start();
    }
@@ -122,6 +125,7 @@
                stationProtocol.setStationId(entity.getStationId());
                statusList.add(stationProtocol);
            }
            initStatus = true;
        }
        List<ZyStationStatusEntity> zyStationStatusEntities = zyStationConnectDriver.getStatus();
src/main/resources/application.yml
@@ -1,6 +1,6 @@
# 系统版本信息
app:
  version: 1.0.4.6
  version: 1.0.4.7
  version-type: dev  # prd 或 dev
server: