#
zjj
2024-03-21 a519e1aa12852e5a6d53a8e1b9bbc095391e2415
#
5个文件已修改
183 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/RgvController.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/RgvCommand.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensRgvThread.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/rgvOperate.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -5,6 +5,7 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.RgvStatusType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.domain.param.RgvOperatorParam;
import com.zy.asrs.domain.vo.RgvMsgTableVo;
import com.zy.asrs.domain.vo.RgvStateTableVo;
@@ -16,15 +17,19 @@
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvTaskModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.RgvSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.SiemensRgvThread;
@@ -58,6 +63,52 @@
    private MainServiceImpl mainService;
    @Autowired
    private LocMastService locMastService;
    @ManagerAuth(memo = "复位")
    @PostMapping("/rgv/operator/reset")
    public R crnReset(RgvOperatorParam param){
        // 系统运行状态判断
//        if (SystemProperties.WCS_RUNNING_STATUS.get()) {
//            return R.error("wcs系统状态为开启");
//        }
        short[] array = new short[9];
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // 堆垛机编号
        command.setReset(true);
        return rgvControl(command)?R.ok():R.error();
    }
    private boolean rgvControl(CrnCommand command){
        if (command.getCrnNo() == null) {
            throw new CoolException("请选择RGV");
        }
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            // 获取堆垛机信息
            if (command.getCrnNo().equals(rgv.getId())) {
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
                if (crnThread == null) {
                    throw new CoolException("RGV不在线");
                }
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                    throw new CoolException("RGV不在线");
                }
                // 空闲判断
//                if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) {
                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) {
                    return true;
                } else {
                    throw new CoolException("命令下发失败");
                }
//                } else {
//                    throw new CoolException("堆垛机不在空闲状态");
//                }
            }
        }
        return false;
    }
    @PostMapping("/table/rgv/state")
    @ManagerAuth(memo = "RGV信息表")
@@ -157,65 +208,8 @@
    /************************** 手动操作 ******************************/
    /****************************************************************/
    @ManagerAuth(memo = "取放货")
    @PostMapping("/operator/put")
    public R rgvFetchPut(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // RGV编号
        command.setAckFinish1((short) 0);  // 任务完成确认位
        command.setTaskNo1((short) 0); // 工作号
        command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
        command.setSourceStaNo1(param.getSourceStaNo1()); // 源站
        command.setDestinationStaNo1(param.getStaNo1());  // 目标站
//        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 rgvControl(command)? R.ok(): R.error();
    }
    @ManagerAuth(memo = "取货")
    @PostMapping("/operator/take")
    public R rgvFetch(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // RGV编号
        command.setAckFinish1((short) 0);  // 任务完成确认位
        command.setTaskNo1((short) 0); // 工作号
        command.setTaskMode1(RgvTaskModeType.FETCH); // 任务模式: 取货
        command.setSourceStaNo1(param.getSourceStaNo1()); // 源站
        command.setDestinationStaNo1(param.getStaNo1());  // 目标站
        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 rgvControl(command)? R.ok(): R.error();
    }
    @ManagerAuth(memo = "放货")
    @PostMapping("/operator/stockMove")
    public R rgvPut(RgvOperatorParam param){
        RgvCommand command = new RgvCommand();
        command.setRgvNo(param.getRgvNo()); // RGV编号
        command.setAckFinish1((short) 0);  // 任务完成确认位
        command.setTaskNo1((short) 0); // 工作号
        command.setTaskMode1(RgvTaskModeType.PUT); // 任务模式: 放货
        command.setSourceStaNo1(param.getSourceStaNo1()); // 源站
        command.setDestinationStaNo1(param.getStaNo1());  // 目标站
        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 rgvControl(command)? R.ok(): R.error();
    }
    @ManagerAuth(memo = "任务完成")
    @PostMapping("/operator/taskComplete")
src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java
@@ -11,15 +11,8 @@
    // RGV号
    private Integer rgvNo;
    // 工位1源站
    private Short sourceStaNo1;
    // 工位1目标站
    private Short staNo1;
    // 工位2源站
    private Short sourceStaNo2;
    // 工位2目标站
    private Short staNo2;
    private boolean auto;
    private boolean restoreTask;
    private boolean compTask;
    private boolean reset;
}
src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -84,6 +84,12 @@
     */
    private Short command = 0;
    private boolean auto;
    private boolean restoreTask;
    private boolean compTask;
    private boolean reset;
    private boolean stop;
    public void setTaskMode1(Short taskMode1){
        this.taskMode1 = taskMode1;
        this.taskModeType1 = RgvTaskModeType.get(taskModeType1);
src/main/java/com/zy/core/thread/SiemensRgvThread.java
@@ -67,9 +67,9 @@
                        readStatus();
                        break;
//                    // 工位1、2写入数据
//                    case 2:
//                        write((RgvCommand) task.getData());
//                        break;
                    case 2:
                        write((RgvCommand) task.getData());
                        break;
                    //工位1写入数据
                    case 4:
                        write1((RgvCommand) task.getData());
@@ -249,25 +249,23 @@
            return false;
        }
//        convertRow(command);
        command.setRgvNo(slave.getId());
        short[] array = new short[11];
        array[0] = command.getAckFinish1();
        array[1] = command.getTaskNo1();
        array[2] = command.getTaskMode1();
        array[3] = command.getSourceStaNo1();
        array[4] = command.getDestinationStaNo1();
//        array[0] = command.getAckFinish1();
//        array[1] = command.getTaskNo1();
//        array[2] = command.getTaskMode1();
//        array[3] = command.getSourceStaNo1();
//        array[4] = command.getDestinationStaNo1();
//        array[5] = command.getAckFinish2();
//        array[6] = command.getTaskNo2();
//        array[7] = command.getTaskMode2();
//        array[8] = command.getSourceStaNo2();
//        array[9] = command.getDestinationStaNo2();
//        array[10] = command.getCommand();
        OperateResult result = siemensNet.Write("DB100.0", array);
        OperateResult result = new OperateResult();
        boolean[] array = new boolean[1];
        array[0] = true;
        if (command.isAuto()){
            result = siemensNet.Write("DB99.0.1", array);
        } else if (command.isRestoreTask()) {
            result = siemensNet.Write("DB99.0.2", array);
        }
        else if (command.isCompTask()) {
            result = siemensNet.Write("DB99.0.3", array);
        }
        else if (command.isStop()) {
            result = siemensNet.Write("DB99.0.4", array);
        }
        else if (command.isReset()) {
            result = siemensNet.Write("DB99.0.5", array);
        }
//        if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) {
//            short commandFinish = 3;  //工位1、2任务同时写入
src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -53,14 +53,12 @@
                        <div>
                            <el-button @click="requestOperate('auto')" type="warning">联机</el-button>
                            <el-button @click="requestOperate('semiAutomatic')" type="warning">半自动</el-button>
                            <el-button @click="requestOperate('hand')" type="warning">手动</el-button>
                            <el-button @click="requestOperate('onlineWrk4')" type="warning">恢复联机任务</el-button>
                            <el-button @click="requestOperate('onlineWrk3')" type="warning">清除联机任务</el-button>
                            <el-button @click="requestOperate('onlineWrk1')" type="warning">申请完成任务</el-button>
                            <el-button @click="requestOperate('restoreTask')" type="warning">恢复联机任务</el-button>
                            <el-button @click="requestOperate('compTask')" type="warning">强制完成任务</el-button>
                            <br/>
                            <br/>
                            <el-button @click="requestOperate('onlineWrk2')" type="warning">申请取消任务</el-button>
                            <el-button @click="requestOperate('stop')" type="warning">远程急停</el-button>
                            <el-button @click="requestOperate('reset')" type="warning">系统复位</el-button>
                        </div>
                    </div>
                </el-card>
@@ -195,7 +193,7 @@
                        type: 'warning'
                    }).then(()=>{
                        $.ajax({
                            url: baseUrl + "/crn/operator/" + method,
                            url: baseUrl + "/rgv/operator/" + method,
                            headers: {
                                'token': localStorage.getItem('token')
                            },