From cf66ecfe53e0477115e30c7fd360fc971b2e9b10 Mon Sep 17 00:00:00 2001 From: ccongli <1441652193@qq.com> Date: Mon, 30 Oct 2023 15:31:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E9=A1=B5=E9=9D=A2=E4=B8=8E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91v5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../VOL.Core/EFDbContext/EFLoggerProvider.cs | 2 + .../config/Partial/IData_ConfigService.cs | 3 ++ .../machine/Partial/IData_MachineService.cs | 4 ++ .../config/Partial/Data_ConfigService.cs | 14 +++++++ .../machine/Partial/Data_MachineService.cs | 38 ++++++++++++++++++ .../produce/Partial/Data_ProduceService.cs | 39 +++++++++++++------ .../Controllers/Data/DataApiController.cs | 12 +++++- vol-net6/VOL.WebApi/VOL.WebApi.csproj.user | 2 +- vol-net6/VOL.WebApi/appsettings.json | 5 ++- 10 files changed, 103 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index e342c36..c0ec23e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /vol-net6/VOL.WebApi/quartz/* /vol-net6/VOL.Data/obj /vol-net6/VOL.Data/bin +/vol-net6/TestProject1 diff --git a/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs b/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs index fde2f37..da8ec82 100644 --- a/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs +++ b/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs @@ -29,6 +29,8 @@ namespace VOL.Core.EFDbContext // TODO: 拿到日志内容想怎么玩就怎么玩吧 Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; // 字体绿色 + string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Console.WriteLine($"**************{time}****************"); Console.WriteLine(logContent); Console.ResetColor(); } diff --git a/vol-net6/VOL.Data/IServices/config/Partial/IData_ConfigService.cs b/vol-net6/VOL.Data/IServices/config/Partial/IData_ConfigService.cs index 655874a..363770a 100644 --- a/vol-net6/VOL.Data/IServices/config/Partial/IData_ConfigService.cs +++ b/vol-net6/VOL.Data/IServices/config/Partial/IData_ConfigService.cs @@ -12,6 +12,9 @@ namespace VOL.Data.IServices // 获取设备配置列表 List getConfigList(); + // 获取尼可尼设备配置列表 + List getNKNConfigList(); + // 根据主键查询设备 Data_Config GetConfigById(int id); diff --git a/vol-net6/VOL.Data/IServices/machine/Partial/IData_MachineService.cs b/vol-net6/VOL.Data/IServices/machine/Partial/IData_MachineService.cs index 371b948..edccc2e 100644 --- a/vol-net6/VOL.Data/IServices/machine/Partial/IData_MachineService.cs +++ b/vol-net6/VOL.Data/IServices/machine/Partial/IData_MachineService.cs @@ -11,5 +11,9 @@ namespace VOL.Data.IServices { // 查询设备列表数据 Dictionary GetMachineData(); + + + // 尼可尼设备设备列表数据 + Dictionary GetNKNMachineData(); } } diff --git a/vol-net6/VOL.Data/Services/config/Partial/Data_ConfigService.cs b/vol-net6/VOL.Data/Services/config/Partial/Data_ConfigService.cs index 057c07f..2aeeacb 100644 --- a/vol-net6/VOL.Data/Services/config/Partial/Data_ConfigService.cs +++ b/vol-net6/VOL.Data/Services/config/Partial/Data_ConfigService.cs @@ -72,6 +72,20 @@ namespace VOL.Data.Services return list; } + public List getNKNConfigList() { + List ids = new List { 1, 2 }; + var list = _repository.DbContext.Set().Where(x => ids.Contains(x.id)).Select(x => new Data_Config() + { + id = x.id, + name = x.name, + type = x.type, + device_ip = x.device_ip, + com_ip = x.com_ip + }).OrderBy(x => x.id).ToList(); + return list; + } + + public Data_Config GetConfigById(int id) { return _repository.DbContext.Set().FirstOrDefault(e => e.id == id); } diff --git a/vol-net6/VOL.Data/Services/machine/Partial/Data_MachineService.cs b/vol-net6/VOL.Data/Services/machine/Partial/Data_MachineService.cs index 7d15868..d7b7754 100644 --- a/vol-net6/VOL.Data/Services/machine/Partial/Data_MachineService.cs +++ b/vol-net6/VOL.Data/Services/machine/Partial/Data_MachineService.cs @@ -115,6 +115,44 @@ namespace VOL.Data.Services } + public Dictionary GetNKNMachineData() + { + var db = _repository.DbContext.Set(); + var machineList = new Dictionary(); + List configList = Data_ConfigService.Instance.getNKNConfigList(); + IQueryable query = db.Where(x => x.com_status == 5); + foreach (Data_Config config in configList) + { + // 机床数据,各自取最新一条 + Data_Machine? data_Machine = query.Where(x => x.config_id == config.id). + OrderByDescending(d => d.CreateDate).FirstOrDefault(); + if (data_Machine != null) + { + data_Machine.com_ip = config.com_ip; + data_Machine.name = config.name; + data_Machine.totalQuantity = data_Machine.quantity_total; + data_Machine.totalRuntime = data_Machine.run_time_total; + // 判断通讯是否断开 +#pragma warning disable CS8600 + Data_Machine lastdata_Machine = db.Where(x => x.config_id == config.id). + OrderByDescending(d => d.CreateDate).FirstOrDefault(); +#pragma warning restore CS8600 + data_Machine.com_status = lastdata_Machine.com_status; + // 生产数据, 各自取最新一条 + Func where = p => p.config_id == config.id && p.com_status == 5; + Data_Produce data_Produce = Data_ProduceService.Instance.getLastProduceData(where); + if (data_Produce != null) + { + data_Machine.currentTurnout = data_Produce.turnout_all; + data_Machine.OEE = data_Produce.oee; + } + machineList.Add(config.id, data_Machine); + } + } + return machineList; + } + + // 重写Add方法 public override WebResponseContent Add(SaveModel saveDataModel) { Dictionary mapData = saveDataModel.MainData; diff --git a/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs b/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs index 88f6a52..c36b8cf 100644 --- a/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs +++ b/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs @@ -24,6 +24,8 @@ using VOL.Core.Enums; using VOL.Core.Filters; using VOL.System.IServices; using VOL.System.Services; +using Confluent.Kafka; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; namespace VOL.Data.Services { @@ -79,12 +81,16 @@ namespace VOL.Data.Services public Dictionary produceDataGroupByWeekDays() { - List configList = Data_ConfigService.Instance.getConfigList(); + //List configList = Data_ConfigService.Instance.getConfigList(); + List configList = Data_ConfigService.Instance.getNKNConfigList(); if (configList == null) { return new(); } + List configIds = configList.Select(c => c.id.ToString()).ToList(); + //string configIds = string.Join(",", idList); var dapper = DBServerProvider.SqlDapper; string sql = @"SELECT + d.id, c.datelist AS date, d.config_id AS configId, COALESCE ( MAX( turnout_all ), 0 ) AS currentTurnout @@ -92,30 +98,39 @@ namespace VOL.Data.Services data_calendar c LEFT JOIN data_produce d ON c.datelist = DATE( d.CreateDate ) AND d.com_status = @comStatus + AND d.config_id IN @configIds WHERE - c.datelist BETWEEN CURDATE() - INTERVAL @Redays DAY - AND CURDATE() + c.datelist BETWEEN CURDATE() - INTERVAL @Redays DAY AND CURDATE() GROUP BY - c.datelist, - d.config_id"; + date, + configId"; int comStatus = 5; int Redays = 6; // 原生sql动态查询 - var result = dapper.QueryDynamicList(sql, new { comStatus, Redays }); + var result = dapper.QueryDynamicList(sql, new { comStatus, configIds, Redays }); + Console.WriteLine(result); var resultMap = new Dictionary(); var datelist = result.Select(p => p.date.ToString("yyyy-MM-dd")).Distinct().ToList(); var configMap = new Dictionary>(); foreach (var config in configList) { - var data = new List(); - foreach (var item in result) + configMap.Add(config.id.ToString(), new List()); + } + foreach (var item in result) + { + + if (item.configId == null) { - //Console.WriteLine(item.currentTurnout.GetType()); Int64 - if (item.configId == null || item.configId == config.id) { - data.Add(Convert.ToInt32(item.currentTurnout)); + foreach (var configPair in configMap) + { + configPair.Value.Add(0); } } - configMap.Add(config.id.ToString(), data); + else + { + string id = item.configId.ToString(); + configMap[id]?.Add(Convert.ToInt32(item.currentTurnout)); + } } resultMap.Add("datelist", datelist); resultMap.Add("dataMap", configMap); diff --git a/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs b/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs index 679d804..e843a23 100644 --- a/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs +++ b/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs @@ -13,6 +13,7 @@ using Confluent.Kafka; using VOL.Data.IServices; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using Newtonsoft.Json; +using VOL.Data.Services; namespace VOL.WebApi.Controllers.Data { @@ -44,6 +45,8 @@ namespace VOL.WebApi.Controllers.Data } + // 大屏接口,未进行数据隔离操作,后续需要维护todo (自定义Service接口、dapper查询需要手动维护租户字段) + // 获取设备配置数据 [HttpPost, Route("GetDeviceConfig")] public IActionResult getDeviceConfig([FromBody] PageDataOptions loadData) @@ -56,7 +59,7 @@ namespace VOL.WebApi.Controllers.Data public IActionResult getMachineData([FromBody] Data_Config config) // application/json模式 { //Console.WriteLine(JsonConvert.SerializeObject(config)); - return Json(_machineService.GetMachineData()); + return Json(_machineService.GetNKNMachineData()); } @@ -76,6 +79,11 @@ namespace VOL.WebApi.Controllers.Data } - + [HttpPost, Route("test")] + public IActionResult test() + { + List configList = Data_ConfigService.Instance.getNKNConfigList(); + return Json(configList); + } } } diff --git a/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user b/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user index b466ae3..5df3ba1 100644 --- a/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user +++ b/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user @@ -5,7 +5,7 @@ VOL.WebApi - E:\jxx\Vue.NetCore\.Net6版本\VOL.WebApi\Properties\PublishProfiles\FolderProfile1.pubxml + D:\website\net6\vol-yxsc\vol-net6\VOL.WebApi\Properties\PublishProfiles\FolderProfile.pubxml ApiControllerEmptyScaffolder root/Common/Api diff --git a/vol-net6/VOL.WebApi/appsettings.json b/vol-net6/VOL.WebApi/appsettings.json index b8d3a8a..d7bafd9 100644 --- a/vol-net6/VOL.WebApi/appsettings.json +++ b/vol-net6/VOL.WebApi/appsettings.json @@ -16,7 +16,8 @@ "Connection": { "DBType": "MySql", //MySql/MsSql/PgSql //数据库类型,如果使用的是sqlserver此处应设置为MsSql //mysql连接字符串(升级EFCore3.1到时已将mysql连接字符串修改,2019-12-20) - "DbConnectionString": "Data Source=222.71.165.187;Database=vol-yxsc;AllowLoadLocalInfile=true;User ID=root;Password=qawsed,.123;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=3309;sslmode=none;", + //"DbConnectionString": "Data Source=222.71.165.187;Database=vol-yxsc;AllowLoadLocalInfile=true;User ID=root;Password=qawsed,.123;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=3309;sslmode=none;", + "DbConnectionString": "Data Source=119.45.219.66;Database=yxsc;AllowLoadLocalInfile=true;User ID=yxsc;Password=CFyrHyex5A2A5Tby;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=3306;sslmode=none;", //sqlserver连接字符串 //"DbConnectionString": "Data Source=DESKTOP-JJQM2OL\\SQLEXPRESS;Initial Catalog=netcoredev;Persist Security Info=True;User ID=sa;Password=123456;Connect Timeout=500;", //PgSql连接字符串 @@ -35,7 +36,7 @@ }, //================跨域请求 (CORS)配置(2019-12-20新增), //================.netcore3.1必须配置此属性,多个url用豆号隔开,url为vue站点的地址,可以将发布后的地址也同时配置上 - "CorsUrls": "http://localhost:8081,http://localhost:8080,http://localhost:7080,http://localhost:9980,http://127.0.0.1:9980,http://localhost:9990,http://www.volcore.xyz", + "CorsUrls": "http://localhost:8081,http://localhost:8080,http://localhost:7080,http://localhost:9980,http://127.0.0.1:9980,http://localhost:9990,http://119.45.219.66:9990", "ExpMinutes": "120", //JWT有效期(分钟=默认120), "CreateMember": { //对表插入数据时,需要记录创建人/创建时间/创建日期,配置UserIdField/UserNameField/DateField分别为对应数据库的创建人CreateID,创建人Creator,创建时间CreateDate字段(新建数据时,由框架默认完成给这几个字段赋值,字段区分大小写)或可手动调用T.SetCreateDefaultVal()完成设置创建人/创建时间/创建日期 //如果表的主键是GUID,界面查询时默认会用到DateField对应的实体(数据库)字段进行排序