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