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;
|
}
|
|
}
|