src/main/java/com/zy/asrs/controller/RgvController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/WrkMastStaController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensRgvThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/deviceOperate/rgvOperate.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -14,10 +14,12 @@ import com.zy.asrs.entity.BasRgv; import com.zy.asrs.entity.BasRgvErr; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.WrkMastSta; import com.zy.asrs.mapper.BasRgvErrMapper; import com.zy.asrs.service.BasRgvService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.WrkMastStaService; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.core.CrnThread; import com.zy.core.RgvThread; @@ -70,6 +72,8 @@ private MainServiceImpl mainService; @Autowired private LocMastService locMastService; @Autowired private WrkMastStaService wrkMastStaService; int wrkNo = 9990; @@ -441,15 +445,29 @@ if (rgvProtocol == null) { continue; } if (rgvProtocol.getTaskNo1() != 0){ WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>() .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts, create_time as createTime") .eq("wrk_No", rgvProtocol.getTaskNo1()) .orderBy("create_time", false) ); if (!Cools.isEmpty(wrkMastSta)){ vo.setWrkSts(wrkMastSta.getWrkSts()); } } vo.setStatusType(rgvProtocol.modeType.desc); // 模式状态 vo.setStatus(rgvProtocol.getStatusType1().desc); // 状态 vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 工位1任务号 vo.setRgvPos(rgvProtocol.getRgvPos()); vo.setRgvPos(rgvProtocol.getCode()); vo.setPakMk(rgvThread.isPakMk()?"无锁":"锁定"); vo.setWalkPos(rgvProtocol.getAlarm() == 0?"正常":"报警"); vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); // vo.setStaNo(rgvProtocol.getSouSta().intValue()); // vo.setSourceStaNo(rgvProtocol.getEndSta().intValue()); vo.setList32(rgvProtocol.getList32()); vo.setList33(rgvProtocol.getList33()); vo.setList34(rgvProtocol.getList34()); vo.setList35(rgvProtocol.getList35()); if (rgvProtocol.getAlarm() > 0) { BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName()); src/main/java/com/zy/asrs/controller/WrkMastStaController.java
@@ -41,6 +41,7 @@ excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} wrapper.orderBy("create_time",false); return R.ok(wrkMastStaService.selectPage(new Page<>(curr, limit), wrapper)); } src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
@@ -1,5 +1,6 @@ package com.zy.asrs.domain.vo; import com.core.common.Cools; import lombok.Data; /** @@ -54,4 +55,37 @@ private String pakMk="-"; private boolean[] list32 = new boolean[10]; private boolean[] list33 = new boolean[10]; private boolean[] list34 = new boolean[10]; private boolean[] list35 = new boolean[10]; private Integer wrkSts; public String getWrkSts$() { if (Cools.isEmpty(this.wrkSts)) { try { if (this.wrkSts==0){ return "初始"; } }catch (Exception e){ return ""; } return ""; } switch (this.wrkSts) { case 0: return "初始"; case 1: return "等待小车取"; case 2: return "等待小车放"; case 3: return "完成"; default: return ""; } } } src/main/java/com/zy/core/MainProcess.java
@@ -46,11 +46,11 @@ // mainService.getRgvTask(); // mainService.RGVDemoShow0(); // mainService.RGVDemoShow1(); mainService.RGVDemoShow2(); // mainService.RGVDemoShow2(); //任务生成 mainService.DevpTaskAndPut(); //执行小车货物搬运任务 mainService.rgvRunWrkMastFullSta(); // mainService.DevpTaskAndPut(); // //执行小车货物搬运任务 // mainService.rgvRunWrkMastFullSta(); src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -79,6 +79,8 @@ */ public Short walkPos; public Integer code; ////////////////////// 工位2定义 ////////////////////////////////////////////////// // /** // * 工位2任务号 @@ -140,6 +142,14 @@ */ public Float xDuration; public boolean[] list32 = new boolean[10]; public boolean[] list33 = new boolean[10]; public boolean[] list34 = new boolean[10]; public boolean[] list35 = new boolean[10]; public void setMode(Short mode) { this.mode = mode; this.modeType = RgvModeType.get(mode); @@ -197,17 +207,17 @@ return basRgv; } public void setxSpeed(Short xSpeed) { this.xSpeed = Float.valueOf(xSpeed); } // public void setxSpeed(Short xSpeed) { // this.xSpeed = Float.valueOf(xSpeed); // } // // public void setxDistance(Short xDistance) { // this.xDistance = Float.valueOf(xDistance); // } public void setxDistance(Short xDistance) { this.xDistance = Float.valueOf(xDistance); } public void setxDuration(Short xDuration) { this.xDuration = Float.valueOf(xDuration); } // public void setxDuration(Short xDuration) { // this.xDuration = Float.valueOf(xDuration); // } public Integer getRgvPosI(){ //需要根据现场改造 根据读到的值获取对应站点位置 src/main/java/com/zy/core/thread/SiemensRgvThread.java
@@ -142,7 +142,7 @@ } rgvProtocol.setMode((short) -1); rgvProtocol.setStatus((short)-1); rgvProtocol.setTaskNo1(0); rgvProtocol.setTaskNo1(1002); rgvProtocol.setStatus1((short)-1); rgvProtocol.setLoaded1((short)0); rgvProtocol.setWalkPos((short)0); @@ -151,11 +151,13 @@ // rgvProtocol.setStatus2((short)-1); // rgvProtocol.setLoaded2((short)0); rgvProtocol.setAlarm((short)0); rgvProtocol.setxSpeed((short) 0); rgvProtocol.setxDistance((short) 0); rgvProtocol.setxDuration((short) 0); rgvProtocol.setXSpeed(0.0F); rgvProtocol.setXDistance(0.0F); rgvProtocol.setXDuration(0.0F); rgvProtocol.setSouSta((short)0); rgvProtocol.setEndSta((short)0); rgvProtocol.setList32(new boolean[8]); rgvProtocol.setRgvPos(8000); } @Override @@ -195,14 +197,18 @@ rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6)); rgvProtocol.setRgvPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 8)); rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); // rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14)); rgvProtocol.setCode(siemensNet.getByteTransform().TransInt32(result.Content, 12)); rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 16)); rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20)); rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 20)); // rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24)); // rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26)); rgvProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 20)); rgvProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 24)); rgvProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 28)); rgvProtocol.setList32(siemensNet.getByteTransform().TransBool(result.Content, 32, 1)); rgvProtocol.setList33(siemensNet.getByteTransform().TransBool(result.Content, 33, 1)); rgvProtocol.setList34(siemensNet.getByteTransform().TransBool(result.Content, 34, 1)); rgvProtocol.setList35(siemensNet.getByteTransform().TransBool(result.Content, 35, 1)); OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -13,12 +13,44 @@ <body> <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;"> <div style="width: 100%;" class="demo-container"> <el-card class="box-card" > <div slot="header" class="clearfix"> <span>设备位置</span> </div> <el-row > <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> </el-row> <el-row type="flex" justify="center"> <el-col :span="18" > <el-slider v-model="value1" :min="min" :max="max" :format-tooltip="formatTooltip" > </el-slider> </el-col> </el-row> <el-row > <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> <el-col :span="1" :offset="13"><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> </el-row> </el-card> </div> <div style="width: 100%;"> <el-table border ref="singleTable" :data="tableData" highlight-current-row @row-click="handleRowClick" max-height="350" style="width: 100%"> <el-table-column property="rgvNo" label="RGV号"> </el-table-column> <el-table-column property="workNo1" label="工作号"> </el-table-column> <el-table-column property="wrkSts$" label="任务状态"> </el-table-column> <el-table-column property="statusType" label="模式"> </el-table-column> @@ -27,6 +59,10 @@ <el-table-column property="walkPos" label="设备状态"> </el-table-column> <el-table-column property="pakMk" label="锁定状态"> </el-table-column> <el-table-column property="warnCode" label="异常代码"> </el-table-column> <el-table-column property="alarm" label="异常描述"> </el-table-column> </el-table> </div> @@ -126,7 +162,7 @@ </el-card> </div> <div style="width: 45%;"> <el-card class="box-card"> <el-card style="width: 100%;"> <div slot="header" class="clearfix"> <span>设备状态</span> </div> @@ -135,7 +171,7 @@ <el-empty description="请选择设备"></el-empty> </div> <div v-else> <el-descriptions :title="currentTitle" direction="vertical" :column="4" border> <el-descriptions :title="currentTitle" direction="vertical" :column="8" border> <el-descriptions-item label="RGV">{{ tableData[currentIndex].rgvNo }} </el-descriptions-item> <el-descriptions-item label="工作号"> @@ -149,17 +185,67 @@ <el-tag>{{ tableData[currentIndex].status}}</el-tag> </el-descriptions-item> <el-descriptions-item label="设备状态"> <el-tag>{{ tableData[currentIndex].walkPos }}</el-tag> <el-descriptions-item label="前后极限"> {{ tableData[currentIndex].list32[0]}} </el-descriptions-item> <el-descriptions-item label="故障代码">{{ tableData[currentIndex].warnCode }} <el-descriptions-item label="货叉中位1">{{ tableData[currentIndex].list32[1]}} </el-descriptions-item> <el-descriptions-item label="故障描述">{{ tableData[currentIndex].alarm }} <el-descriptions-item label="货叉中位2">{{ tableData[currentIndex].list32[2]}} </el-descriptions-item> <!-- <el-descriptions-item label="源站">{{ tableData[currentIndex].staNo }}--> <!-- </el-descriptions-item>--> <!-- <el-descriptions-item label="目标站">{{ tableData[currentIndex].sourceStaNo }}--> <!-- </el-descriptions-item>--> <el-descriptions-item label="货叉前极限">{{ tableData[currentIndex].list32[3]}} </el-descriptions-item> <el-descriptions-item label="货叉后极限">{{ tableData[currentIndex].list32[4]}} </el-descriptions-item> <el-descriptions-item label="行走强减速">{{ tableData[currentIndex].list32[5]}} </el-descriptions-item> <el-descriptions-item label="急停">{{ tableData[currentIndex].list32[6]}} </el-descriptions-item> <el-descriptions-item label="点动前进">{{ tableData[currentIndex].list32[7]}} </el-descriptions-item> <el-descriptions-item label="点动后退">{{ tableData[currentIndex].list33[0]}} </el-descriptions-item> <el-descriptions-item label="点动左伸">{{ tableData[currentIndex].list33[1]}} </el-descriptions-item> <el-descriptions-item label="点动右伸">{{ tableData[currentIndex].list33[2]}} </el-descriptions-item> <el-descriptions-item label="本地远程">{{ tableData[currentIndex].list33[3]}} </el-descriptions-item> <el-descriptions-item label="复位">{{ tableData[currentIndex].list33[4]}} </el-descriptions-item> <el-descriptions-item label="行走抱闸">{{ tableData[currentIndex].list33[5]}} </el-descriptions-item> <el-descriptions-item label="手动顶升">{{ tableData[currentIndex].list34[0]}} </el-descriptions-item> <el-descriptions-item label="顶升上到位">{{ tableData[currentIndex].list34[1]}} </el-descriptions-item> <el-descriptions-item label="顶升下到位">{{ tableData[currentIndex].list34[2]}} </el-descriptions-item> <el-descriptions-item label="左超限">{{ tableData[currentIndex].list34[3]}} </el-descriptions-item> <el-descriptions-item label="右超限">{{ tableData[currentIndex].list34[4]}} </el-descriptions-item> <el-descriptions-item label="前凸出">{{ tableData[currentIndex].list34[5]}} </el-descriptions-item> <el-descriptions-item label="后凸出">{{ tableData[currentIndex].list34[6]}} </el-descriptions-item> <el-descriptions-item label="超高">{{ tableData[currentIndex].list34[7]}} </el-descriptions-item> <el-descriptions-item label="载货台有物">{{ tableData[currentIndex].list32[0]}} </el-descriptions-item> <el-descriptions-item label="左探货1">{{ tableData[currentIndex].list32[1]}} </el-descriptions-item> <el-descriptions-item label="左探货2">{{ tableData[currentIndex].list32[2]}} </el-descriptions-item> <el-descriptions-item label="右探货1">{{ tableData[currentIndex].list32[3]}} </el-descriptions-item> <el-descriptions-item label="右探货2">{{ tableData[currentIndex].list32[4]}} </el-descriptions-item> </el-descriptions> </div> @@ -217,7 +303,10 @@ } ], demo: 'X', rgvMode: 0 rgvMode: 0, value1:50000, min:8000, max:80000 }, created() { this.init() @@ -226,6 +315,9 @@ }, methods: { formatTooltip(){ return "RGV 1" }, staTova(sta,end){ let that = this that.$confirm('此操作存在风险,是否继续','提示',{ @@ -290,6 +382,7 @@ method: 'post', success: function (res) { that.tableData = res.data that.value1 = res.data.rgvPos } }); }, @@ -518,6 +611,32 @@ } }) </script> <style> .el-slider__bar { background-color: #e4e7ed; } .el-slider__button{ width: 30px !important; height: 30px !important; border-radius: 2px !important; /* 关键属性 */ border: 2px solid #409EFF !important; } .el-slider__runway { cursor: not-allowed !important; pointer-events: none !important; } .card-bg{ background-color: #9d9d9d; } .el-slider { transform: scaleX(-1); } /*.el-slider__button-wrapper {*/ /* transform: scaleX(-1);*/ /*}*/ </style> </body> </html>