From 220127ae99220eb9a256c782f9e86e15f8774206 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期四, 26 九月 2024 10:06:02 +0800 Subject: [PATCH] 演示模式增加判断分拣码垛有没有绑定任务 --- Admin.NET/WCS.Application/Hub/PlcHub.cs | 125 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 111 insertions(+), 14 deletions(-) diff --git a/Admin.NET/WCS.Application/Hub/PlcHub.cs b/Admin.NET/WCS.Application/Hub/PlcHub.cs index 31d652c..bfb6fb8 100644 --- a/Admin.NET/WCS.Application/Hub/PlcHub.cs +++ b/Admin.NET/WCS.Application/Hub/PlcHub.cs @@ -1,29 +1,33 @@ 锘縰sing Furion.InstantMessaging; using Microsoft.AspNetCore.SignalR; +using WCS.Application.Entity; namespace WCS.Application; /// <summary> -/// PLC闆嗙嚎鍣� +/// 浠诲姟鏃ュ織闆嗙嚎鍣� /// </summary> [MapHub("/hubs/Plc")] public class PlcHub : Hub<IPlcHub> { private readonly IHubContext<PlcHub, IPlcHub> _plcHubContext; - - public PlcHub(IHubContext<PlcHub, IPlcHub> plcHubContext) + private readonly SysConfigService _sysConfigService; + private readonly SqlSugarRepository<WcsCheckTask> _wcsCheckTaskRep; + public PlcHub(IHubContext<PlcHub, IPlcHub> plcHubContext, SysConfigService sysConfigService, SqlSugarRepository<WcsCheckTask> wcsCheckTaskRep) { _plcHubContext = plcHubContext; + _sysConfigService = sysConfigService; + _wcsCheckTaskRep = wcsCheckTaskRep; } /// <summary> /// 涓嬪彂PLC杩炴帴鐘舵�� /// </summary> /// <param name="context"></param> /// <returns></returns> - //public async Task PublicPlcConn(WcsPlc context) - //{ - // await _plcHubContext.Clients.All.PublicPlcConn(context); - //} + public async Task PublicPlcConn(WcsPlc context) + { + await _plcHubContext.Clients.All.PublicPlcConn(context); + } /// <summary> /// 涓嬪彂宸ヤ綅鐘舵�� @@ -36,12 +40,105 @@ //} /// <summary> - /// 涓嬪彂鎶ヨ淇℃伅 + /// 涓嬪彂鏈嶅姟鐘舵�� /// </summary> - /// <param name="context"></param> - /// <returns></returns> - //public async Task PublicAlarm(WcsAlarmInfoOutput context) - //{ - // await _plcHubContext.Clients.All.PublicAlarm(context); - //} + public async Task UpdateService(PLCServiceModel context) + { + //杩愯鐘舵�� + if (context.BoRunningState.HasValue) + { + PLCTaskAction.boRunningState = context.BoRunningState.Value; + if (context.BoRunningState.Value) + PLCTaskAction.Init(); + else + PLCTaskAction.Stop(); + await _sysConfigService.UpdateConfigValue("sys_RunningState", context.BoRunningState.Value); + } + //鑴辨満妯″紡 + if (context.BoOffline.HasValue) + { + PLCTaskAction.boOffline = context.BoOffline.Value; + await _sysConfigService.UpdateConfigValue("sys_Offline", context.BoOffline.Value); + } + //鑷埛鏂� + if (context.BoRefresh.HasValue) + { + PLCTaskAction.boRefresh = context.BoRefresh.Value; + await _sysConfigService.UpdateConfigValue("sys_Refresh", context.BoRefresh.Value); + } + //婕旂ず妯″紡 + if (context.BoDemo.HasValue) + { + PLCTaskAction.boDemo = context.BoDemo.Value; + + if (PLCTaskAction.boDemo) + { + //鍒ゆ柇鍒嗘嫞鐮佸灈鏈夋病鏈夌粦瀹氫换鍔� + var checkTask = await _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.Status == "1").ToListAsync(); + if (checkTask.Count > 0) + { + throw Oops.Oh("鍒嗘嫞鐮佸灈宸茬粦瀹氫换鍔★紝涓嶆敮鎸佸紑鍚紨绀烘ā寮忥紒"); + } + } + //PLC杩炴帴 + var plcStackeConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == "10.18.51.120"); + if (plcStackeConn.Connected) + { + //鍐欏叆娴佺▼瀛� + var ret = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Bit, "DB119", "0", PLCTaskAction.boDemo == true ? "1" : "0"); + if (ret.IsSucceed) + { + await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value); + } + else + { + PLCTaskAction.boDemo = !PLCTaskAction.boDemo; + } + } + else + { + PLCTaskAction.boDemo = !PLCTaskAction.boDemo; + } + } + //婊氱瓛鍙嶈浆 + if (context.BoDrumReversal.HasValue) + { + PLCTaskAction.boDrumReversal = context.BoDrumReversal.Value; + + //PLC杩炴帴 + var plcStackeConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == "10.18.51.120"); + if (plcStackeConn.Connected) + { + //鍐欏叆娴佺▼瀛� + var ret = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Bit, "DB119", "0.1", PLCTaskAction.boDemo == true ? "1" : "0"); + if (ret.IsSucceed) + { + await _sysConfigService.UpdateConfigValue("sys_DrumReversal", context.BoDrumReversal.Value); + } + else + { + PLCTaskAction.boDrumReversal = !PLCTaskAction.boDrumReversal; + } + } + else + { + PLCTaskAction.boDrumReversal = !PLCTaskAction.boDrumReversal; + } + } + await _plcHubContext.Clients.All.UpdateService(new PLCServiceModel() { BoRunningState = PLCTaskAction.boRunningState, BoRefresh = PLCTaskAction.boRefresh, BoOffline = PLCTaskAction.boOffline, BoDemo = PLCTaskAction.boDemo, BoDrumReversal = PLCTaskAction.boDrumReversal }); + } } +public class PLCServiceModel +{ + public bool? BoRunningState { get; set; } + + + public bool? BoOffline { get; set; } + + + public bool? BoRefresh { get; set; } + + public bool? BoDemo { get; set; } + + public bool? BoDrumReversal { get; set; } +} \ No newline at end of file -- Gitblit v1.8.0