package com.zy.asrs.controller; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.core.annotations.ManagerAuth; 
 | 
import com.core.common.BaseRes; 
 | 
import com.core.common.Cools; 
 | 
import com.core.common.R; 
 | 
import com.core.exception.CoolException; 
 | 
import com.zy.asrs.domain.param.ShuttleOperatorParam; 
 | 
import com.zy.asrs.domain.vo.*; 
 | 
import com.zy.asrs.entity.BasShuttle; 
 | 
import com.zy.asrs.entity.WrkMast; 
 | 
import com.zy.asrs.service.BasShuttleService; 
 | 
import com.zy.asrs.service.LocMastService; 
 | 
import com.zy.asrs.service.WrkMastService; 
 | 
import com.zy.asrs.utils.Utils; 
 | 
import com.zy.common.model.NyShuttleOperaResult; 
 | 
import com.zy.common.model.enums.NavigationMapType; 
 | 
import com.zy.common.service.CommonService; 
 | 
import com.zy.common.utils.NyHttpUtils; 
 | 
import com.zy.common.utils.NyShuttleOperaUtils; 
 | 
import com.zy.common.utils.RedisUtil; 
 | 
import com.zy.common.utils.ShuttleDispatchUtils; 
 | 
import com.zy.core.cache.MessageQueue; 
 | 
import com.zy.core.cache.OutputQueue; 
 | 
import com.zy.core.cache.SlaveConnection; 
 | 
import com.zy.core.enums.*; 
 | 
import com.zy.core.model.ShuttleSlave; 
 | 
import com.zy.core.model.Task; 
 | 
import com.zy.core.model.command.NyShuttleHttpCommand; 
 | 
import com.zy.core.model.command.ShuttleAssignCommand; 
 | 
import com.zy.core.model.command.ShuttleRedisCommand; 
 | 
import com.zy.core.model.protocol.NyShuttleProtocol; 
 | 
import com.zy.core.model.protocol.ShuttleProtocol; 
 | 
import com.zy.core.properties.SlaveProperties; 
 | 
import com.zy.core.thread.NyShuttleThread; 
 | 
import com.zy.core.thread.ShuttleThread; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 四向穿梭车接口 
 | 
 */ 
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping("/shuttle") 
 | 
public class ShuttleController { 
 | 
  
 | 
    @Autowired 
 | 
    private SlaveProperties slaveProperties; 
 | 
    @Autowired 
 | 
    private BasShuttleService basShuttleService; 
 | 
    @Autowired 
 | 
    private WrkMastService wrkMastService; 
 | 
    @Autowired 
 | 
    private LocMastService locMastService; 
 | 
    @Autowired 
 | 
    private CommonService commonService; 
 | 
    @Autowired 
 | 
    private RedisUtil redisUtil; 
 | 
    @Autowired 
 | 
    private ShuttleDispatchUtils shuttleDispatchUtils; 
 | 
  
 | 
    @PostMapping("/table/shuttle/state") 
 | 
    @ManagerAuth(memo = "四向穿梭车信息表") 
 | 
    public R shuttleStateTable(){ 
 | 
        ArrayList<JSONObject> list = new ArrayList<>(); 
 | 
        for (ShuttleSlave slave : slaveProperties.getShuttle()) { 
 | 
            // 表格行 
 | 
            JSONObject baseObj = new JSONObject(); 
 | 
            baseObj.put("shuttleNo", slave.getId()); 
 | 
            list.add(baseObj); 
 | 
            // 获取四向穿梭车信息 
 | 
            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); 
 | 
            if (shuttleThread == null) { 
 | 
                continue; 
 | 
            } 
 | 
            NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
            JSONObject shuttleData = JSON.parseObject(JSON.toJSONString(shuttleProtocol)); 
 | 
            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) { 
 | 
                if (shuttleData != null) { 
 | 
                    baseObj.putAll(shuttleData); 
 | 
                } 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            shuttleData.put("moveAdvancePath", null);//穿梭车预计路径 
 | 
            if (shuttleProtocol.getTaskNo() != 0) { 
 | 
                //存在任务,获取指令 
 | 
                Object object = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); 
 | 
                if (object != null) { 
 | 
                    ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class); 
 | 
                    shuttleData.put("moveAdvancePath", redisCommand.getAssignCommand().getNodes());//穿梭车预计路径 
 | 
                } 
 | 
            } 
 | 
  
 | 
            baseObj.putAll(shuttleData); 
 | 
        } 
 | 
        return R.ok().add(list); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/table/shuttle/msg") 
 | 
    @ManagerAuth(memo = "四向穿梭车数据表") 
 | 
    public R steMsgTable(){ 
 | 
        List<ShuttleMsgTableVo> list = new ArrayList<>(); 
 | 
        for (ShuttleSlave slave : slaveProperties.getShuttle()) { 
 | 
            // 表格行 
 | 
            ShuttleMsgTableVo vo = new ShuttleMsgTableVo(); 
 | 
            vo.setShuttleNo(slave.getId());   //  四向穿梭车号 
 | 
            list.add(vo); 
 | 
            // 获取穿梭车信息 
 | 
            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); 
 | 
            if (shuttleThread == null) { 
 | 
                continue; 
 | 
            } 
 | 
            ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
            if (shuttleProtocol == null) { 
 | 
                continue; 
 | 
            } 
 | 
            if (shuttleProtocol.getShuttleNo() == null) { 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            vo.setWorkNo(shuttleProtocol.getTaskNo().intValue());//任务号 
 | 
            if (shuttleProtocol.getTaskNo() > 0) { 
 | 
                WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); 
 | 
                if (wrkMast != null) { 
 | 
                    vo.setSourceLocNo(wrkMast.getSourceLocNo());//源库位 
 | 
                    vo.setDistLocNo(wrkMast.getLocNo());//目标库位 
 | 
                } 
 | 
            } 
 | 
            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");    // 作业标记 
 | 
            vo.setLocNo(shuttleProtocol.getLocNo());//四向穿梭车当前库位号 
 | 
            vo.setLev(shuttleProtocol.getLocNo() == null ? 0 : Utils.getLev(shuttleProtocol.getLocNo()));//四向穿梭车当前层高 
 | 
  
 | 
            BasShuttle basShuttle = basShuttleService.selectById(slave.getId()); 
 | 
            if (basShuttle != null) { 
 | 
                vo.setChargeLine(basShuttle.getChargeLine());//充电阈值 
 | 
            } 
 | 
        } 
 | 
        return R.ok().add(list); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/latest/data/shuttle") 
 | 
    @ManagerAuth(memo = "四向穿梭车实时数据") 
 | 
    public R shuttleLatestData(){ 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/output/shuttle") 
 | 
    @ManagerAuth 
 | 
    public R steOutput(){ 
 | 
        StringBuilder str = new StringBuilder(); 
 | 
        String s; 
 | 
        int i = 0; 
 | 
        while((s = OutputQueue.SHUTTLE.poll()) != null && i <=10) { 
 | 
            str.append("\n").append(s); 
 | 
            i++; 
 | 
        } 
 | 
        return R.ok().add(str.toString()); 
 | 
    } 
 | 
  
 | 
    @RequestMapping(value = "/command/query") 
 | 
    public R shuttleCommandQuery(@RequestParam("wrkNo") Integer wrkNo) { 
 | 
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); 
 | 
        if (o == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); 
 | 
        return R.ok().add(redisCommand); 
 | 
    } 
 | 
  
 | 
    //回退命令 
 | 
    @RequestMapping(value = "/command/rollback") 
 | 
    public R shuttleCommandRollback(@RequestParam("wrkNo") Integer wrkNo 
 | 
            , @RequestParam("commandStep") Integer commandStep) { 
 | 
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); 
 | 
        if (o == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); 
 | 
        redisCommand.setCommandStep(commandStep); 
 | 
        redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    //命令完成状态切换 
 | 
    @RequestMapping(value = "/command/completeSwitch") 
 | 
    public R shuttleCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo 
 | 
            , @RequestParam("commandStep") Integer commandStep 
 | 
            , @RequestParam("complete") Integer complete) { 
 | 
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); 
 | 
        if (o == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); 
 | 
        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); 
 | 
        List<NyShuttleHttpCommand> commands = assignCommand.getCommands(); 
 | 
        NyShuttleHttpCommand command = commands.get(commandStep); 
 | 
        command.setComplete(complete != 0); 
 | 
        redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    //重启任务(命令) 
 | 
    @RequestMapping(value = "/command/restart") 
 | 
    public R shuttleCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) { 
 | 
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); 
 | 
        if (o == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); 
 | 
        Short shuttleNo = redisCommand.getShuttleNo(); 
 | 
        NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); 
 | 
        if (shuttleThread == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
        if (shuttleProtocol == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        if (!shuttleProtocol.isIdle()) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        //四向穿梭车处于空闲状态,进行任务的恢复 
 | 
        shuttleProtocol.setTaskNo(redisCommand.getWrkNo().intValue());//将四向穿梭车线程分配任务号 
 | 
        shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//工作状态 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    //删除任务(命令) 
 | 
    @RequestMapping(value = "/command/del") 
 | 
    public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) { 
 | 
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); 
 | 
        if (o == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        redisUtil.del("shuttle_wrk_no_" + wrkNo); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /****************************************************************/ 
 | 
    /************************** 手动操作 ******************************/ 
 | 
    /****************************************************************/ 
 | 
  
 | 
    @ManagerAuth(memo = "手动操作") 
 | 
    @PostMapping("/operator/shuttle") 
 | 
    public R shuttleOperator(ShuttleOperatorParam param){ 
 | 
        if (Cools.isEmpty(param.getShuttleNo(), param.getShuttleTaskMode())) { 
 | 
            return R.parse(BaseRes.PARAM); 
 | 
        } 
 | 
  
 | 
        ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); 
 | 
  
 | 
        if (param.getShuttleTaskMode() == 1 || param.getShuttleTaskMode() == 2 || param.getShuttleTaskMode() == 14) { 
 | 
            if (Cools.isEmpty(param.getSourceLocNo(), param.getDistLocNo())) { 
 | 
                return R.parse(BaseRes.PARAM); 
 | 
            } 
 | 
            assignCommand.setSourceLocNo(param.getSourceLocNo()); 
 | 
            assignCommand.setLocNo(param.getDistLocNo()); 
 | 
        } 
 | 
  
 | 
        for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { 
 | 
            if (param.getShuttleNo().equals(shuttleSlave.getId())) { 
 | 
                NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); 
 | 
                if (shuttleThread == null) { 
 | 
                    throw new CoolException("四向穿梭车不在线"); 
 | 
                } 
 | 
                NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
                if (shuttleProtocol == null) { 
 | 
                    throw new CoolException("四向穿梭车不在线"); 
 | 
                } 
 | 
  
 | 
                ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode()); 
 | 
                assignCommand.setShuttleNo(shuttleSlave.getId().shortValue()); // 四向穿梭车编号 
 | 
                assignCommand.setTaskMode(shuttleTaskModeType.id.shortValue()); 
 | 
                assignCommand.setTaskNo((short) commonService.getWorkNo(3));//获取任务号 
 | 
                assignCommand.setAuto(false);//手动模式 
 | 
  
 | 
                if (shuttleTaskModeType == ShuttleTaskModeType.TRANSPORT) { 
 | 
                    //搬运货物任务 
 | 
                    NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getSourceLocNo(), param.getDistLocNo()); 
 | 
                    if (result == null) { 
 | 
                        throw new CoolException("路径计算失败"); 
 | 
                    } 
 | 
  
 | 
                    assignCommand.setCommands(result.getCommands()); 
 | 
                    assignCommand.setNodes(result.getNodes()); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) { 
 | 
                    //移动到目标库位 
 | 
                    Integer mapType = NavigationMapType.NORMAL.id; 
 | 
                    if (shuttleProtocol.getLiftPosition() == 2) { 
 | 
                        mapType = NavigationMapType.DFX.id; 
 | 
                    } 
 | 
                    NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapType); 
 | 
                    if (result == null) { 
 | 
                        throw new CoolException("路径计算失败"); 
 | 
                    } 
 | 
  
 | 
                    assignCommand.setCommands(result.getCommands()); 
 | 
                    assignCommand.setNodes(result.getNodes()); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) { 
 | 
                    //托盘顶升 
 | 
                    NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); 
 | 
                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); 
 | 
                    commands.add(command); 
 | 
                    assignCommand.setCommands(commands); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) { 
 | 
                    //托盘下降 
 | 
                    NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); 
 | 
                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); 
 | 
                    commands.add(command); 
 | 
                    assignCommand.setCommands(commands); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) { 
 | 
                    //充电开关 
 | 
                    boolean charge = false; 
 | 
                    if (shuttleProtocol.getChargState() == 1) { 
 | 
                        //已充电,关闭充电 
 | 
                        charge = false; 
 | 
                    }else { 
 | 
                        //开启充电 
 | 
                        charge = true; 
 | 
                    } 
 | 
                    NyShuttleHttpCommand command = NyHttpUtils.getChargeCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), charge); 
 | 
                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); 
 | 
                    commands.add(command); 
 | 
                    assignCommand.setCommands(commands); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) { 
 | 
                    //复位 
 | 
                    shuttleProtocol.setTaskNo(0);//工作号清空 
 | 
                    shuttleProtocol.setToken(0);//令牌清空 
 | 
                    shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//任务状态-空闲 
 | 
                    shuttleProtocol.setPakMk(false);//作业标记复位 
 | 
  
 | 
                    shuttleProtocol.setMoveLoc(false); 
 | 
                    shuttleProtocol.setMoveType(0); 
 | 
                    shuttleProtocol.setXStart(0); 
 | 
                    shuttleProtocol.setXTarget(0); 
 | 
                    shuttleProtocol.setXCurrent(0); 
 | 
                    shuttleProtocol.setYStart(0); 
 | 
                    shuttleProtocol.setYTarget(0); 
 | 
                    shuttleProtocol.setYCurrent(0); 
 | 
                    return R.ok(); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CONTROL) { 
 | 
                    //小车管制 
 | 
                    NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); 
 | 
                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); 
 | 
                    commands.add(suspendCommand); 
 | 
                    assignCommand.setCommands(commands); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CANCEL_CONTROL) { 
 | 
                    //小车取消管制 
 | 
                    NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); 
 | 
                    ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); 
 | 
                    commands.add(suspendCommand); 
 | 
                    assignCommand.setCommands(commands); 
 | 
                } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_WRK_MAST) { 
 | 
                    //移动到目标库位(生成移动任务) 
 | 
                    shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), param.getDistLocNo(), param.getShuttleNo()); 
 | 
                    return R.ok(); 
 | 
                } else { 
 | 
                    throw new CoolException("未知命令"); 
 | 
                } 
 | 
  
 | 
                if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, assignCommand))) { 
 | 
                    return R.ok(); 
 | 
                } else { 
 | 
                    throw new CoolException("命令下发失败"); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return R.error(); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/detl/update") 
 | 
    @ManagerAuth(memo = "修改数据") 
 | 
    public R shuttleUpdate(@RequestParam Integer shuttleNo, 
 | 
                           @RequestParam Integer workNo, 
 | 
                           @RequestParam String pakMk, 
 | 
                           @RequestParam Integer token) { 
 | 
        NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); 
 | 
        if (shuttleThread == null) { 
 | 
            return R.error("plc已掉线"); 
 | 
        } 
 | 
        NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
        if (shuttleProtocol == null) { 
 | 
            return R.error("plc已掉线"); 
 | 
        } 
 | 
        if (workNo != null) { 
 | 
            shuttleProtocol.setTaskNo(workNo); 
 | 
        } 
 | 
        if (pakMk != null) { 
 | 
            shuttleProtocol.setPakMk(pakMk.equals("Y")); 
 | 
        } 
 | 
        if (token != null) { 
 | 
            shuttleProtocol.setToken(token); 
 | 
        } 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    @PostMapping("/runSpeed/{shuttleNo}") 
 | 
    @ManagerAuth 
 | 
    public R setRunSpeed(@PathVariable("shuttleNo") String shuttleNo, @RequestParam("runSpeed") Integer runSpeed, @RequestParam("chargeLine") Integer chargeLine) { 
 | 
        BasShuttle basShuttle = basShuttleService.selectById(shuttleNo); 
 | 
        if (basShuttle == null) { 
 | 
            return R.error("四向穿梭车不存在"); 
 | 
        } 
 | 
//        basShuttle.setRunSpeed(runSpeed); 
 | 
        basShuttle.setChargeLine(chargeLine); 
 | 
        if (!basShuttleService.updateById(basShuttle)) { 
 | 
            return R.error(); 
 | 
        } 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 跑库程序 
 | 
     */ 
 | 
    @PostMapping("/moveLoc") 
 | 
    @ManagerAuth 
 | 
    public R moveLoc(@RequestParam Integer shuttleNo, 
 | 
                     @RequestParam Integer moveType, 
 | 
                     @RequestParam Integer xStart, 
 | 
                     @RequestParam Integer xTarget, 
 | 
                     @RequestParam Integer yStart, 
 | 
                     @RequestParam Integer yTarget) { 
 | 
        NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); 
 | 
        if (shuttleThread == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
  
 | 
        NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); 
 | 
        if (shuttleProtocol == null) { 
 | 
            return R.error(); 
 | 
        } 
 | 
  
 | 
        if (!shuttleProtocol.isIdle()) { 
 | 
            return R.error("小车忙碌中"); 
 | 
        } 
 | 
  
 | 
        shuttleProtocol.setMoveLoc(true);//开启跑库 
 | 
        shuttleProtocol.setMoveType(moveType); 
 | 
        shuttleProtocol.setXStart(xStart); 
 | 
        shuttleProtocol.setXTarget(xTarget); 
 | 
        shuttleProtocol.setXCurrent(xStart); 
 | 
        shuttleProtocol.setYStart(yStart); 
 | 
        shuttleProtocol.setYTarget(yTarget); 
 | 
        shuttleProtocol.setYCurrent(yStart); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
} 
 |