diff --git a/APT.BaseData.Domain/IServices/FM/IFMNotificatoinService.cs b/APT.BaseData.Domain/IServices/FM/IFMNotificatoinService.cs index 41df42b..504d19d 100644 --- a/APT.BaseData.Domain/IServices/FM/IFMNotificatoinService.cs +++ b/APT.BaseData.Domain/IServices/FM/IFMNotificatoinService.cs @@ -1,16 +1,23 @@ -using APT.Infrastructure.Core; -using APT.BaseData.Domain.ApiModel.EX; +using APT.BaseData.Domain.ApiModel.EX; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; -using System.Collections.Generic; using APT.Infrastructure.Api; +using APT.Infrastructure.Core; using System; +using System.Collections.Generic; using static APT.BaseData.Domain.ApiModel.SocketInfo; namespace APT.BaseData.Domain.IServices.FM { public interface IFMNotificatoinService: ICommonService { + /// + /// 发送变更的菜单 + /// + /// + /// + void MenusChangeNotice(List userIds,WebSocketClientTypeEnum clientType); /// /// 发送通知公告 /// diff --git a/APT.BaseData.Services/Services/EX/WebSocketService.cs b/APT.BaseData.Services/Services/EX/WebSocketService.cs index c4cb837..5e6d088 100644 --- a/APT.BaseData.Services/Services/EX/WebSocketService.cs +++ b/APT.BaseData.Services/Services/EX/WebSocketService.cs @@ -28,7 +28,7 @@ namespace APT.BaseData.Services.Services.EX /// /// /// - public static WebSocketResponseInfo OnOpenWebSocket(WebSocketClientInfo clientInfo) + public static WebSocketResponseInfo OnOpenWebSocket(WebSocketClientInfo clientInfo, List WebSocketClientInfos) { Console.WriteLine($"Socket连接:{clientInfo?.UserId}"); //clientInfo.WebSocketConnection.Close(); @@ -90,9 +90,10 @@ namespace APT.BaseData.Services.Services.EX /// websocket 关闭 /// /// - public static void OnCloseWebSocket(Guid userId, WebSocketClientInfo clientInfo) + public static void OnCloseWebSocket(Guid userId, WebSocketClientInfo clientInfo, List WebSocketClientInfos) { Console.WriteLine($"Socket连接断开:{userId}"); + WebSocketClientInfos.Remove(clientInfo); } /// /// websocket 信息 @@ -101,7 +102,7 @@ namespace APT.BaseData.Services.Services.EX /// /// public static WebSocketResponseInfo OnMessageWebSocket(WebSocketClientInfo clientInfo, - WebSocketRequestInfo requestInfo) + WebSocketRequestInfo requestInfo, List WebSocketClientInfos) { if (requestInfo != null) { @@ -123,14 +124,12 @@ namespace APT.BaseData.Services.Services.EX List ingoreClientInfos = new List(); ingoreClientInfos.Add(clientInfo); service.SendAlarmNotification(clientInfoByManu, ingoreClientInfos); + } break; case "P0001": { - BaseFilter baseFilter = new BaseFilter(); - baseFilter.IgnoreOrgRule = true; - baseFilter.IsMultipleDb = true; - var commonService = ServiceLocator.Instance.GetService(); + WebSocketClientInfos.Add(clientInfo); //var consumeService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); //var cueerntInfo = commonService.GetEntity(x => x.CURRENT_CLIENT_ID == clientInfo.UserId, baseFilter);//当前占用充电桩 //if (cueerntInfo != null && cueerntInfo.CURRENT_CLIENT_ID != null) diff --git a/APT.BaseData.Services/Services/FM/FMNotificationService.cs b/APT.BaseData.Services/Services/FM/FMNotificationService.cs index 554ded1..b5aa051 100644 --- a/APT.BaseData.Services/Services/FM/FMNotificationService.cs +++ b/APT.BaseData.Services/Services/FM/FMNotificationService.cs @@ -1,10 +1,12 @@ using APT.BaseData.Domain.ApiModel.EX; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.Migrations; +using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; @@ -103,7 +105,26 @@ namespace APT.BaseData.Services.Services.FM SendNotification(sendNotificationModel, clientInfos); } + /// + /// 发送通知公告 + /// + /// + /// + public void MenusChangeNotice(List userIds,WebSocketClientTypeEnum clientType) + { + var clientInfos = WebSocketServiceHelper.ClintInfos.Where(t => userIds.Contains(t.UserId.Value) && t.ClientType == clientType).ToList(); + if (!clientInfos.Any()) + return; + foreach (var u in userIds) + { + WebSocketServiceHelper.SendToUser(u, new WebSocketResponseInfo() + { + TypeCode = "MQ02", + Data = new SocketData(), + }); + } + } /// diff --git a/APT.MicroApi/APT.FM.WebApi/APT.FM.WebApi.csproj b/APT.MicroApi/APT.FM.WebApi/APT.FM.WebApi.csproj index 1fd84c7..7619ee6 100644 --- a/APT.MicroApi/APT.FM.WebApi/APT.FM.WebApi.csproj +++ b/APT.MicroApi/APT.FM.WebApi/APT.FM.WebApi.csproj @@ -149,6 +149,7 @@ + diff --git a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/RoleController.cs b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/RoleController.cs index b6faa7a..69fbc65 100644 --- a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/RoleController.cs +++ b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/RoleController.cs @@ -16,6 +16,7 @@ using NPOI.SS.Formula.Functions; using APT.BaseData.Domain.ApiModel.Platform; using System.Dynamic; using APT.BaseData.Domain.Entities.PF; +using APT.Infrastructure.Api; namespace APT.FM.WebApi.Controllers.Api.FM { @@ -468,6 +469,12 @@ namespace APT.FM.WebApi.Controllers.Api.FM this.BantchAddEntityNoCommit(roleDepartments); }); } + //通知权限更新 + var menuFilter = new BaseFilter(); + menuFilter.SelectField =new string[] { "ID" }; + var users = this.GetEntities(x => x.Nav_BelongRoles.Any(x => x.BELONG_ROLE_ID == role.ID), menuFilter); + var notificationService = ServiceLocator.Instance.GetService(); + notificationService.MenusChangeNotice(users.Select(x => x.ID).ToList(),WebSocketClientTypeEnum.WEB后台); return true; }); } diff --git a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/UserController.cs b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/UserController.cs index 5d0ec97..7a9a570 100644 --- a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/UserController.cs +++ b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/UserController.cs @@ -1,40 +1,40 @@ -using APT.BaseData.Domain.Msg; -using APT.Infrastructure.Core; -using APT.MS.Domain.ApiModel; +using APT.BaseData.Domain.ApiModel; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; +using APT.BaseData.Domain.Entities.OP; +using APT.BaseData.Domain.Entities.PF; +using APT.BaseData.Domain.Enums; +using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Domain.IServices.OP; +using APT.BaseData.Domain.Msg; +using APT.BaseData.Services.Services.FM; +using APT.Infrastructure.Api; +using APT.Infrastructure.Core; +using APT.Migrations; +using APT.MS.Domain.ApiModel; +using APT.MS.Domain.Entities.HM; +using APT.MS.Domain.Entities.OG; +using APT.MS.Domain.Entities.PF; +using APT.MS.Domain.Entities.SC; +using APT.MS.Domain.Entities.SC.PT; +using APT.MS.Domain.Entities.SC.SC; +using APT.MS.Domain.Entities.SE; +using APT.MS.Domain.Entities.SK; +using APT.MS.Domain.Enums; +using APT.Utility; +using Castle.Core.Internal; +using InfluxData.Net.InfluxDb.Models.Responses; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyModel; +using MySqlX.XDevAPI.Common; +using NPOI.SS.Formula.Functions; +using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; - -using APT.Utility; -using APT.BaseData.Domain.ApiModel; using System.Linq.Expressions; -using APT.BaseData.Domain.Enums; -using APT.BaseData.Domain.Entities.PF; -using APT.MS.Domain.Entities.HM; -using APT.MS.Domain.Entities.PF; -using APT.BaseData.Domain.Entities; -using APT.BaseData.Services.Services.FM; -using MySqlX.XDevAPI.Common; -using Castle.Core.Internal; -using NPOI.SS.Formula.Functions; -using APT.MS.Domain.Entities.SE; -using APT.MS.Domain.Enums; -using APT.BaseData.Domain.Entities.OP; -using APT.Migrations; -using InfluxData.Net.InfluxDb.Models.Responses; -using APT.Infrastructure.Api; -using APT.BaseData.Domain.Enums.PF; -using APT.MS.Domain.Entities.OG; -using APT.MS.Domain.Entities.SC; -using APT.MS.Domain.Entities.SC.SC; using System.Security.Cryptography; -using APT.MS.Domain.Entities.SC.PT; -using Microsoft.Extensions.DependencyModel; -using APT.MS.Domain.Entities.SK; -using APT.BaseData.Domain.IServices.OP; namespace APT.FM.WebApi.Controllers.Api.FM { @@ -530,8 +530,9 @@ namespace APT.FM.WebApi.Controllers.Api.FM { return SafeExecute(() => { - var allUsers = this.GetEntities(t => t.IS_DELETED == false, null, "Nav_ApproveRole"); - var isAdd = allUsers.Where(t => t.ID == entity.ID); + //var allUsers = this.GetEntities(t => t.IS_DELETED == false, null, "Nav_ApproveRole"); + var isAdd = this.GetEntity(entity.ID.ToString(), "Nav_ApproveRole", "Nav_BelongRoles"); + var dbRuleStr = string.Join(',', isAdd.Nav_BelongRoles.OrderBy(x => x.BELONG_ROLE_ID).Select(x => x.BELONG_ROLE_ID).Distinct().ToList()); var userList = new List(); entity.CODE = entity.CODE.ToUpper(); if (entity.ENTRYTIME == DateTime.Parse("0001/1/1 0:00:00")) @@ -558,7 +559,7 @@ namespace APT.FM.WebApi.Controllers.Api.FM throw new Exception("岗位不允许为空!"); } - if (!isAdd.Any()) + if (isAdd == null) { userList = this.GetEntities(t => (t.CODE == entity.CODE || t.APPROVE_ROLE_ID == entity.APPROVE_ROLE_ID) && t.ORG_ID == entity.ORG_ID, null, "Nav_Department").ToList(); var isRepeat = userList.FirstOrDefault(t => t.CODE == entity.CODE); @@ -690,7 +691,7 @@ namespace APT.FM.WebApi.Controllers.Api.FM else { var departInfo = this.GetEntity(entity.DEPARTMENT_ID.ToString()); - if (departInfo != null && departInfo.PRODUCTION_UNIT_ID != null && departInfo.MineType != null && !isAdd.Any()) + if (departInfo != null && departInfo.PRODUCTION_UNIT_ID != null && departInfo.MineType != null && isAdd == null) { var enumList = this.GetEntity(t => t.CODE == "BSMineTypeEnum" && t.VALUE == departInfo.MineType); entity.MineType = departInfo.MineType.ToString(); @@ -1013,7 +1014,7 @@ namespace APT.FM.WebApi.Controllers.Api.FM #region 总用户库添加 - if (!isAdd.Any()) + if (isAdd == null) { using (var context = new MigrationContext(ConfigurationManager.ConnectionStrings["default"])) { @@ -1148,9 +1149,22 @@ namespace APT.FM.WebApi.Controllers.Api.FM } } - } + } #endregion - + //通知权限更新 + var menuFilter = new BaseFilter(); + menuFilter.SelectField = new string[] { "ID" }; + if (isAdd != null) + { + + var nowRules = string.Join(',', belongRoles.OrderBy(x => x.BELONG_ROLE_ID).Select(x => x.BELONG_ROLE_ID).Distinct().ToList()); + if (dbRuleStr.CompareTo(nowRules) != 0) + { + var notificationService = ServiceLocator.Instance.GetService(); + notificationService.MenusChangeNotice(new List() { isAdd.ID },WebSocketClientTypeEnum.WEB后台); + } + } + return true; }); } diff --git a/APT.MicroApi/APT.FM.WebApi/Startup.cs b/APT.MicroApi/APT.FM.WebApi/Startup.cs index 6689739..7acc986 100644 --- a/APT.MicroApi/APT.FM.WebApi/Startup.cs +++ b/APT.MicroApi/APT.FM.WebApi/Startup.cs @@ -31,6 +31,7 @@ using APT.Infrastructure.EF.Extensions; using APT.Infrastructure.Api; using ConfigurationManager = APT.Infrastructure.Api.ConfigurationManager; using APT.WebApi.Models; +using APT.PF.WebApi.Utils; namespace APT.FM.WebApi { @@ -139,8 +140,7 @@ namespace APT.FM.WebApi //fMOrganizationService.SetOrgCache(); - - //APT.FM.WebApi.Utils.WebSokectHelper.Init(); + APT.PF.WebApi.Utils.WebSokectHelper.Init(); } public virtual void ConfigureContainer(ContainerBuilder builder) diff --git a/APT.MicroApi/APT.LG.WebApi/Controllers/OprateController.cs b/APT.MicroApi/APT.LG.WebApi/Controllers/OprateController.cs index 5f2a1b9..a6e2ded 100644 --- a/APT.MicroApi/APT.LG.WebApi/Controllers/OprateController.cs +++ b/APT.MicroApi/APT.LG.WebApi/Controllers/OprateController.cs @@ -1,191 +1,191 @@ -using APT.Infrastructure.Core; -using Microsoft.AspNetCore.Mvc; -using System.Collections.Generic; -using APT.Utility; -using APT.BaseData.Domain.Entities.LG; -using APT.BaseData.Domain.ApiModel.LG; -using System; -using APT.BaseData.Domain.Enums; -using System.Threading.Tasks; -using InfluxData.Net.InfluxDb.Models; -using APT.BaseData.Domain.Entities.FM; -using Microsoft.EntityFrameworkCore.Internal; -using System.Linq; -using APT.BaseData.Domain.ApiModel.Platform; -using Microsoft.Extensions.DependencyInjection; -using APT.Infrastructure.Api.Redis; -using APT.Infrastructure.Api; -namespace APT.LG.WebApi.Controllers.Api -{ +//using APT.Infrastructure.Core; +//using Microsoft.AspNetCore.Mvc; +//using System.Collections.Generic; +//using APT.Utility; +//using APT.BaseData.Domain.Entities.LG; +//using APT.BaseData.Domain.ApiModel.LG; +//using System; +//using APT.BaseData.Domain.Enums; +//using System.Threading.Tasks; +//using InfluxData.Net.InfluxDb.Models; +//using APT.BaseData.Domain.Entities.FM; +//using Microsoft.EntityFrameworkCore.Internal; +//using System.Linq; +//using APT.BaseData.Domain.ApiModel.Platform; +//using Microsoft.Extensions.DependencyInjection; +//using APT.Infrastructure.Api.Redis; +//using APT.Infrastructure.Api; +//namespace APT.LG.WebApi.Controllers.Api +//{ - #region Oprate-表单操作日志表 - /// - /// 表单操作日志表 - /// - [Route("api/LG/LGOperate")] - public partial class OprateController : AuthorizeApiController - { - /// - /// 新增日志 - /// - /// 新增日志 - /// - [HttpPost, Route("Add")] - public async Task> Add([FromBody] LgOprateModel model) - { - //var redisManager = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); - //int num = 0; - //if (CsRedisManager.KeyExists(RedisCacheKey.HardWarePVInfo)) - //{ - // num = CsRedisManager.StringGet(RedisCacheKey.HardWarePVInfo); - //} - //num++; - //CsRedisManager.StringSet(RedisCacheKey.HardWarePVInfo, num); - var isLog = LibUtils.ToBoolean( - ConfigurationManager.AppSettings["isSqlLog"]); - bool isSuccess = true; - if (isLog) - { - var user = this.GetEntityByRedis(model.UserId, new Guid(model.OrgId)); - if (user == null) - throw new Exception("用户不存在"); - var dt = DateTime.Now; - var points = new Point - { - Name = dt.Year + dt.Month.PadLeft(2, '0'), - Timestamp = dt, - Tags = new Dictionary() - { - { "Id", Guid.NewGuid().ToString()} - }, - Fields = new Dictionary() - { - { "FormCode", model.FormCode }, - { "FormName", model.FormName }, - { "BtnCode", model.BtnCode??"" }, - { "BtnName", model.BtnName??"" }, - { "OrgId", model.OrgId }, - { "UserId", model.UserId }, - { "UserCode",user.CODE }, - { "OperateType",string.IsNullOrEmpty(model.BtnCode)?(int)LGOperateTypeEnum.表单加载:(int)LGOperateTypeEnum.按钮点击 } - } - }; +// #region Oprate-表单操作日志表 +// /// +// /// 表单操作日志表 +// /// +// [Route("api/LG/LGOperate")] +// public partial class OprateController : AuthorizeApiController +// { +// /// +// /// 新增日志 +// /// +// /// 新增日志 +// /// +// [HttpPost, Route("Add")] +// public async Task> Add([FromBody] LgOprateModel model) +// { +// //var redisManager = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); +// //int num = 0; +// //if (CsRedisManager.KeyExists(RedisCacheKey.HardWarePVInfo)) +// //{ +// // num = CsRedisManager.StringGet(RedisCacheKey.HardWarePVInfo); +// //} +// //num++; +// //CsRedisManager.StringSet(RedisCacheKey.HardWarePVInfo, num); +// var isLog = LibUtils.ToBoolean( +// ConfigurationManager.AppSettings["isSqlLog"]); +// bool isSuccess = true; +// if (isLog) +// { +// var user = this.GetEntityByRedis(model.UserId, new Guid(model.OrgId)); +// if (user == null) +// throw new Exception("用户不存在"); +// var dt = DateTime.Now; +// var points = new Point +// { +// Name = dt.Year + dt.Month.PadLeft(2, '0'), +// Timestamp = dt, +// Tags = new Dictionary() +// { +// { "Id", Guid.NewGuid().ToString()} +// }, +// Fields = new Dictionary() +// { +// { "FormCode", model.FormCode }, +// { "FormName", model.FormName }, +// { "BtnCode", model.BtnCode??"" }, +// { "BtnName", model.BtnName??"" }, +// { "OrgId", model.OrgId }, +// { "UserId", model.UserId }, +// { "UserCode",user.CODE }, +// { "OperateType",string.IsNullOrEmpty(model.BtnCode)?(int)LGOperateTypeEnum.表单加载:(int)LGOperateTypeEnum.按钮点击 } +// } +// }; - var response = await InfluxDbHelper.InfluxDbClient.Client.WriteAsync(points, InfluxDbHelper.InfluxLogDbName); - isSuccess = response.Success; - } +// // var response = await InfluxDbHelper.InfluxDbClient.Client.WriteAsync(points, InfluxDbHelper.InfluxLogDbName); +// //isSuccess = response.Success; +// } - return SafeExecute(() => - { - return isSuccess; +// return SafeExecute(() => +// { +// return isSuccess; - }); - } +// }); +// } - /// - /// 查询所有数据 - /// - /// 过滤实体 - /// - [HttpPost, Route("LGOrderPaged")] - public async Task> LGOrderPaged([FromBody] KeywordPageFilter filters) - { - var actionResult = new PagedActionResult(); - string timestr = filters.Parameter1; - if (string.IsNullOrEmpty(timestr)) - { - this.ThrowError("120001"); - } - //if (string.IsNullOrEmpty(filters.Parameter2)) - //{ - // this.ThrowError("120002"); - //} - var timeAry = timestr.Split(new char[] { ',' }); - if (timeAry.Length != 2) - this.ThrowError("120001"); - var dtStart = DateTime.Parse(timeAry[0]); - var dtEnd = DateTime.Parse(timeAry[1]); - T_FM_USER user = null; - if (!string.IsNullOrEmpty(filters.Keyword)) - { - user = this.GetEntity(i => i.NAME == filters.Keyword || i.CODE == filters.Keyword, new BaseFilter(filters.OrgId)); - if (user == null) - return actionResult; - } - List querys = new List(); - List queryCounts = new List(); - for (var x = dtStart; x <= dtEnd; x = x.AddMonths(1)) - { - var tableName = x.Year + x.Month.PadLeft(2, '0'); - var query = $" FROM \"{tableName}\" WHERE time >= '{dtStart.ToString("yyyy-MM-dd HH:mm:ss")}' and time<='{dtEnd.ToString("yyyy-MM-dd HH:mm:ss")}'"; - if (user != null) - query += $" and UserId='{user.ID.ToString()}'"; - //表单 - if (!string.IsNullOrEmpty(filters.Parameter3)) - { - query += $" and FormCode='{filters.Parameter3}'"; - } - var offSet = (filters.PageIndex - 1) * filters.Limit; - var querySql = query + $" order by time desc limit {filters.Limit} OFFSET {offSet}"; - querySql = "SELECT * " + querySql; - querys.Add(querySql); - var queryCount = "SELECT COUNT(OrgId) " + query; - queryCounts.Add(queryCount); - } +// /// +// /// 查询所有数据 +// /// +// /// 过滤实体 +// /// +// [HttpPost, Route("LGOrderPaged")] +// public async Task> LGOrderPaged([FromBody] KeywordPageFilter filters) +// { +// var actionResult = new PagedActionResult(); +// string timestr = filters.Parameter1; +// if (string.IsNullOrEmpty(timestr)) +// { +// this.ThrowError("120001"); +// } +// //if (string.IsNullOrEmpty(filters.Parameter2)) +// //{ +// // this.ThrowError("120002"); +// //} +// var timeAry = timestr.Split(new char[] { ',' }); +// if (timeAry.Length != 2) +// this.ThrowError("120001"); +// var dtStart = DateTime.Parse(timeAry[0]); +// var dtEnd = DateTime.Parse(timeAry[1]); +// T_FM_USER user = null; +// if (!string.IsNullOrEmpty(filters.Keyword)) +// { +// user = this.GetEntity(i => i.NAME == filters.Keyword || i.CODE == filters.Keyword, new BaseFilter(filters.OrgId)); +// if (user == null) +// return actionResult; +// } +// List querys = new List(); +// List queryCounts = new List(); +// for (var x = dtStart; x <= dtEnd; x = x.AddMonths(1)) +// { +// var tableName = x.Year + x.Month.PadLeft(2, '0'); +// var query = $" FROM \"{tableName}\" WHERE time >= '{dtStart.ToString("yyyy-MM-dd HH:mm:ss")}' and time<='{dtEnd.ToString("yyyy-MM-dd HH:mm:ss")}'"; +// if (user != null) +// query += $" and UserId='{user.ID.ToString()}'"; +// //表单 +// if (!string.IsNullOrEmpty(filters.Parameter3)) +// { +// query += $" and FormCode='{filters.Parameter3}'"; +// } +// var offSet = (filters.PageIndex - 1) * filters.Limit; +// var querySql = query + $" order by time desc limit {filters.Limit} OFFSET {offSet}"; +// querySql = "SELECT * " + querySql; +// querys.Add(querySql); +// var queryCount = "SELECT COUNT(OrgId) " + query; +// queryCounts.Add(queryCount); +// } - var response = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(querys, InfluxDbHelper.InfluxLogDbName); - if (!response.Any()) - return actionResult; - //得到Serie集合对象(返回执行多个查询的结果) - //取出第一条命令的查询结果,是一个集合 - List opList = new List(); - //从集合中取出第一条数据 - foreach (var list in response) - { - foreach (var table in list) - { - foreach (var item in table.Values) - { - var point = new LgOprateModel - { - BtnCode = item[1].ToString(), - BtnName = item[2].ToString(), - FormCode = item[3].ToString(), - FormName = item[4].ToString(), - ID = item[5].ToString(), - OrgId = item[7].ToString(), - UserCode = item[8].ToString(), - UserId = item[9].ToString(), - Datetime = item[0].ToString(), - }; - opList.Add(point); - } +// // var response = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(querys, InfluxDbHelper.InfluxLogDbName); +// if (!response.Any()) +// return actionResult; +// //得到Serie集合对象(返回执行多个查询的结果) +// //取出第一条命令的查询结果,是一个集合 +// List opList = new List(); +// //从集合中取出第一条数据 +// foreach (var list in response) +// { +// foreach (var table in list) +// { +// foreach (var item in table.Values) +// { +// var point = new LgOprateModel +// { +// BtnCode = item[1].ToString(), +// BtnName = item[2].ToString(), +// FormCode = item[3].ToString(), +// FormName = item[4].ToString(), +// ID = item[5].ToString(), +// OrgId = item[7].ToString(), +// UserCode = item[8].ToString(), +// UserId = item[9].ToString(), +// Datetime = item[0].ToString(), +// }; +// opList.Add(point); +// } - } - } - opList = opList.OrderByDescending(t => t.Datetime).Take(filters.Limit).ToList(); - actionResult.Data = opList; +// } +// } +// opList = opList.OrderByDescending(t => t.Datetime).Take(filters.Limit).ToList(); +// actionResult.Data = opList; - var responseCount = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(queryCounts, InfluxDbHelper.InfluxLogDbName); - var totalCount = 0; - foreach (var list in responseCount) - { - foreach (var table in list) - { - foreach (var item in table.Values) - { - totalCount += int.Parse(item[1].ToString()); - } - } - } - actionResult.TotalCount = totalCount; +// var responseCount = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(queryCounts, InfluxDbHelper.InfluxLogDbName); +// var totalCount = 0; +// foreach (var list in responseCount) +// { +// foreach (var table in list) +// { +// foreach (var item in table.Values) +// { +// totalCount += int.Parse(item[1].ToString()); +// } +// } +// } +// actionResult.TotalCount = totalCount; - return actionResult; - } +// return actionResult; +// } - } - #endregion -} +// } +// #endregion +//} diff --git a/APT.MicroApi/APT.PF.WebApi/Controllers/Api/FileController.cs b/APT.MicroApi/APT.PF.WebApi/Controllers/Api/FileController.cs index fe076d9..1000878 100644 --- a/APT.MicroApi/APT.PF.WebApi/Controllers/Api/FileController.cs +++ b/APT.MicroApi/APT.PF.WebApi/Controllers/Api/FileController.cs @@ -870,6 +870,7 @@ namespace APT.PF.WebApiControllers.Api.PF /// /// /// + [DisableRequestSizeLimit] // 解除默认文件大小限制(可选) [HttpPost, Route("UploadVideo")] public JsonActionResult UploadVideo() { diff --git a/APT.MicroApi/APT.PF.WebApi/Startup.cs b/APT.MicroApi/APT.PF.WebApi/Startup.cs index 636728c..4f5d4b7 100644 --- a/APT.MicroApi/APT.PF.WebApi/Startup.cs +++ b/APT.MicroApi/APT.PF.WebApi/Startup.cs @@ -154,13 +154,13 @@ namespace APT.PF.WebApi ////fMOrganizationService.SetOrgCache(); //CheckLinse(); //UpdateDatabase(); - APT.PF.WebApi.Utils.WebSokectHelper.Init(); + //APT.PF.WebApi.Utils.WebSokectHelper.Init(); } public virtual void ConfigureContainer(ContainerBuilder builder) { builder.RegisterComponents(); - Thread.Sleep(10000); + //Thread.Sleep(10000); var dbs = GetAllDbConns(); foreach (var db in dbs) { diff --git a/APT.MicroApi/APT.PF.WebApi/Utils/WebSokectHelper.cs b/APT.MicroApi/APT.PF.WebApi/Utils/WebSokectHelper.cs index 88fbb58..17a3976 100644 --- a/APT.MicroApi/APT.PF.WebApi/Utils/WebSokectHelper.cs +++ b/APT.MicroApi/APT.PF.WebApi/Utils/WebSokectHelper.cs @@ -4,11 +4,13 @@ using System; using APT.BaseData.Domain.IServices.Platform; using APT.BaseData.Services.Services.EX; using APT.Infrastructure.Api; +using System.Collections.Generic; namespace APT.PF.WebApi.Utils { public static class WebSokectHelper { + public static List WebSocketClientInfos = new List(); public static void Init() { @@ -21,15 +23,15 @@ namespace APT.PF.WebApi.Utils WebSocketServiceHelper.InitService(webSocketPort, (clientInfo) => { - return WebSocketService.OnOpenWebSocket(clientInfo); + return WebSocketService.OnOpenWebSocket(clientInfo, WebSocketClientInfos); }, (clientInfo, requestInfo) => { - return WebSocketService.OnMessageWebSocket(clientInfo, requestInfo); + return WebSocketService.OnMessageWebSocket(clientInfo, requestInfo, WebSocketClientInfos); }, (userId, clientInfo) => { - WebSocketService.OnCloseWebSocket(userId, clientInfo); + WebSocketService.OnCloseWebSocket(userId, clientInfo, WebSocketClientInfos); }); } catch (Exception ex) diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs index 68efa79..46764b4 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs @@ -49,6 +49,38 @@ namespace APT.SK.WebApi.Controllers.Api } pageFilter.Include.Add("Nav_ListCheckQuestion"); return WitOrderPaged(null, pageFilter); + } + + + /// + /// 获得单条实体数据 + /// + /// 过滤实体 + /// + [HttpPost, Route("SkGet")] + public JsonActionResult SkGet([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + if(filter.FilterGroup.Rules.Any(t=>t.Field=="ID")) + { + var ids = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); + if(ids.Contains(",")) + { + var idArr = ids.Split(","); + filter.FilterGroup.Rules.Remove(filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID")); + filter.FilterGroup.Rules.Add(new APT.Infrastructure.Core.FilterRule + { + Field = "ID", + Operate = FilterOperate.Equal, + Value = idArr.FirstOrDefault() + }); + } + } + var entity = this.GetEntity(null,filter); + return entity; + }); + } /// diff --git a/dll/APT.Infrastructure.Api.dll b/dll/APT.Infrastructure.Api.dll index ba65fb6..3aaf1e9 100644 Binary files a/dll/APT.Infrastructure.Api.dll and b/dll/APT.Infrastructure.Api.dll differ