From 3609a43ca4d7842a839524dee1baaf4f84bc4801 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期一, 02 九月 2024 14:41:02 +0800 Subject: [PATCH] 绑定首页服务状态 --- Admin.NET/WCS.Application/Hub/IPlcHub.cs | 5 + Web/src/views/device/deviceInfo/index.vue | 150 +++++++++++++++++++++---------------- Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 19 +++- Admin.NET/WCS.Application/Hub/PlcHub.cs | 27 ++++++ 4 files changed, 132 insertions(+), 69 deletions(-) diff --git a/Admin.NET/WCS.Application/Hub/IPlcHub.cs b/Admin.NET/WCS.Application/Hub/IPlcHub.cs index a026a67..e3a92ab 100644 --- a/Admin.NET/WCS.Application/Hub/IPlcHub.cs +++ b/Admin.NET/WCS.Application/Hub/IPlcHub.cs @@ -28,5 +28,10 @@ /// <param name="context"></param> /// <returns></returns> Task PublicAlarm(WcsAlarmInfoOutput context); + /// <summary> + /// 淇敼鏈嶅姟鐘舵�� + /// </summary> + /// <param name="context"></param> + Task UpdateService(PLCServiceModel context); } } diff --git a/Admin.NET/WCS.Application/Hub/PlcHub.cs b/Admin.NET/WCS.Application/Hub/PlcHub.cs index b6dbb86..ba57a75 100644 --- a/Admin.NET/WCS.Application/Hub/PlcHub.cs +++ b/Admin.NET/WCS.Application/Hub/PlcHub.cs @@ -34,4 +34,31 @@ //{ // await _plcHubContext.Clients.All.PublicStationStatus(context); //} + + /// <summary> + /// 涓嬪彂鏈嶅姟鐘舵�� + /// </summary> + public async Task UpdateService(PLCServiceModel context) + { + //杩愯鐘舵�� + if (context.BoRunningState.HasValue) + PLCTaskAction.boRunningState = context.BoRunningState.Value; + //鑴辨満妯″紡 + if (context.BoOffline.HasValue) + PLCTaskAction.boOffline = context.BoOffline.Value; + //鑷埛鏂� + if (context.BoRefresh.HasValue) + PLCTaskAction.boRefresh = context.BoRefresh.Value; + await _plcHubContext.Clients.All.UpdateService(context); + } } +public class PLCServiceModel +{ + public bool? BoRunningState { get; set; } + + + public bool? BoOffline { get; set; } + + + public bool? BoRefresh { get; set; } +} \ No newline at end of file diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index 9c32c01..6dd80ee 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -1,4 +1,6 @@ 锘� +using Admin.NET.Core.Service; + namespace WCS.Application; /// <summary> @@ -8,9 +10,11 @@ public class WcsDeviceService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WcsDevice> _wcsDeviceRep; - public WcsDeviceService(SqlSugarRepository<WcsDevice> wcsDeviceRep) + private readonly SysCacheService _sysCacheService; + public WcsDeviceService(SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService) { _wcsDeviceRep = wcsDeviceRep; + _sysCacheService = sysCacheService; } /// <summary> @@ -202,13 +206,18 @@ .Select<WcsDeviceOutput>((a, b) => new WcsDeviceOutput() { Type = b.Type }, true) .ToListAsync(); //鑾峰彇璺烘満鐨勭姸鎬� - var listConn = PLCTaskAction.listPlcConn; foreach (var modDevice in list) { - var modUtil = listConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId); - modDevice.Status = modUtil == null ? false : modUtil.Connected; + if (_sysCacheService.ExistKey("PlcConn" + modDevice.PlcId)) + { + var cachePlc = _sysCacheService.Get<WcsPlc>("PlcConn" + modDevice.PlcId); + modDevice.Status = cachePlc.IsConn; + } + else + { + modDevice.Status = false; + } } - return list; } diff --git a/Web/src/views/device/deviceInfo/index.vue b/Web/src/views/device/deviceInfo/index.vue index 9bc1d57..3d13bff 100644 --- a/Web/src/views/device/deviceInfo/index.vue +++ b/Web/src/views/device/deviceInfo/index.vue @@ -5,27 +5,32 @@ <el-collapse v-model="activeName"> <el-collapse-item title="璁惧鎺у埗" name="1"> <el-card class="box-card" shadow="hover"> - <el-switch v-model="state.boRunningState" active-text="" inactive-text="绋嬪簭鏈嶅姟"></el-switch> + <el-switch v-model="state.boRunningState" active-text="" inactive-text="绋嬪簭鏈嶅姟" + @change="handleSwitchChange('boRunningState', $event)"></el-switch> </el-card> <el-card class="box-card" shadow="hover" style="margin-top: 3px;"> - <el-switch v-model="state.boOffline" active-text="" inactive-text="鑴辨満妯″紡"></el-switch> + <el-switch v-model="state.boOffline" active-text="" inactive-text="鑴辨満妯″紡" + @change="handleSwitchChange('boOffline', $event)"></el-switch> </el-card> <el-card class="box-card" shadow="hover" style="margin-top: 3px;"> - <el-switch v-model="state.boRefresh" active-text="" inactive-text="鑷埛鏂�"></el-switch> + <el-switch v-model="state.boRefresh" active-text="" inactive-text="鑷埛鏂�" + @change="handleSwitchChange('boRefresh', $event)"></el-switch> </el-card> </el-collapse-item> <el-collapse-item title="鍫嗗灈鏈�" name="2"> <div style="overflow-x: auto;white-space: nowrap;"> <el-card v-for="(stacker, index) in stackers" :key="index" class="box-card" shadow="hover"> - <el-switch v-model="stacker.isConn" :inactive-text="`${stacker.text}`" disabled ></el-switch> + <el-switch v-model="stacker.isConn" :inactive-text="`${stacker.text}`" + disabled></el-switch> </el-card> </div> </el-collapse-item> <el-collapse-item title="杈撻�佺嚎" name="3"> <el-card v-for="(conveyor, index) in conveyors" :key="index" class="box-card" shadow="hover"> - <el-switch v-model="conveyor.isConn" :inactive-text="`${conveyor.text}`" disabled ></el-switch> + <el-switch v-model="conveyor.isConn" :inactive-text="`${conveyor.text}`" + disabled></el-switch> </el-card> </el-collapse-item> </el-collapse> @@ -65,7 +70,7 @@ </template> <script lang="ts" setup> -import { ref, reactive,onMounted } from 'vue'; +import { ref, reactive, onMounted } from 'vue'; import { listStatus } from '/@/api/wcs/wcsPlc'; import { signalR } from './signalR'; @@ -101,7 +106,15 @@ } console.log(stackers.value[0].isConn) }); + signalR.off('UpdateService'); + signalR.on('UpdateService', (data: any) => { + state.value = data; + }); }); +const handleSwitchChange = (field: string, value: boolean) => { + signalR.invoke('UpdateService',state.value); +}; + const activeName = ['1', '2', '3']; const value1 = ref(false); @@ -1599,56 +1612,56 @@ { Id: 202, Code: '', IsShow: 0, IsUse: 2 }, { Id: 203, Code: '', IsShow: 1, IsUse: 0 }, { Id: 204, Code: '', IsShow: 0, IsUse: 2 }, - { Id:205 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:206 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:207 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:208 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:209 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:210 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:211 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:212 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:213 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:214 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:215 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:216 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:217 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:218 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:219 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:220 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:221 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:222 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:223 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:224 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:225 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:226 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:227 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:228 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:229 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:230 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:231 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:232 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:233 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:234 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:235 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:236 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:237 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:238 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:239 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:240 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:241 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:242 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:243 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:244 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:245 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:246 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:247 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:248 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:249 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:250 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:251 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:252 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:253 , Code: '', IsShow: 0, IsUse: 3 }, - { Id:254 , Code: '', IsShow: 0, IsUse: 3 }, + { Id: 205, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 206, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 207, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 208, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 209, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 210, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 211, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 212, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 213, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 214, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 215, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 216, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 217, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 218, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 219, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 220, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 221, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 222, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 223, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 224, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 225, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 226, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 227, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 228, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 229, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 230, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 231, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 232, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 233, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 234, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 235, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 236, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 237, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 238, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 239, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 240, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 241, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 242, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 243, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 244, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 245, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 246, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 247, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 248, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 249, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 250, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 251, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 252, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 253, Code: '', IsShow: 0, IsUse: 3 }, + { Id: 254, Code: '', IsShow: 0, IsUse: 3 }, { Id: 255, Code: '', IsShow: 0, IsUse: 3 }, { Id: 256, Code: '', IsShow: 1, IsUse: 0 }, { Id: 257, Code: '', IsShow: 1, IsUse: 0 }, @@ -1971,12 +1984,16 @@ .grid-container-line { display: grid; - grid-template-columns: repeat(51, 1fr); /* 鑷�傚簲鍒楀 */ - grid-template-rows: 1fr; /* 鑷�傚簲琛岄珮 */ + grid-template-columns: repeat(51, 1fr); + /* 鑷�傚簲鍒楀 */ + grid-template-rows: 1fr; + /* 鑷�傚簲琛岄珮 */ gap: 0; margin-top: 25px; - width: 100%; /* 瀹藉害鑷�傚簲 */ - height: 1fr; /* 楂樺害鑷�傚簲 */ + width: 100%; + /* 瀹藉害鑷�傚簲 */ + height: 1fr; + /* 楂樺害鑷�傚簲 */ } .grid-item-line { @@ -2053,9 +2070,12 @@ background-color: #9c9c9c; border: 1px solid #797777; text-align: center; - line-height: 1.4vw; /* 琛岄珮 */ - width: 100%; /* 鑷�傚簲瀹藉害 */ - height: 100%; /* 鑷�傚簲楂樺害 */ + line-height: 1.4vw; + /* 琛岄珮 */ + width: 100%; + /* 鑷�傚簲瀹藉害 */ + height: 100%; + /* 鑷�傚簲楂樺害 */ color: #fff; font-size: 0.7vw; } @@ -2069,10 +2089,12 @@ .active2>div { display: none; } + .active3 { background-color: #fff; - border:1px solid red; + border: 1px solid red; } + .active3>div { display: none; } -- Gitblit v1.8.0