| | |
| | | // 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); |
| | |
| | | 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"); |
| | |
| | | private String modeColor; |
| | | |
| | | private String statusColor; |
| | | |
| | | private int animation = 0;//光效 |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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: |
| | |
| | | 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; |
| | | } |
| | |
| | | |
| | | } |
| | | 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}, |
| | | }; |
| | | |
| | |
| | | private boolean resetFlag2 = false; |
| | | private boolean connectRgv = false; |
| | | private boolean alarmChangeSign = false; |
| | | private int rgvIII = 1; |
| | | |
| | | public RgvThread(RgvSlave slave) { |
| | | this.slave = slave; |
| | |
| | | @Override |
| | | @SuppressWarnings("InfiniteLoopStatement") |
| | | public void run() { |
| | | rgvIII = this.slave.getId(); |
| | | connectRgv = this.connect(); |
| | | while(!connectRgv){ |
| | | try { |
| | |
| | | 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() { |
| | |
| | | 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())); |
| | | |
| | | |
| | |
| | | /* 3D效果 */ |
| | | transform: translateZ(0); |
| | | border: 10px solid rgba(255, 255, 255, 0.8); |
| | | /* 添加流光动画 */ |
| | | animation: pulse 2s infinite; |
| | | } |
| | | |
| | | @keyframes pulse { |
| | |
| | | <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> |
| | | |