Junjie
2023-03-28 ae35f8d3521741b87835c6122053ec1af449d4ab
src/main/java/com/zy/asrs/controller/ShuttleController.java
@@ -6,13 +6,9 @@
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.CrnStatusType;
import com.zy.asrs.domain.param.ShuttleOperatorParam;
import com.zy.asrs.domain.param.SteModeParam;
import com.zy.asrs.domain.param.SteOperatorParam;
import com.zy.asrs.domain.vo.*;
import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.entity.BasSte;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.service.WrkMastService;
@@ -21,16 +17,12 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
import com.zy.core.model.ShuttleSlave;
import com.zy.core.model.SteSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.ShuttleAssignCommand;
import com.zy.core.model.command.ShuttleCommand;
import com.zy.core.model.command.SteCommand;
import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.model.protocol.SteProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import com.zy.core.thread.ShuttleThread;
import com.zy.core.thread.SteThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -38,6 +30,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
 * 四向穿梭车接口
@@ -70,24 +63,32 @@
                continue;
            }
            ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
            if (shuttleProtocol == null) {
            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) {
                continue;
            }
            vo.setTaskNo(shuttleProtocol.getTaskNo().intValue());  //  任务号
            if (!Cools.isEmpty(shuttleProtocol.getBusyStatus())) {
                vo.setStatus(shuttleProtocol.getBusyStatusType().desc); //  状态
            }
            vo.setRow(shuttleProtocol.getRow());
            vo.setBay(shuttleProtocol.getBay());
            vo.setLev(shuttleProtocol.getLev());
            vo.setBatteryPower(shuttleProtocol.getBatteryPower() + "%");
            vo.setSpeed(shuttleProtocol.getCurrentMoveServoSpeed());
            vo.setBusyStatus(shuttleProtocol.getBusyStatusType().desc); //四向穿梭车状态
            vo.setStatus(shuttleProtocol.getProtocolStatusType().desc);//当前任务状态
            vo.setCurrentCode(shuttleProtocol.getCurrentCode());//当前二维码
            vo.setBatteryPower(shuttleProtocol.getBatteryPower$() == null ? "" : shuttleProtocol.getBatteryPower$() + "%");//电池电量
            vo.setBatteryTemp(shuttleProtocol.getBatteryTemp$() == null ? "" : shuttleProtocol.getBatteryTemp$() + "°");//电池温度
            if (!Cools.isEmpty(shuttleProtocol.getErrorCode())) {
                vo.setAlarm1(String.valueOf(shuttleProtocol.getErrorCode()));
                vo.setErrorCode(shuttleProtocol.getErrorCodeType().desc);//错误编号
            }
            vo.setPlcOutputStatusIO(shuttleProtocol.getPlcOutputStatusIO());//Plc输出状态IO
            if (!Cools.isEmpty(shuttleProtocol.getStatusErrorCode())) {
                vo.setAlarm2(String.valueOf(shuttleProtocol.getStatusErrorCode()));
                vo.setStatusErrorCode(shuttleProtocol.getStatusErrorCode());//错误信息码
            }
            vo.setPlcInputStatus(shuttleProtocol.getPlcInputStatus());//PLC输入状态
            vo.setCurrentOrBeforeCode(shuttleProtocol.getCurrentOrBeforeCode());//当前或者之前读到的二维码值
            vo.setCodeOffsetX(shuttleProtocol.getCodeOffsetX());//读到的二维码X方向偏移量
            vo.setCodeOffsetY(shuttleProtocol.getCodeOffsetY());//读到的二维码Y方向偏移量
            vo.setCurrentVoltage(shuttleProtocol.getCurrentVoltage());//当前的电压值
            vo.setCurrentAnalogValue(shuttleProtocol.getCurrentAnalogValue());//当前的模拟量值
            vo.setCurrentLiftServoSpeed(shuttleProtocol.getCurrentLiftServoSpeed());//当前的升降伺服速度
            vo.setCurrentMoveServoSpeed(shuttleProtocol.getCurrentMoveServoSpeed());//当前的行走伺服速度
            vo.setCurrentLiftServoLoad(shuttleProtocol.getCurrentLiftServoLoad());//当前的升降伺服负载率
            vo.setCurrentMoveServoLoad(shuttleProtocol.getCurrentMoveServoLoad());//当前的行走伺服负载率
        }
        return R.ok().add(list);
    }
@@ -112,21 +113,34 @@
                continue;
            }
            vo.setWorkNo(shuttleProtocol.getTaskNo().intValue());  //  任务号
            vo.setWorkNo(shuttleProtocol.getTaskNo().intValue());//任务号
            if (shuttleProtocol.getTaskNo() > 0) {
                WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo());
                if (wrkMast != null) {
                    //vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  模式状态
                    vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  源站
                    vo.setStaNo(wrkMast.getStaNo$());   //  目标站
                    vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  源库位
                    vo.setLocNo(wrkMast.getLocNo());    //  目标库位
                    vo.setSourceLocNo(wrkMast.getSourceLocNo());//源库位
                    vo.setDistLocNo(wrkMast.getLocNo());//目标库位
                }
            }
            vo.setSpeed(shuttleProtocol.getCurrentMoveServoSpeed());  // 速度
            vo.setPakMk(shuttleProtocol.getPakMk());    // 作业标记
            if (shuttleProtocol.getProtocolStatusType() != null) {
                vo.setStatus(shuttleProtocol.getProtocolStatusType().desc);//状态
            }
            vo.setCodeOffsetX(shuttleProtocol.getCodeOffsetX());//读到的二维码X方向偏移量
            vo.setCodeOffsetY(shuttleProtocol.getCodeOffsetY());//读到的二维码Y方向偏移量
            vo.setCurrentVoltage(shuttleProtocol.getCurrentVoltage());//当前的电压值
            vo.setCurrentAnalogValue(shuttleProtocol.getCurrentAnalogValue());//当前的模拟量值
            vo.setCurrentMoveServoSpeed(shuttleProtocol.getCurrentMoveServoSpeed());//当前的行走伺服速度
            vo.setCurrentMoveServoLoad(shuttleProtocol.getCurrentMoveServoLoad() == null ? "" : shuttleProtocol.getCurrentMoveServoLoad() + "%");//当前的行走伺服负载率
            vo.setCurrentLiftServoLoad(shuttleProtocol.getCurrentLiftServoLoad() == null ? "" : shuttleProtocol.getCurrentLiftServoLoad() + "%");//当前的升降伺服负载率
            vo.setCurrentLiftServoSpeed(shuttleProtocol.getCurrentLiftServoSpeed());//当前的升降伺服速度
            vo.setPakMk(shuttleProtocol.getPakMk()?"Y" : "N");    // 作业标记
        }
        return R.ok().add(list);
    }
    @PostMapping("/latest/data/shuttle")
    @ManagerAuth(memo = "四向穿梭车实时数据")
    public R shuttleLatestData(){
        return R.ok();
    }
    @PostMapping("/output/shuttle")
@@ -226,7 +240,7 @@
//            }
//        }
        ShuttleCommand shuttleCommand = new ShuttleCommand();
        shuttleCommand.setTaskNo(vo.getWorkNo());
        shuttleCommand.setTaskNo(vo.getWorkNo().shortValue());
        if (MessageQueue.offer(SlaveType.Shuttle, vo.getShuttleNo(), new Task(2, shuttleCommand))) {
        } else {
            throw new CoolException("命令下发失败");
@@ -255,6 +269,10 @@
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getSourceLocNo(), param.getDistLocNo())) {
            return R.parse(BaseRes.PARAM);
        }
        for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
            if (param.getShuttleNo().equals(shuttleSlave.getId())) {
                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
@@ -265,23 +283,16 @@
                if (shuttleProtocol == null) {
                    throw new CoolException("四向穿梭车不在线");
                }
                ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode());
                ShuttleCommand shuttleCommand = new ShuttleCommand();
                shuttleCommand.setShuttleNo(shuttleSlave.getId()); // 四向穿梭车编号
//                if (param.getShuttleTaskMode() == 16) {
//                    steCommand.setComplete(true);
//                } else if (param.getSteTaskMode() == 99) {
//                    steCommand.setControlMode((short) 1);
//                } else if (param.getSteTaskMode() == 100) {
//                    steCommand.setControlMode((short) 0);
//                } else {
//                    if (steTaskModeType == null) {
//                        throw new CoolException("任务类型错误");
//                    }
//                    steCommand.setTaskNo(param.getTaskNo()); // 工作号
//                    steCommand.setTaskMode(steTaskModeType);
//                }
                if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(2, shuttleCommand))) {
                ShuttleAssignCommand command = new ShuttleAssignCommand();
                command.setShuttleNo(shuttleSlave.getId().shortValue()); // 四向穿梭车编号
                command.setTaskMode(shuttleTaskModeType.id.shortValue());
                command.setSourceLocNo(param.getSourceLocNo());
                command.setDistLocNo(param.getDistLocNo());
                command.setTaskNo((short) 9999);
                if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, command))) {
                    return R.ok();
                } else {
                    throw new CoolException("命令下发失败");