#
lsh
2024-05-17 e4376621b9f87629004ffca35067e8dd75970a37
#
3个文件已修改
90 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/RgvController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensRgvThread.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/rgvOperate.html 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -294,6 +294,12 @@
        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();
@@ -309,6 +315,9 @@
                break;
            case 3:
                fetchPut = RgvTaskModeType.X_MOVE;
                break;
            case 4:
                fetchPut = RgvTaskModeType.FETCH_PUT;
                break;
            default:
                return false;
@@ -326,7 +335,7 @@
//        command.setDestinationStaNo2(param.getStaNo2());  // 目标站
        command.setCommand((short) 0);
        return rgvControl(command);
        return rgvControlD(command);
    }
@@ -611,4 +620,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;
    }
}
src/main/java/com/zy/core/thread/SiemensRgvThread.java
@@ -118,6 +118,10 @@
                    case 10:
                        write10((String) task.getData());
                        break;
                    //单机写入数据
                    case 11:
                        write11((RgvCommand) task.getData());
                        break;
                    default:
                        break;
                }
@@ -484,6 +488,46 @@
        }
    }
    //单步任务
    private boolean write11(RgvCommand command) throws InterruptedException {
        if (null == command) {
            log.error("RGV写入命令为空");
            return false;
        }
        String status = "";
        command.setRgvNo(slave.getId());
        short[] array = new short[2];
        array[0] = command.getSourceStaNo2();
        array[1] = command.getDestinationStaNo2();
        OperateResult result = siemensNet.Write("DB19.0", array);
        if (command.getTaskMode1().equals(RgvTaskModeType.FETCH)){
            status = "4.1";
        } else if (command.getTaskMode1().equals(RgvTaskModeType.PUT)){
            status = "4.2";
        } else if (command.getTaskMode1().equals(RgvTaskModeType.X_MOVE)){
            status = "4.0";
        } else if (command.getTaskMode1().equals(RgvTaskModeType.FETCH_PUT)){
            status = "4.3";
        } else {
            OutputQueue.RGV.offer(MessageFormat.format("【{0}】写入RGV plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [DB块:{4}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status));
            log.error("写入RGV plc数据失败 未知任务类型 ===>> [id:{}] [ip:{}] [port:{}] [DB块:{4}]", slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status);
            return false;
        }
        OperateResult result1 = siemensNet.Write("DB19."+status, true);
        if (result != null && result.IsSuccess && result1 != null && result1.IsSuccess) {
            Thread.sleep(200);
            this.readStatus();
            log.info("RGV 命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON("DB19."+status));
            OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), "DB19."+status));
            return true;
        } else {
            OutputQueue.RGV.offer(MessageFormat.format("【{0}】写入RGV plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [DB块:{4}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status));
            log.error("写入RGV plc数据失败 ===>> [id:{}] [ip:{}] [port:{}] [DB块:{4}]", slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status);
            return false;
        }
    }
    @Override
    public void close() {
        siemensNet.ConnectClose();
src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -64,7 +64,8 @@
                                <el-form-item label="启动">
                                    <el-button @click="initiateD(1)" type="warning">取货</el-button>
                                    <el-button @click="initiateD(2)" type="warning">放货</el-button>
                                    <el-button @click="initiateD(3)" type="warning">XY移动</el-button>
                                    <el-button @click="initiateD(3)" type="warning">X移动</el-button>
                                    <el-button @click="initiateD(4)" type="warning">搬运</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
@@ -346,6 +347,8 @@
                        urlS = "/rgv/operator/single/step/two/put";
                    }else if (method === 3){
                        urlS = "/rgv/operator/single/step/three/put";
                    }else if (method === 4){
                        urlS = "/rgv/operator/single/step/four/put";
                    }
                    let that = this
                    that.$confirm('此操作存在风险,是否继续','提示',{