package com.zy.asrs.wcs.core.kernel.command; import com.zy.asrs.wcs.core.entity.Motion; import com.zy.asrs.wcs.core.model.enums.MotionCtgType; import com.zy.asrs.wcs.core.utils.ConveyorDispatcher; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol; import com.zy.asrs.wcs.rcs.thread.DevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Objects; /** * Created by vincent on 2023/10/23 */ @Slf4j @Service public class ConveyorCommandService { @Autowired private ConveyorDispatcher conveyorDispatcher; public Boolean accept(Motion motion) { Integer deviceNo = Integer.parseInt(motion.getDevice()); DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, deviceNo); if (devpThread == null) { return false; } switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){ // 输送线指令下发 case CONVEYOR_INBOUND://输送线入库 break; case CONVEYOR_INBOUND_TO_LIFT://输送线入库至提升机 break; case CONVEYOR_OUTBOUND://输送线出库 StaProtocol staProtocol = devpThread.getStation().get(Integer.parseInt(motion.getOrigin())); if (!(staProtocol.isAutoing() && staProtocol.isLoading())) { return false; } boolean result = devpThread.writeWorkSta(Integer.parseInt(motion.getOrigin()), motion.getTaskNo().shortValue(), Short.parseShort(motion.getTarget())); if (!result) { return false; } break; default: break; } return Boolean.TRUE; } public Boolean finish(Motion motion) { Integer deviceNo = Integer.parseInt(motion.getDevice()); DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, deviceNo); if (devpThread == null) { return false; } switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){ case CONVEYOR_INBOUND: break; case CONVEYOR_OUTBOUND: break; case CONVEYOR_INBOUND_TO_LIFT: break; default: break; } return true; } }