package com.iflytop.handacid.app.service; import com.iflytop.handacid.app.common.enums.ChannelCode; import com.iflytop.handacid.app.common.enums.ChannelStateCode; import com.iflytop.handacid.app.core.command.DeviceCommand; import com.iflytop.handacid.app.core.command.DeviceCommandGenerator; import com.iflytop.handacid.app.core.state.DeviceState; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * 通道控制 */ @Slf4j @Service @RequiredArgsConstructor public class ChannelCtrlService { private final DeviceCommandService deviceCommandService; private final DeviceState deviceState; /** * 根据通道code获取泵相对移动指令 */ public DeviceCommand getPumpMoveByCommandByChannel(ChannelCode channelCode, Double position) { return switch (channelCode) { case CHANNEL_1 -> DeviceCommandGenerator.pump1MoveBy(position); case CHANNEL_2 -> DeviceCommandGenerator.pump2MoveBy(position); case CHANNEL_3 -> DeviceCommandGenerator.pump3MoveBy(position); case CHANNEL_4 -> DeviceCommandGenerator.pump4MoveBy(position); }; } /** * 根据通道code获取泵正转指令 */ public DeviceCommand getPumpForwardRotateCommandByChannel(ChannelCode channelCode) { return switch (channelCode) { case CHANNEL_1 -> DeviceCommandGenerator.pump1ForwardRotate(); case CHANNEL_2 -> DeviceCommandGenerator.pump2ForwardRotate(); case CHANNEL_3 -> DeviceCommandGenerator.pump3ForwardRotate(); case CHANNEL_4 -> DeviceCommandGenerator.pump4ForwardRotate(); }; } /** * 根据通道code获取停止泵指令 */ public DeviceCommand getPumpStopCommandByChannel(ChannelCode channelCode) { return switch (channelCode) { case CHANNEL_1 -> DeviceCommandGenerator.pump1Stop(); case CHANNEL_2 -> DeviceCommandGenerator.pump2Stop(); case CHANNEL_3 -> DeviceCommandGenerator.pump3Stop(); case CHANNEL_4 -> DeviceCommandGenerator.pump4Stop(); }; } /** * 加液 * * @param channelCode 通道code * @param volume 加液量 */ public void solutionAddStart(ChannelCode channelCode, Double volume) { } /** * 停止加液 * @param channelCode 通道code */ public void solutionAddStop(ChannelCode channelCode) { deviceState.getChannelStateMap().get(channelCode).setStateCode(ChannelStateCode.IDLE); } }