*
lsh
2025-08-19 5d1df2b22fd4e0b31f80385664393cd3d73a21ed
*
6个文件已修改
106 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/RgvController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/RingThroughParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -355,12 +355,14 @@
//            double[] doubles = Utils.RingThroughXY2(perimeter, NumUtils.GetRandomIntInRange(183));
//            double[] doubles = Utils.RingThroughXYRgv(perimeter, perimeter-rgvProtocol.RgvPos.doubleValue());
            double[] doubles = Utils.getRgvPosNew(perimeter, rgvProtocol.RgvPos.doubleValue());
//            double[] doubles = Utils.RingThroughXY2(183.0, 100*i );
            ringThroughParam.setValueX(doubles[0]);
            ringThroughParam.setValueY(doubles[1]);
            ringThroughParam.setModeColor(rgvProtocol.modeType.color);
            ringThroughParam.setStatusColor(rgvProtocol.statusType.color);
            if (rgvProtocol.getModeType() == RgvModeType.AUTO){
                ringThroughParam.setAnimation(2);
            }
            result.add(ringThroughParam);
        }
        return R.ok().add(result);
@@ -373,6 +375,9 @@
        List<RingThroughParam> result = new ArrayList<>();
        List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<>());
        for (BasDevpPosition basDevpPosition : basDevpPositions){
            if (basDevpPosition.getDevRegion() == 0){
                continue;
            }
            RingThroughParam ringThroughParam = new RingThroughParam();
            ringThroughParam.setModeColor("#FFFFFF");
src/main/java/com/zy/asrs/domain/param/RingThroughParam.java
@@ -14,4 +14,6 @@
    private String modeColor;
    private String statusColor;
    private int animation = 0;//光效
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.domain.param.RingThroughParam;
import com.zy.asrs.entity.BasDevpPosition;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.WcsDataSynchronizationParam;
@@ -14,7 +13,6 @@
import com.zy.asrs.service.OpenService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil;
import com.zy.asrs.utils.Utils;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.RgvSlave;
src/main/java/com/zy/asrs/utils/Utils.java
@@ -145,14 +145,12 @@
            case 110:
            case 111:
                rgvPosNew[0] = rgvPosNew[0] - 70;
                rgvPosNew[1] = rgvPosNew[1];
                break;
            case 112:
            case 113:
            case 114:
            case 115:
                rgvPosNew[0] = rgvPosNew[0] + 50;
                rgvPosNew[1] = rgvPosNew[1];
                break;
            case 116:
            case 117:
@@ -172,11 +170,9 @@
            case 131:
            case 132:
            case 133:
                rgvPosNew[0] = rgvPosNew[0];
                rgvPosNew[1] = rgvPosNew[1] + 50;
                break;
            case 134:
                rgvPosNew[0] = rgvPosNew[0];
                rgvPosNew[1] = rgvPosNew[1] - 70;
                break;
        }
@@ -184,48 +180,22 @@
    }
    public static double[] getRgvPosNew(double a, double b) {
        // 定义区间及对应的几何参数(新增圆弧参数)
        // 结构:{start, end, 类型, 参数...}
        // 类型说明:0-直线,1-圆弧(需要圆心坐标)
        Object[][] intervals = {
//                // 弧线区间(拐点116-115),控制点假设为(1125, 882)
//                {680103, 731550, 1115, 882, 1215, 775, 1125, 882},
                // 直线区间(0-134400)
//                {起点, 终点, 类型, x1, y1, x2, y2,
                {0.0, 120000.0, 0, 390.0, 750.0, 60.0, 750.0},
//                // 弧线区间!!!直线区间!!!
//                {120000.0, 127500.0, 2, 60.0, 750.0, 10.0, 800.0, 10.0, 750.0}, // 修正终点坐标
                {120000.0, 127500.0, 2, 60.0, 750.0, 10.0, 800.0, 60.0, 800.0}, // 修正终点坐标
//                {120000.0, 127500.0, 0, 25.0, 775.0, 45.0, 822.0},
                // 弧线区间!!!直线区间!!!
//                {127500.0, 134900.0, 2, 10.0, 800.0, 60.0, 850.0, 10.0, 850.0}, // 修正终点坐标
                {127500.0, 134900.0, 2, 10.0, 800.0, 60.0, 850.0, 60.0, 800.0}, // 修正终点坐标
//                {127500.0, 134900.0, 0, 45.0, 822.0, 65.0, 882.0},
                // 直线区间
                {134900.0, 680103.0,0, 60.0, 850.0, 1100.0, 850.0},
//                // 弧线区间(拐点116-115),控制点假设为(1125, 882)
//                {680103, 731550, 1115, 882, 1215, 775, 1125, 882},
                // 圆弧区间(拐点116-115)新参数:圆心(1115,775)
//                {680103.0, 731550.0, 2, 1100.0, 850.0, 1200.0, 750.0, 1200.0, 850.0}, // 修正终点坐标
                {680103.0, 731550.0, 2, 1100.0, 850.0, 1200.0, 750.0, 1100.0, 750.0}, // 修正终点坐标
                // 直线区间
                {120000.0, 127500.0, 2, 60.0, 750.0, 10.0, 800.0, 60.0, 800.0}, // 修正终点坐标
                {127500.0, 134900.0, 2, 10.0, 800.0, 60.0, 850.0, 60.0, 800.0},
                {134900.0, 680103.0,0, 60.0, 850.0, 1100.0, 850.0},
                {680103.0, 731550.0, 2, 1100.0, 850.0, 1200.0, 750.0, 1100.0, 750.0},
                {731550.0, 972950.0,0, 1200.0, 750.0, 1200.0, 100.0},
                // 弧线区间(拐点112-顶点),控制点假设为(1215, 80)!!!直线区间!!!
//                {972950.0, 1016193.0, 2, 1200.0, 100.0, 1150.0, 50.0, 1200.0, 50.0}, // 修正终点坐标
                {972950.0, 1016193.0, 2, 1200.0, 100.0, 1150.0, 50.0, 1150.0, 100.0}, // 修正终点坐标
//                {972950.0, 1016193.0,0, 1215.0, 125.0, 1164.0, 80.0},
                // 弧线区间(拐点-顶点-111),控制点假设为(1164, 125)!!!直线区间!!!
//                {1016193.0, 1063563.0, 2, 1150.0, 50.0, 1100.0, 100.0, 1100.0, 50.0}, // 修正终点坐标
                {1016193.0, 1063563.0, 2, 1150.0, 50.0, 1100.0, 100.0, 1150.0, 100.0}, // 修正终点坐标
//                {1016193.0, 1063563.0,0, 1164.0, 80.0, 1115.0, 125.0},
                // 直线区间
                {972950.0, 1016193.0, 2, 1200.0, 100.0, 1150.0, 50.0, 1150.0, 100.0},
                {1016193.0, 1063563.0, 2, 1150.0, 50.0, 1100.0, 100.0, 1150.0, 100.0},
                {1063563.0, 1315250.0,0, 1100.0, 100.0, 1100.0, 700.0},
                // 弧线区间(拐点101-转弯),控制点假设为(1115, 750)
//                {1315250.0, 1322829.0, 2, 1100.0, 700.0, 1050.0, 750.0, 1100.0, 750.0}, // 修正终点坐标
                {1315250.0, 1322829.0, 2, 1100.0, 700.0, 1050.0, 750.0, 1050.0, 700.0}, // 修正终点坐标
//                {1315250.0, 1322829.0,0, 1115.0, 720.0, 1100.0, 750.0},
                // 直线区间
                {1315250.0, 1322829.0, 2, 1100.0, 700.0, 1050.0, 750.0, 1050.0, 700.0},
                {1322829.0, 1737000.0,0, 1050.0, 750.0, 390.0, 750.0},
        };
src/main/java/com/zy/core/thread/RgvThread.java
@@ -54,7 +54,6 @@
    private boolean resetFlag2 = false;
    private boolean connectRgv = false;
    private boolean alarmChangeSign = false;
    private int rgvIII = 1;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -63,7 +62,6 @@
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        rgvIII = this.slave.getId();
        connectRgv = this.connect();
        while(!connectRgv){
            try {
@@ -226,31 +224,19 @@
        rgvProtocol.setxDistance((short) 0);
        rgvProtocol.setxDuration((short) 0);
        log.error("连接中断:RGV号:"+slave.getId());
        try {
            // 根据实时信息更新数据库
            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
            BasRgv basRgv = new BasRgv();
            basRgv.setRgvNo(slave.getId());
            basRgv.setRgvSts((int)rgvProtocol.getMode());
            basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
            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());
            }
        } catch (Exception ignore) {
        }
    }
//    /**
//     * 初始化RGV状态
//     */
//    private void initRgv() {
//        if (null == rgvProtocol) {
//            rgvProtocol = new RgvProtocol();
//        }
//        rgvProtocol.setRgvNo(slave.getId());
//        rgvProtocol.setMode((short) 3);
//        rgvProtocol.setStatus((short)0);
//        rgvProtocol.setTaskNo1((short)0);
//        rgvProtocol.setStatus1((short)0);
//        rgvProtocol.setLoaded1((short)0);
//        rgvProtocol.setWalkPos((short)0);
//        rgvProtocol.setRgvPos(slave.getId()*100000L);
//        rgvProtocol.setTaskNo2((short)0);
//        rgvProtocol.setStatus2((short)0);
//        rgvProtocol.setLoaded2((short)0);
//        rgvProtocol.setAlarm((short)0);
//        rgvProtocol.setxSpeed((short) 0);
//        rgvProtocol.setxDistance((short) 0);
//        rgvProtocol.setxDuration((short) 0);
//    }
    @Override
    public boolean connect() {
@@ -315,12 +301,6 @@
                rgvProtocol.setAlarmList(alarmList);
//                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()));
src/main/webapp/views/index.html
@@ -84,8 +84,6 @@
            /* 3D效果 */
            transform: translateZ(0);
            border: 10px solid rgba(255, 255, 255, 0.8);
            /* 添加流光动画 */
            animation: pulse 2s infinite;
        }
        @keyframes pulse {
@@ -267,6 +265,7 @@
            <div v-for="bus in tableDataRgv" class="bus" :style="{
                top: convertToCSSPositionWithOffset(bus.valueX, bus.valueY).y + 'px',
                left: convertToCSSPositionWithOffset(bus.valueX, bus.valueY).x + 'px',
                animation: 'pulse ' +  bus.animation + 's infinite',
                borderColor: bus.modeColor, backgroundColor: bus.statusColor}">{{ bus.index }}
            </div>