*
lsh
2025-08-18 16425e5c62f3e65a0e529d7c0ab851fa49b88ef0
src/main/java/com/zy/core/thread/RgvThread.java
@@ -13,6 +13,7 @@
import com.zy.asrs.service.BasRgvErrLogService;
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.utils.NumUtils;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
@@ -53,6 +54,7 @@
    private boolean resetFlag2 = false;
    private boolean connectRgv = false;
    private boolean alarmChangeSign = false;
    private int rgvIII = 1;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -61,6 +63,7 @@
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        rgvIII = this.slave.getId();
        connectRgv = this.connect();
        while(!connectRgv){
            try {
@@ -222,6 +225,7 @@
        rgvProtocol.setxSpeed((short) 0);
        rgvProtocol.setxDistance((short) 0);
        rgvProtocol.setxDuration((short) 0);
        log.error("连接中断:RGV号:"+slave.getId());
    }
//    /**
@@ -295,7 +299,7 @@
                    rgvProtocol.setRgvPos((long)poi);
                    rgvProtocol.setRgvPosInt(poi);
                }
                System.out.println(rgvProtocol.getRgvNo()+"号小车读取定位值:"+poi);
                log.info(rgvProtocol.getRgvNo()+"号小车读取定位值:"+poi);
                rgvProtocol.setInstantaneousSpeed(Double.valueOf(siemensNet.getByteTransform().TransInt16(resultV.Content, 0)));
                rgvProtocol.setEndStaM(siemensNet.getByteTransform().TransInt16(resultE.Content, 0));
                boolean[] statusAlarmList = siemensNet.getByteTransform().TransBool(resultError.Content, 0, 13);
@@ -310,7 +314,13 @@
                alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList()));
                rgvProtocol.setAlarmList(alarmList);
//                rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000));
//                rgvProtocol.setRgvPos((long) NumUtils.GetRandomIntInRange(1737000));
                rgvProtocol.setRgvPos((long) (10000*rgvIII+rgvProtocol.getRgvNo()*10000));
                if (rgvProtocol.getRgvPos()>1737000){
                    rgvIII = rgvProtocol.getRgvNo();
                    rgvProtocol.setRgvPos((long) (10000*rgvIII+rgvProtocol.getRgvNo()*10000));
                }
                rgvIII++;
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -357,7 +367,8 @@
    private void rgvOpt(RgvCommand command) {
        try{
            BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosI(), command);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosInt(), command);
            log.info(rgvProtocol.getRgvNo()+"号小车写入命令定位值:"+rgvProtocol.getRgvPosInt());
            basRgvOptService.insert(basRgvOpt);
        }catch (Exception e){
            log.error("RGV写入命令保存失败!!");