*
lsh
2025-06-06 3951add7a40f76bb403ead8c0acffb970d1bfa5c
src/main/java/com/zy/core/thread/RgvThread.java
@@ -8,7 +8,9 @@
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.BasRgvErrLog;
import com.zy.asrs.entity.BasRgvOpt;
import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.utils.NumUtils;
@@ -29,6 +31,7 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
/**
@@ -51,6 +54,7 @@
     */
    private boolean resetFlag2 = false;
    private boolean connectRgv = false;
    private boolean alarmChangeSign = false;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -107,7 +111,9 @@
                        break;
                    //工位1写入数据
                    case 2:
                        write((RgvCommand) task.getData());
                        RgvCommand command2 = (RgvCommand) task.getData();
                        rgvOpt(command2);
                        write(command2);
                        break;
                    // 复位
                    case 3:
@@ -121,25 +127,14 @@
                        command.setTaskMode1(RgvTaskModeType.NONE); // 任务模式
                        command.setSourceStaNo1((short)0);     // 源站
                        command.setDestinationStaNo1((short)0);     // 目标站
                        rgvOpt(command);
                        write3(command);
                        break;
                    // 复位
                    case 4:
                        RgvCommand command4 = (RgvCommand) task.getData();
                        if (null == command4) {
                            command4 = new RgvCommand();
                        }
                        command4.setRgvNo(slave.getId()); // RGV编号
                        command4.setTaskNo1((short) 0); // 工作号
                        command4.setAckFinish1((short) 1);  // 任务完成确认位
                        command4.setTaskMode1(RgvTaskModeType.X_MOVE); // 任务模式
                        command4.setSourceStaNo1((short)0);     // 源站
                        command4.setDestinationStaNo1((short)0);     // 目标站
                        write3(command4);
                        break;
                    // 漫游
                    case 5:
                        write5((Long) task.getData());
                        Long aLong = (Long) task.getData();
                        rgvOpt(aLong);
                        write5(aLong);
                        break;
                    default:
                        break;
@@ -279,6 +274,7 @@
                        alarmList.add(alarmCount);
                    }
                }
                alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList()));
                rgvProtocol.setAlarmList(alarmList);
//                rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000));
@@ -295,6 +291,16 @@
                    if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
                        log.error("RGV plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                    }
                    try{
                        if (!alarmChangeSign && !alarmList.isEmpty()){
                            BasRgvErrLogService basRgvErrLogService = SpringUtils.getBean(BasRgvErrLogService.class);
                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(rgvProtocol.getAlarmList(), rgvProtocol.getTaskNo1(), rgvProtocol.getRgvNo());
                            basRgvErrLogService.insert(basRgvErrLog);
                        }
                    } catch (Exception e){
                        log.error("RGV异常信息保存失败!!");
                    }
                } catch (Exception ignore) {
                }
@@ -315,6 +321,24 @@
    /**
     * 工位1写入数据
     */
    private void rgvOpt(RgvCommand command) {
        try{
            BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol, command);
            basRgvOptService.insert(basRgvOpt);
        }catch (Exception e){
            log.error("RGV写入命令保存失败!!");
        }
    }
    private void rgvOpt(Long command) {
        try{
            BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol, command);
            basRgvOptService.insert(basRgvOpt);
        }catch (Exception e){
            log.error("RGV写入命令保存失败!!");
        }
    }
    private boolean write(RgvCommand command) throws InterruptedException {
        if (null == command) {
            log.error("RGV写入命令为空");