| src/main/java/com/zy/core/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/model/param/GetFakeThreadStatusParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/model/param/UpdateFakeThreadStatusParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/FakeThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/fake/FakeZyForkLiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/core/controller/OpenController.java
@@ -1,10 +1,14 @@ package com.zy.core.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.zy.common.R; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.param.AddFakeDeviceParam; import com.zy.core.model.param.DeleteDeviceParam; import com.zy.core.model.param.GetFakeThreadStatusParam; import com.zy.core.model.param.UpdateFakeThreadStatusParam; import com.zy.core.properties.DeviceConfig; import com.zy.core.thread.FakeThread; import com.zy.core.thread.ForkLiftThread; @@ -18,6 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @RestController @RequestMapping("/open") @@ -41,8 +46,51 @@ return R.ok().add(map); } @GetMapping("/getFakeThreadList") public R getFakeThreadList() { @PostMapping("/updateFakeThreadStatus") public R updateFakeThreadStatus(@RequestBody UpdateFakeThreadStatusParam param) { FakeThread fakeThread = null; if (param.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) { fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1); } else if (param.getDeviceType().equals(String.valueOf(SlaveType.ForkLift))) { fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1); } if (fakeThread == null) { return R.error("找不到设备线程"); } boolean result = fakeThread.updateFakeStatus(param); if (result) { return R.ok(); } return R.error("更新失败"); } @PostMapping("/getFakeThreadStatus") public R getFakeThreadStatus(@RequestBody GetFakeThreadStatusParam param) { FakeThread fakeThread = null; if (param.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) { fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1); } else if (param.getDeviceType().equals(String.valueOf(SlaveType.ForkLift))) { fakeThread = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1); } if (fakeThread == null) { return R.error("找不到设备线程"); } ConcurrentHashMap<String, JSONObject> fakeStatusMap = fakeThread.getFakeStatusMap(); String key = param.getDeviceType() + param.getDeviceNo(); JSONObject result = fakeStatusMap.get(key); if (result == null) { return R.error("数据不存在"); } return R.ok().add(result); } @GetMapping("/getFakeThreadStatusList") public R getFakeThreadStatusList() { FakeThread fakeThread1 = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 1); FakeThread fakeThread2 = (FakeThread) SlaveConnection.get(SlaveType.FakeThread, 2); src/main/java/com/zy/core/model/param/GetFakeThreadStatusParam.java
New file @@ -0,0 +1,13 @@ package com.zy.core.model.param; import lombok.Data; @Data public class GetFakeThreadStatusParam { private Integer deviceNo; private String deviceType; } src/main/java/com/zy/core/model/param/UpdateFakeThreadStatusParam.java
New file @@ -0,0 +1,15 @@ package com.zy.core.model.param; import lombok.Data; @Data public class UpdateFakeThreadStatusParam { private Integer deviceNo; private String deviceType; private String data; } src/main/java/com/zy/core/thread/FakeThread.java
@@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.zy.core.ThreadHandler; import com.zy.core.model.param.UpdateFakeThreadStatusParam; import java.util.concurrent.ConcurrentHashMap; @@ -13,4 +14,6 @@ ConcurrentHashMap<String, JSONObject> getFakeCommandMap(); boolean updateFakeStatus(UpdateFakeThreadStatusParam param); } src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
@@ -3,11 +3,13 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.zy.common.Cools; import com.zy.common.R; import com.zy.common.SpringUtils; import com.zy.common.utils.RedisUtil; import com.zy.core.News; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.param.UpdateFakeThreadStatusParam; import com.zy.core.properties.DeviceConfig; import com.zy.core.thread.FakeThread; import com.zy.core.thread.impl.NyShuttleThread; @@ -334,6 +336,15 @@ String pathList = body.getString("path"); List<JSONObject> list = JSON.parseArray(pathList, JSONObject.class); for (JSONObject path : list) { while (true) { JSONObject realFakeStatus = fakeStatusMap.get(key); Integer errorCode = realFakeStatus.getInteger("errorCode"); if (errorCode > 0) { continue; } break; } String currentCode = fakeStatus.getString("currentCode"); JSONObject point = JSON.parseObject(currentCode); point.put("x", path.getInteger("xp")); @@ -529,4 +540,17 @@ public ConcurrentHashMap<String, JSONObject> getFakeCommandMap() { return this.fakeCommandMap; } @Override public boolean updateFakeStatus(UpdateFakeThreadStatusParam param) { String key = param.getDeviceType() + param.getDeviceNo(); JSONObject result = fakeStatusMap.get(key); if (result == null) { return false; } JSONObject newData = JSON.parseObject(param.getData()); this.fakeStatusMap.put(key, newData); return true; } } src/main/java/com/zy/core/thread/fake/FakeZyForkLiftThread.java
@@ -11,6 +11,7 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.DeviceCommandMsgModel; import com.zy.core.model.DeviceMsgModel; import com.zy.core.model.param.UpdateFakeThreadStatusParam; import com.zy.core.properties.DeviceConfig; import com.zy.core.thread.FakeThread; import com.zy.core.thread.impl.ZyForkLiftThread; @@ -376,4 +377,17 @@ public ConcurrentHashMap<String, JSONObject> getFakeCommandMap() { return this.fakeCommandMap; } @Override public boolean updateFakeStatus(UpdateFakeThreadStatusParam param) { String key = param.getDeviceType() + param.getDeviceNo(); JSONObject result = fakeStatusMap.get(key); if (result == null) { return false; } JSONObject newData = JSON.parseObject(param.getData()); this.fakeStatusMap.put(key, newData); return true; } } src/main/webapp/views/index.html
@@ -18,19 +18,20 @@ <body> <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;"> <div style="width: 50%;"> <div style="width: 40%;"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>模拟设备 - {{ systemInfo.gatewayId }}号网关</span> <el-button style="float: right; padding: 3px 0" type="text" @click="addDeviceVisible = true">添加设备</el-button> <!-- <el-button style="float: right; padding: 3px 0" type="text" @click="addDeviceVisible = true">添加设备</el-button>--> </div> <div style="display: flex;flex-wrap: wrap;justify-content: space-between;"> <div v-for="item in deviceList" style="width: 49%;margin-top: 20px"> <el-card class="box-card"> <el-card class="box-card" > <div slot="header" class="clearfix"> <span>{{ item.deviceType }} - {{ item.deviceNo }}</span> <el-button style="float: right; padding: 3px 0" type="text" @click="delDevice(item)">删除设备</el-button> <!-- <el-button style="float: right; padding: 3px 0" type="text" @click="delDevice(item)">删除设备</el-button>--> <el-button style="float: right; padding: 3px 0" type="text" @click="setCurrentDeviceConfig(item)">状态</el-button> </div> <div> @@ -45,6 +46,58 @@ </el-card> </div> <div v-if="currentDeviceConfig != null" style="width: 30%;margin-left: 30px;"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>模拟设备状态</span> </div> <div style="display: flex;flex-wrap: wrap;justify-content: space-between;"> <div v-if="currentDeviceData != null" style="width: 100%;margin-top: 20px"> <el-card class="box-card" > <div slot="header" class="clearfix"> <span>{{ currentDeviceData.deviceType }} - {{ currentDeviceData.deviceNo }}</span> <el-button v-if="currentDeviceDataForm == null" style="float: right; padding: 3px 0" type="text" @click="updateCurrentDeviceStatus(currentDeviceData)">更新状态</el-button> <el-button v-else style="float: right; padding: 3px 0" type="text" @click="submitUpdateCurrentDeviceStatus(currentDeviceDataForm)">提交更新</el-button> </div> <div v-if="currentDeviceDataForm == null"> <div>模式: {{ currentDeviceData.data.mode }}</div> <div>状态: {{ currentDeviceData.data.deviceStatus }}</div> <div>顶升: {{ currentDeviceData.data.hasLift }}</div> <div>托盘: {{ currentDeviceData.data.hasPallet }}</div> <div>坐标: {{ currentDeviceData.data.currentCode }}</div> <div>异常: {{ currentDeviceData.data.errorCode }}</div> <div>充电: {{ currentDeviceData.data.hasCharge }}</div> <div>电量: {{ currentDeviceData.data.batteryPower }}</div> <div>电压: {{ currentDeviceData.data.batteryVoltage }}</div> <div>运行方向: {{ currentDeviceData.data.runDirection }}</div> <div>速度: {{ currentDeviceData.data.speed }}</div> </div> <div v-else> <div>模式: <el-input v-model="currentDeviceDataForm.data.mode"></el-input></div> <div>状态: <el-input v-model="currentDeviceDataForm.data.deviceStatus"></el-input></div> <div>顶升: <el-input v-model="currentDeviceDataForm.data.hasLift"></el-input></div> <div>托盘: <el-input v-model="currentDeviceDataForm.data.hasPallet"></el-input></div> <div>坐标: <el-input v-model="currentDeviceDataForm.data.currentCode"></el-input></div> <div>异常: <el-input v-model="currentDeviceDataForm.data.errorCode"></el-input></div> <div>充电: <el-input v-model="currentDeviceDataForm.data.hasCharge"></el-input></div> <div>电量: <el-input v-model="currentDeviceDataForm.data.batteryPower"></el-input></div> <div>电压: <el-input v-model="currentDeviceDataForm.data.batteryVoltage"></el-input></div> <div>运行方向: <el-input v-model="currentDeviceDataForm.data.runDirection"></el-input></div> <div>速度: <el-input v-model="currentDeviceDataForm.data.speed"></el-input></div> </div> <div> 原始数据: {{ currentDeviceData }} </div> </el-card> </div> </div> </el-card> </div> <el-dialog title="添加模拟设备" :visible.sync="addDeviceVisible"> <el-form :model="addDeviceParam"> @@ -88,7 +141,10 @@ gatewayPort: 0 }, formLabelWidth: '120px', deviceList: [] deviceList: [], currentDeviceConfig: null, currentDeviceData: null, currentDeviceDataForm: null }, created() { this.init() @@ -99,7 +155,8 @@ setInterval(() => { this.getDeviceList() }, 100); this.getFakeThreadStatus() }, 1000); }, getSystemInfo() { let that = this; @@ -125,6 +182,86 @@ } }); }, setCurrentDeviceConfig(deviceConfig) { this.currentDeviceConfig = deviceConfig this.currentDeviceDataForm = null; }, updateCurrentDeviceStatus(currentDeviceData) { if (this.currentDeviceDataForm == null) { this.currentDeviceDataForm = currentDeviceData; }else { this.currentDeviceDataForm = null; } }, submitUpdateCurrentDeviceStatus(currentDeviceDataForm) { let that = this; $.ajax({ url: baseUrl + "/open/updateFakeThreadStatus", headers: { 'token': localStorage.getItem('token') }, data: JSON.stringify({ deviceType: currentDeviceDataForm.deviceType, deviceNo: currentDeviceDataForm.deviceNo, data: JSON.stringify(currentDeviceDataForm.data) }), dataType: 'json', contentType: 'application/json;charset=UTF-8', method: 'POST', success: function (res) { if (res.code == 200) { that.currentDeviceDataForm = null; that.$message({ message: res.msg, type: 'success' }); } else { that.$message({ message: res.msg, type: 'error' }); } } }); }, getFakeThreadStatus() { let that = this; if (this.currentDeviceConfig == null) { return; } $.ajax({ url: baseUrl + "/open/getFakeThreadStatus", headers: { 'token': localStorage.getItem('token') }, data: JSON.stringify({ deviceType: this.currentDeviceConfig.deviceType, deviceNo: this.currentDeviceConfig.deviceNo }), dataType: 'json', contentType: 'application/json;charset=UTF-8', method: 'POST', success: function (res) { if (res.code == 200) { let data = res.data; let result = { deviceType: that.currentDeviceConfig.deviceType, deviceNo: that.currentDeviceConfig.deviceNo, data: data } that.currentDeviceData = result } else { that.currentDeviceConfig = null; that.$message({ message: res.msg, type: 'error' }); } } }); }, addDevice() { //添加设备 let that = this;