package com.zy.core.network.fake; import com.alibaba.fastjson.JSON; import com.zy.asrs.entity.DeviceConfig; import com.zy.core.model.CommandResponse; import com.zy.core.model.command.RgvCommand; import com.zy.core.network.api.ZyRgvConnectApi; import com.zy.core.network.entity.ZyRgvStatusEntity; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ZyRgvFakeConnect implements ZyRgvConnectApi { private ZyRgvStatusEntity status; private final DeviceConfig deviceConfig; private final ExecutorService executor = Executors.newSingleThreadExecutor(); public ZyRgvFakeConnect(DeviceConfig deviceConfig) { this.deviceConfig = deviceConfig; ZyRgvStatusEntity init = JSON.parseObject(deviceConfig.getFakeInitStatus(), ZyRgvStatusEntity.class); this.status = init == null ? new ZyRgvStatusEntity() : init; } @Override public boolean connect() { return true; } @Override public boolean disconnect() { return true; } @Override public ZyRgvStatusEntity getStatus() { return status; } @Override public CommandResponse sendCommand(RgvCommand command) { CommandResponse response = new CommandResponse(true); executor.submit(() -> { if (command.getTaskMode() != null && command.getTaskMode() == 1) { status.setTaskNo((int) command.getTaskNo()); status.setStatus(1); try { Thread.sleep(300); } catch (InterruptedException ignored) {} status.setRgvPos((int) command.getTargetPos()); status.setStatus(0); } else if (command.getTaskMode() != null && command.getTaskMode() == 0) { status.setTaskNo(0); status.setStatus(0); } }); return response; } }