diff --git a/FrontendWebApi/ApiControllers/HistoryController.cs b/FrontendWebApi/ApiControllers/HistoryController.cs index a3ff0fa..ff8622a 100644 --- a/FrontendWebApi/ApiControllers/HistoryController.cs +++ b/FrontendWebApi/ApiControllers/HistoryController.cs @@ -26,15 +26,18 @@ namespace FrontendWebApi.ApiControllers { private readonly IBackendRepository backendRepository; private readonly IFrontendRepository frontendRepository; + private readonly IBackgroundServiceMsSqlRepository backgroundServiceMsSqlRepository; public HistoryController ( IBackendRepository backendRepository, - IFrontendRepository frontendRepository + IFrontendRepository frontendRepository, + IBackgroundServiceMsSqlRepository backgroundServiceMsSqlRepository ) { this.backendRepository = backendRepository; this.frontendRepository = frontendRepository; + this.backgroundServiceMsSqlRepository = backgroundServiceMsSqlRepository; } /// @@ -1083,5 +1086,57 @@ namespace FrontendWebApi.ApiControllers } return Ok(apiResult); } + + /// + /// 即使歷史資料(前7天) + /// + /// + /// + [HttpPost] + [Route("api/HistoryRealTime")] + public async Task>>> GetHistoryRealTime ([FromBody] HistoryRealTimeInput input) + { + ApiResult> apiResult = new ApiResult>(jwt_str); + apiResult.Data = new List(); + if (!jwtlife) + { + apiResult.Code = "5000"; + return BadRequest(apiResult); + } + if (input.tableDeviceName.Count == 0) + { + apiResult.Code = "9998"; + apiResult.Msg = "沒有設備被選擇"; + return BadRequest(apiResult); + } + + try + { + List tableName = new List(); + foreach (var dn in input.tableDeviceName) + { + tableName.AddRange(await backgroundServiceMsSqlRepository.GetAllAsync($"select table_name from INFORMATION_SCHEMA.TABLES where table_name like '{dn}%'")); + } + + if (tableName.Count > 0) + { + foreach (var tn in tableName) + { + var sql = $@"select timestamp as timeStamp, round(value, 2) as value from {tn} where replace(convert(varchar, [timestamp], 111), '/', '-') >= @startTime and replace(convert(varchar, [timestamp], 111), '/', '-') <= @endTime ordr by timestamp"; + apiResult.Data.AddRange( + await backgroundServiceMsSqlRepository.GetAllAsync(sql, new { startTime = input.startTime, endTime = input.endTime }) + ); + } + } + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + return Ok(apiResult); + } + return Ok(apiResult); + } } } diff --git a/FrontendWebApi/Models/HistoryClass.cs b/FrontendWebApi/Models/HistoryClass.cs index 8b8c123..2c97502 100644 --- a/FrontendWebApi/Models/HistoryClass.cs +++ b/FrontendWebApi/Models/HistoryClass.cs @@ -295,4 +295,17 @@ namespace FrontendWebApi.Models public string dateType { get; set; } public string type { get; set; } } + + public class HistoryRealTimeInput + { + public List tableDeviceName { get; set; } + public string startTime { get; set; } + public string endTime { get; set; } + } + + public class HistoryRealTimeOutput + { + public double value { get; set; } + public DateTime timeStamp { get; set; } + } } diff --git a/FrontendWebApi/Startup.cs b/FrontendWebApi/Startup.cs index 0b4cf1f..956d4d8 100644 --- a/FrontendWebApi/Startup.cs +++ b/FrontendWebApi/Startup.cs @@ -91,6 +91,7 @@ namespace FrontendWebApi services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); #endregion Repository `J #region JWT `J diff --git a/FrontendWebApi/appsettings.json b/FrontendWebApi/appsettings.json index 2a2253a..eef838c 100644 --- a/FrontendWebApi/appsettings.json +++ b/FrontendWebApi/appsettings.json @@ -29,6 +29,13 @@ "Root": "SzdxEgaJJ7tcTCrUl2zKsA==", "Password": "FVAPxztxpY4gJJKQ/se4bQ==" }, + "MSSqlDBConfig": { + "Server": "bJm+UAtbeaTjDmp/A5ep2w==", //0.130 + "Port": "S5cUXKnKOacFtFy9+0dtpw==", + "Database": "VvfWH/59gQguY2eA2xBCug==", //taipei_dome + "Root": "sD8GZ9UPiIQGU6dU011/4A==", + "Password": "0O24es2ZRF5uoJ4aU+YCdg==" + } //"MSSqlDBConfig": { // "Server": "avZg8PA8C9GVgYZBgEKzCg==", // "Port": "lJA0KPkG6RvFfTgWiXFyUw==",