Junjie
15 小时以前 1a3f0ed6b7f6d4112069a3c8679e7192365d5eef
#电视机退回时入库站点也显示信息
1个文件已添加
1个文件已修改
141 ■■■■■ 已修改文件
src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java
@@ -7,6 +7,7 @@
import com.zy.common.model.StartupDto;
import com.zy.core.enums.RedisKeyType;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.protocol.StationProtocol;
import java.util.List;
@@ -71,7 +72,9 @@
    }
    default void onApplyFailed(StoreInTaskContext context, AsyncInTaskResult result) {
        context.getStationProtocol().setSystemWarning("请求入库失败,WMS返回=" + buildFailureMessage(result));
        String warning = "请求入库失败,WMS返回=" + buildFailureMessage(result);
        context.getStationProtocol().setSystemWarning(warning);
        syncWarningToBackStation(context, warning);
    }
    default String buildFailureMessage(AsyncInTaskResult result) {
@@ -81,4 +84,36 @@
        return result.getMessage();
    }
    default void syncWarningToBackStation(StoreInTaskContext context, String warning) {
        if (context == null || context.getStationObjModel() == null || context.getStationThread() == null) {
            return;
        }
        StationObjModel backStation = context.getStationObjModel().getBackStation();
        if (backStation == null || backStation.getStationId() == null) {
            return;
        }
        if (backStation.getStationId().equals(context.getStationProtocol().getStationId())) {
            return;
        }
        List<StationProtocol> stations = context.getStationThread().getStatus();
        if (stations != null) {
            for (StationProtocol station : stations) {
                if (station != null && backStation.getStationId().equals(station.getStationId())) {
                    station.setSystemWarning(warning);
                    return;
                }
            }
        }
        java.util.Map<Integer, StationProtocol> stationMap = context.getStationThread().getStatusMap();
        if (stationMap == null) {
            return;
        }
        StationProtocol backStationProtocol = stationMap.get(backStation.getStationId());
        if (backStationProtocol != null) {
            backStationProtocol.setSystemWarning(warning);
        }
    }
}
src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java
New file
@@ -0,0 +1,104 @@
package com.zy.core.plugin.store;
import com.zy.asrs.entity.BasDevp;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.command.StationCommand;
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.thread.StationThread;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
class StoreInTaskPolicyTest {
    private final StoreInTaskPolicy policy = context -> true;
    @Test
    void onApplyFailed_propagatesWarningToBackStation() {
        StationProtocol barcodeStation = new StationProtocol();
        barcodeStation.setStationId(102);
        StationProtocol backStation = new StationProtocol();
        backStation.setStationId(101);
        StationThread stationThread = new FixedStationThread(Map.of(
                102, barcodeStation,
                101, backStation
        ));
        StationObjModel backStationModel = new StationObjModel();
        backStationModel.setStationId(101);
        StationObjModel barcodeStationModel = new StationObjModel();
        barcodeStationModel.setStationId(102);
        barcodeStationModel.setBackStation(backStationModel);
        StoreInTaskContext context = new StoreInTaskContext(new BasDevp(), stationThread, barcodeStationModel, barcodeStation);
        AsyncInTaskResult result = new AsyncInTaskResult();
        result.setMessage("WMS异常");
        policy.onApplyFailed(context, result);
        assertEquals("请求入库失败,WMS返回=WMS异常", barcodeStation.getSystemWarning());
        assertEquals("请求入库失败,WMS返回=WMS异常", backStation.getSystemWarning());
    }
    private static class FixedStationThread implements StationThread {
        private final Map<Integer, StationProtocol> statusMap;
        private FixedStationThread(Map<Integer, StationProtocol> statusMap) {
            this.statusMap = statusMap;
        }
        @Override
        public List<StationProtocol> getStatus() {
            return List.copyOf(statusMap.values());
        }
        @Override
        public Map<Integer, StationProtocol> getStatusMap() {
            return statusMap;
        }
        @Override
        public StationCommand getCommand(com.zy.core.enums.StationCommandType commandType, Integer taskNo,
                                         Integer stationId, Integer targetStationId, Integer palletSize) {
            return null;
        }
        @Override
        public boolean clearPath(Integer taskNo) {
            return false;
        }
        @Override
        public CommandResponse sendCommand(StationCommand command) {
            return null;
        }
        @Override
        public CommandResponse sendOriginCommand(String address, short[] data) {
            return null;
        }
        @Override
        public byte[] readOriginCommand(String address, int length) {
            return new byte[0];
        }
        @Override
        public void run() {
        }
        @Override
        public boolean connect() {
            return true;
        }
        @Override
        public void close() {
        }
    }
}