#
zjj
5 天以前 fccf8364364c36d15de26aa699f91228a74b6e10
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -14,10 +14,12 @@
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvErr;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastSta;
import com.zy.asrs.mapper.BasRgvErrMapper;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.WrkMastStaService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.core.CrnThread;
import com.zy.core.RgvThread;
@@ -70,6 +72,8 @@
    private MainServiceImpl mainService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WrkMastStaService wrkMastStaService;
    int wrkNo = 9990;
@@ -104,17 +108,27 @@
    @GetMapping("/demo/status")
    public R demoStatus(Integer rgvNo){
        Map<String,Object> map = new HashMap<>();
        if (Cools.isEmpty(rgvNo)){
            return R.ok("X");
            map.put("demo","X");
            map.put("rgvMode",0);
            return R.ok().add(map);
        }
        String demo = "X";
        Integer rgvMode = 0;
//        List<Map<String, Object>> res = new ArrayList<>();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            if (rgvSlave.getId() == rgvNo){
            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvSlave.getId().equals(rgvNo)){
               demo = rgvSlave.getDemo()?"Y":"N";
               rgvSlave.setRgvMode(rgvProtocol.getMode().intValue());
               rgvMode = rgvProtocol.getMode().intValue();
            }
        }
        return R.ok(demo);
        map.put("demo",demo);
        map.put("rgvMode",rgvMode);
        return R.ok().add(map);
    }
    @GetMapping("/demo/status/true")
@@ -124,7 +138,7 @@
        }
//        List<Map<String, Object>> res = new ArrayList<>();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            if (rgvSlave.getId() == rgvNo){
            if (rgvSlave.getId().equals(rgvNo)){
                rgvSlave.setDemo(true);
            }
        }
@@ -137,9 +151,90 @@
        }
//        List<Map<String, Object>> res = new ArrayList<>();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            if (rgvSlave.getId() == rgvNo){
            if (rgvSlave.getId().equals(rgvNo)){
                rgvSlave.setDemo(false);
            }
        }
        return R.ok();
    }
    @GetMapping("/demo/status/rgvStatus")
    public R demoStatusTrue1(Integer rgvNo,Integer status){
        if (Cools.isEmpty(rgvNo)){
            return R.error("请选择rgv");
        }
        if (Cools.isEmpty(status)){
            return R.error("选择按钮有误");
        }
//        List<Map<String, Object>> res = new ArrayList<>();
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            // 获取RGV信息
            SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
            if (rgvThread == null) {
                throw new CoolException("RGV不在线");
            }
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                throw new CoolException("RGV不在线");
            }
            String DB = "";
            if (rgvSlave.getId().equals(rgvNo)){
               switch (status){
                   case 5://强制启动
                       DB="4.4";
                       break;
//                   case 6://复位信号
//                       DB="4.5";
//                       break;
                   case 7://报警消音
                       DB="4.6";
                       break;
                   case 8://启动
                       DB="4.7";
                       break;
                   case 9://停止
                       DB="5.0";
                       break;
                   case 10://急停
                       DB="5.1";
                       break;
                   case 11://复位按钮
                       DB="5.2";
                       break;
                   case 12://手动
                       DB="5.3";
                       rgvSlave.setRgvMode(3);
                       break;
                   case 13://手动定位
                       DB="5.4";
                       break;
                   case 14://单机
                       DB="5.5";
                       rgvSlave.setRgvMode(2);
                       break;
                   case 15://联机
                       DB="5.6";
                       rgvSlave.setRgvMode(1);
                       break;
                   case 16://货叉定位回中
                       DB="5.7";
                       break;
                   case 17://恢复联机任务
                       DB="6.0";
                       break;
                   case 18://清楚联机任务
                       DB="6.1";
                       break;
                   default:
                       return R.error("按钮不存在????!!!");
               }
               if (MessageQueue.offer(SlaveType.Rgv, rgvNo, new Task(10, DB))) {
                   return R.ok();
               } else {
                   return R.error("命令下发失败");
               }
            }
        }
        return R.ok();
    }
@@ -188,6 +283,68 @@
        return rgvControl(command)? R.ok(): R.error();
    }
    @ManagerAuth(memo = "取")
    @PostMapping("/operator/single/step/one/put")
    public R rgvFetchSingleStepOnePut(RgvOperatorParam param){
        return rgvFetchSingleStepPut(param,1)?R.ok():R.error();
    }
    @ManagerAuth(memo = "放")
    @PostMapping("/operator/single/step/two/put")
    public R rgvFetchSingleStepTwoPut(RgvOperatorParam param){
        return rgvFetchSingleStepPut(param,2)?R.ok():R.error();
    }
    @ManagerAuth(memo = "X运行")
    @PostMapping("/operator/single/step/three/put")
    public R rgvFetchSingleStepThreePut(RgvOperatorParam param){
        return rgvFetchSingleStepPut(param,3)?R.ok():R.error();
    }
    @ManagerAuth(memo = "取放")
    @PostMapping("/operator/single/step/four/put")
    public R rgvFetchSingleStepFourPut(RgvOperatorParam param){
        return rgvFetchSingleStepPut(param,4)?R.ok():R.error();
    }
    public boolean rgvFetchSingleStepPut(RgvOperatorParam param ,Integer type){
        wrkNo++;
        RgvCommand command = new RgvCommand();
        RgvTaskModeType fetchPut = RgvTaskModeType.NONE;
        switch (type){
            case 1:
                fetchPut = RgvTaskModeType.FETCH;
                param.setSourceBay(0);
                break;
            case 2:
                fetchPut = RgvTaskModeType.PUT;
                param.setSourceRow(0);
                break;
            case 3:
                fetchPut = RgvTaskModeType.X_MOVE;
                break;
            case 4:
                fetchPut = RgvTaskModeType.FETCH_PUT;
                break;
            default:
                return false;
        }
        command.setRgvNo(param.getRgvNo()); // RGV编号
        command.setAckFinish1(false);  // 任务完成确认位
        command.setTaskNo1(wrkNo); // 工作号
        command.setTaskMode1(fetchPut); // 任务模式: 取放货
        command.setSourceStaNo1(param.getSourceRow().shortValue()); // 源站
        command.setDestinationStaNo1(param.getSourceBay().shortValue());  // 目标站
//        command.setAckFinish2((short) 0);  // 任务完成确认位
//        command.setTaskNo2((short) 0); // 工作号
//        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
//        command.setSourceStaNo2(param.getSourceStaNo2()); // 源站
//        command.setDestinationStaNo2(param.getStaNo2());  // 目标站
        command.setCommand((short) 0);
        return rgvControlD(command);
    }
    @ManagerAuth(memo = "复位")
    @PostMapping("/operator/reset")
@@ -288,15 +445,29 @@
            if (rgvProtocol == null) {
                continue;
            }
            if (rgvProtocol.getTaskNo1() != 0){
                WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
                        .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts, create_time as createTime")
                        .eq("wrk_No", rgvProtocol.getTaskNo1())
                        .orderBy("create_time", false)
                );
                if (!Cools.isEmpty(wrkMastSta)){
                    vo.setWrkSts(wrkMastSta.getWrkSts());
                }
            }
            vo.setStatusType(rgvProtocol.modeType.desc);   //  模式状态
            vo.setStatus(rgvProtocol.getStatusType1().desc);     //  状态
            vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  工位1任务号
            vo.setRgvPos(rgvProtocol.getRgvPos());
            vo.setRgvPos(rgvProtocol.getCode());
            vo.setPakMk(rgvThread.isPakMk()?"无锁":"锁定");
            vo.setWalkPos(rgvProtocol.getAlarm() == 0?"正常":"报警");
            vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
//            vo.setStaNo(rgvProtocol.getSouSta().intValue());
//            vo.setSourceStaNo(rgvProtocol.getEndSta().intValue());
            vo.setList32(rgvProtocol.getList32());
            vo.setList33(rgvProtocol.getList33());
            vo.setList34(rgvProtocol.getList34());
            vo.setList35(rgvProtocol.getList35());
            if (rgvProtocol.getAlarm() > 0) {
                BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName());
@@ -470,4 +641,34 @@
        return false;
    }
    private boolean rgvControlD(RgvCommand command){
        if (command.getRgvNo() == null) {
            throw new CoolException("请选择RGV");
        }
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            // 获取RGV信息
            if (command.getRgvNo().equals(rgv.getId())) {
//                SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
//                if (rgvThread == null) {
//                    throw new CoolException("RGV不在线");
//                }
//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
//                if (rgvProtocol == null) {
//                    throw new CoolException("RGV不在线");
//                }
                try{
                    if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(11, command))) {
                        return true;
                    } else {
                        throw new CoolException("命令下发失败");
                    }
                }catch (Exception e){
                    log.error("单步任务下发失败,异常:"+e);
                    throw new CoolException("命令下发失败");
                }
            }
        }
        return false;
    }
}