Junjie
昨天 3764b4d54fc45a9fa1f6fa1ab9e83c04045349cb
#出入库模式
2个文件已修改
93 ■■■■■ 已修改文件
src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/core/network/real/ZyStationV4RealConnectTest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
@@ -69,6 +69,7 @@
    private List<ZyStationStatusEntity> statusList;
    private List<StationObjModel> barcodeOriginList;
    private List<StationObjModel> inStationOriginList;
    private SiemensS7Net siemensNet;
    private DeviceConfig deviceConfig;
    private RedisUtil redisUtil;
@@ -126,6 +127,7 @@
                statusList.sort(Comparator.comparing(ZyStationStatusEntity::getStationId));
            }
            barcodeOriginList = basDevp.getBarcodeStationList$();
            inStationOriginList = sortStationObjModelsByStationId(basDevp.getInStationList$());
        }
        if (siemensNet == null) {
@@ -253,6 +255,20 @@
                String alarmMsg = buildConveyorCommonAlarmMessage(status1, status2, status3, status4);
                applyAlarmMessage(statusEntity, mergeAlarmMessages(statusEntity.getErrorMsg(), alarmMsg));
            }
        }
        // 出入库模式
        OperateResultExOne<byte[]> result6 = siemensNet.Read("DB167.2", (short) (inStationOriginList.size() * 2));
        if (result6.IsSuccess) {
            clearInStationIoModes();
            for (int i = 0; i < inStationOriginList.size(); i++) {
                ZyStationStatusEntity inStationEntity = findStatusEntityByInStationIdx(i);
                if (inStationEntity == null) {
                    continue;
                }
                Integer ioMode = normalizeIoMode((int) siemensNet.getByteTransform().TransInt16(result6.Content, i * 2));
                inStationEntity.setIoMode(ioMode);
            }
        }
@@ -394,6 +410,34 @@
        return null;
    }
    private ZyStationStatusEntity findStatusEntityByInStationIdx(Integer idx) {
        Integer stationId = findInStationIdByOrder(inStationOriginList, idx);
        for (ZyStationStatusEntity zyStationStatusEntity : statusList) {
            if(zyStationStatusEntity.getStationId().equals(stationId)) {
                return zyStationStatusEntity;
            }
        }
        return null;
    }
    private void clearInStationIoModes() {
        if (inStationOriginList == null || statusList == null) {
            return;
        }
        for (StationObjModel stationObjModel : inStationOriginList) {
            if (stationObjModel == null || stationObjModel.getStationId() == null) {
                continue;
            }
            for (ZyStationStatusEntity statusEntity : statusList) {
                if (stationObjModel.getStationId().equals(statusEntity.getStationId())) {
                    statusEntity.setIoMode(null);
                    break;
                }
            }
        }
    }
    private int getTaskWriteIdx(int stationIdx, Integer taskWriteIdx) {
        int useIdx = -1;
        if (stationIdx < 0 || taskWriteIdx == null || taskWriteIdx <= 0) {
@@ -480,6 +524,32 @@
        return current + append;
    }
    static Integer normalizeIoMode(Integer rawMode) {
        if (rawMode == null) {
            return null;
        }
        if (rawMode == 1 || rawMode == 2) {
            return rawMode;
        }
        return null;
    }
    static Integer findInStationIdByOrder(List<StationObjModel> inStationOriginList, Integer orderIdx) {
        if (inStationOriginList == null || orderIdx == null || orderIdx < 0 || orderIdx >= inStationOriginList.size()) {
            return null;
        }
        StationObjModel stationObjModel = inStationOriginList.get(orderIdx);
        return stationObjModel == null ? null : stationObjModel.getStationId();
    }
    static List<StationObjModel> sortStationObjModelsByStationId(List<StationObjModel> stationObjModels) {
        if (stationObjModels == null) {
            return Collections.emptyList();
        }
        stationObjModels.sort(Comparator.comparing(StationObjModel::getStationId, Comparator.nullsLast(Integer::compareTo)));
        return stationObjModels;
    }
    private static void appendConveyorCommonAlarmMessages(StringBuilder sb, boolean[] status, int startIdx) {
        if (status == null) {
            return;
src/test/java/com/zy/core/network/real/ZyStationV4RealConnectTest.java
@@ -1,6 +1,10 @@
package com.zy.core.network.real;
import com.zy.core.model.StationObjModel;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -24,4 +28,23 @@
        assertEquals("扫码异常;急停;路径查询异常;", merged);
    }
    @Test
    void sortStationObjModelsByStationIdShouldSortAscending() {
        List<StationObjModel> sorted = ZyStationV4RealConnect.sortStationObjModelsByStationId(Arrays.asList(
                station(107),
                station(101),
                station(104)
        ));
        assertEquals(101, sorted.get(0).getStationId());
        assertEquals(104, sorted.get(1).getStationId());
        assertEquals(107, sorted.get(2).getStationId());
    }
    private static StationObjModel station(Integer stationId) {
        StationObjModel model = new StationObjModel();
        model.setStationId(stationId);
        return model;
    }
}