diff --git a/ReportingServices.APIs/Controllers/FabTimeController.cs b/ReportingServices.APIs/Controllers/FabTimeController.cs new file mode 100644 index 0000000..6bf4b68 --- /dev/null +++ b/ReportingServices.APIs/Controllers/FabTimeController.cs @@ -0,0 +1,37 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ReportingServices.Shared.Models.ProductionReport; +using ReportingServices.Shared.Repositories; + +namespace ReportingServices.API.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class FabTimeController : ControllerBase + { + private readonly IFabTimeReportingRepository _fabTimeReportingRepository; + + public FabTimeController(IFabTimeReportingRepository fabTimeReportingRepository) + { + _fabTimeReportingRepository = fabTimeReportingRepository; + } + + [HttpGet("ReactorOuts")] + public async Task> GetReactorOuts(string startDate, string endDate) + { + return await _fabTimeReportingRepository.GetMovesTrendData(startDate, endDate); + } + + [HttpGet("ToolStateTrend")] + public async Task> GetToolStateTrendData(string toolType) + { + return await _fabTimeReportingRepository.GetToolStateTrendData(toolType); + } + + [HttpGet("ToolState")] + public async Task> GetToolStateData(string toolType) + { + return await _fabTimeReportingRepository.GetToolStateData(toolType); + } + } +} diff --git a/ReportingServices.APIs/Controllers/ScrapeDBController.cs b/ReportingServices.APIs/Controllers/ScrapeDBController.cs new file mode 100644 index 0000000..451d5eb --- /dev/null +++ b/ReportingServices.APIs/Controllers/ScrapeDBController.cs @@ -0,0 +1,58 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ReportingServices.Shared.Models.PlanningReport; +using ReportingServices.Shared.Models.ProductionReport; +using ReportingServices.Shared.Repositories; + +namespace ReportingServices.API.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class ScrapeDBController : ControllerBase + { + private readonly IScrapeDatabaseRepository _scrapeDBRepository; + + public ScrapeDBController(IScrapeDatabaseRepository scrapeDBRepository) + { + _scrapeDBRepository = scrapeDBRepository; + } + + [HttpGet("Scrap")] + public List GetScrapByDay(List outs) + { + return _scrapeDBRepository.GetScrapByDay(outs); + } + + [HttpGet("PSNWO")] + public List GetReactorPSNWORuns(string startDate, string endDate) + { + var path = Environment.CurrentDirectory; + + return _scrapeDBRepository.GetReactorPSNWORuns(startDate, endDate); + } + + [HttpGet("PartChanges")] + public int GetNumberOfPartChanges(string startDate, string endDate) + { + return _scrapeDBRepository.GetNumberOfPartChanges(startDate, endDate); + } + + [HttpGet("Targets")] + public QuarterlyTargets GetQuarterlyTargets() + { + return _scrapeDBRepository.GetQuarterlyTargets(); + } + + [HttpGet("Reactors")] + public List GetReactors() + { + return _scrapeDBRepository.GetReactors(); + } + + [HttpGet("RDS")] + public List GetRDSForLastDay() + { + return _scrapeDBRepository.GetRDSForLastDay(); + } + } +} diff --git a/ReportingServices.APIs/Program.cs b/ReportingServices.APIs/Program.cs new file mode 100644 index 0000000..08dfa70 --- /dev/null +++ b/ReportingServices.APIs/Program.cs @@ -0,0 +1,29 @@ +using ReportingServices.Shared.Repositories; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/ReportingServices.APIs/Properties/launchSettings.json b/ReportingServices.APIs/Properties/launchSettings.json new file mode 100644 index 0000000..9f304c7 --- /dev/null +++ b/ReportingServices.APIs/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:43372", + "sslPort": 44364 + } + }, + "profiles": { + "ReportingServicesAPIs": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7196;http://localhost:5196", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/ReportingServices.APIs/ReportingServices.API.csproj b/ReportingServices.APIs/ReportingServices.API.csproj new file mode 100644 index 0000000..7a18bdd --- /dev/null +++ b/ReportingServices.APIs/ReportingServices.API.csproj @@ -0,0 +1,17 @@ + + + + net6.0 + disable + enable + + + + + + + + + + + diff --git a/ReportingServices.APIs/appsettings.Development.json b/ReportingServices.APIs/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/ReportingServices.APIs/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/ReportingServices.APIs/appsettings.json b/ReportingServices.APIs/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/ReportingServices.APIs/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/ReportingServices.Shared/Models/HelperClasses/APIHelperFunctions.cs b/ReportingServices.Shared/HelperClasses/APIHelperFunctions.cs similarity index 100% rename from ReportingServices.Shared/Models/HelperClasses/APIHelperFunctions.cs rename to ReportingServices.Shared/HelperClasses/APIHelperFunctions.cs diff --git a/ReportingServices.Shared/HelperClasses/ApiCaller.cs b/ReportingServices.Shared/HelperClasses/ApiCaller.cs new file mode 100644 index 0000000..e9e230e --- /dev/null +++ b/ReportingServices.Shared/HelperClasses/ApiCaller.cs @@ -0,0 +1,22 @@ +using ReportingServices.Shared.Models.ProductionReport; +using System.Net.Http.Json; +using System.Text.Json; + +namespace ReportingServices.Shared.HelperClasses +{ + public static class ApiCaller + { + public static async Task GetApi(string url) + { + T deserializedJson; + + using (HttpClient client = new()) + { + string apiResponse = await client.GetStringAsync(url); + deserializedJson = JsonSerializer.Deserialize(apiResponse); + } + + return deserializedJson; + } + } +} diff --git a/ReportingServices.Shared/Models/HelperClasses/DailyReportHelper.cs b/ReportingServices.Shared/HelperClasses/DailyReportHelper.cs similarity index 52% rename from ReportingServices.Shared/Models/HelperClasses/DailyReportHelper.cs rename to ReportingServices.Shared/HelperClasses/DailyReportHelper.cs index 915e785..d16173f 100644 --- a/ReportingServices.Shared/Models/HelperClasses/DailyReportHelper.cs +++ b/ReportingServices.Shared/HelperClasses/DailyReportHelper.cs @@ -9,6 +9,7 @@ namespace ReportingServices.Shared.HelperClasses private static IFabTimeReportingRepository _fabTimeReportingRepository; private static IScrapeDatabaseRepository _scrapeDatabaseRepository; private static readonly string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json"; + private static readonly string _baseUrlFabtime = "https://localhost:7196/api/FabTime/"; public static void SetRepositories(IFabTimeReportingRepository fabTimeReportingRepository, IScrapeDatabaseRepository scrapeDatabaseRepository) { @@ -16,21 +17,23 @@ namespace ReportingServices.Shared.HelperClasses _scrapeDatabaseRepository = scrapeDatabaseRepository; } - public static DailyReport SetUpDailyReport() + public async static Task SetUpDailyReport() { - List tasks = new(); + List>> tasksEQState = new(); + List>> tasksState = new(); DailyReport report = new(); - Task> task1 = _fabTimeReportingRepository.GetMovesTrendData(); - Task> task2 = _fabTimeReportingRepository.GetMovesTrendData(startDate: report.StartDate.AddDays(-7).ToString(), endDate: report.StartDate.ToString()); - tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "ASM")); - tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "EPP")); - tasks.Add(_fabTimeReportingRepository.GetToolStateTrendData(report, "HTR")); - tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "ASM")); - tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "EPP")); - tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "HTR")); - tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "Metrology")); - tasks.Add(_fabTimeReportingRepository.GetToolStateData(report, "Cleans")); + Task task1 = ApiCaller.GetApi(_baseUrlFabtime + "ReactorOuts?startDate=" + report.StartDate.ToString() + "&endDate=" + DateTime.Now.ToString()); + Task task2 = ApiCaller.GetApi(_baseUrlFabtime + "ReactorOuts?startDate=" + report.StartDate.AddDays(-7).ToString() + "&endDate=" + report.StartDate.ToString()); + + tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=ASM")); + tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=EPP")); + tasksEQState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolStateTrend?toolType=HTR")); + tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=ASM")); + tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=EPP")); + tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=HTR")); + tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=Metrology")); + tasksState.Add(ApiCaller.GetApi>(_baseUrlFabtime + "ToolState?toolType=Cleans")); report.QuarterlyTargets = _scrapeDatabaseRepository.GetQuarterlyTargets(); @@ -41,15 +44,20 @@ namespace ReportingServices.Shared.HelperClasses report.SetRDSInfo(_scrapeDatabaseRepository.GetRDSForLastDay()); - Task.WaitAll(tasks.ToArray()); + report.AddToolAvailibilityByType("ASM", tasksEQState[0].Result); + report.AddToolAvailibilityByType("EPP", tasksEQState[1].Result); + report.AddToolAvailibilityByType("HTR", tasksEQState[2].Result); + + report.AddToolStateByType("ASM", tasksState[0].Result); + report.AddToolStateByType("EPP", tasksState[1].Result); + report.AddToolStateByType("HTR", tasksState[2].Result); + report.AddToolStateByType("Metrology", tasksState[3].Result); + report.AddToolStateByType("Cleans", tasksState[4].Result); report.SetReactorInfo(_scrapeDatabaseRepository.GetReactors(), GetUnscheduledReactors(report)); - List scrap = _scrapeDatabaseRepository.GetScrapByDay(task1.Result); - List previousScrap = _scrapeDatabaseRepository.GetScrapByDay(task2.Result); - - report.CurrentWeek.SetYieldInformation(task1.Result, scrap); - report.PreviousWeek.SetYieldInformation(task2.Result, previousScrap); + report.CurrentWeek.SetYieldInformation(task1.Result); + report.PreviousWeek.SetYieldInformation(task2.Result); report.ReverseLists(); diff --git a/ReportingServices.Shared/Models/HelperClasses/JsonFileHandler.cs b/ReportingServices.Shared/HelperClasses/JsonFileHandler.cs similarity index 100% rename from ReportingServices.Shared/Models/HelperClasses/JsonFileHandler.cs rename to ReportingServices.Shared/HelperClasses/JsonFileHandler.cs diff --git a/ReportingServices.Shared/Models/PlanningReport/ReactorPSNWORuns.cs b/ReportingServices.Shared/Models/PlanningReport/ReactorPSNWORuns.cs index 3eebc64..0752e0a 100644 --- a/ReportingServices.Shared/Models/PlanningReport/ReactorPSNWORuns.cs +++ b/ReportingServices.Shared/Models/PlanningReport/ReactorPSNWORuns.cs @@ -1,9 +1,14 @@ -namespace ReportingServices.Shared.Models.PlanningReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.PlanningReport { public class ReactorPSNWORuns { + [JsonPropertyName("REACTOR")] public string REACTOR { get; set; } + [JsonPropertyName("PSN")] public string PSN { get; set; } + [JsonPropertyName("WO_COUNT")] public int WO_COUNT { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/EquipmentStateByDay.cs b/ReportingServices.Shared/Models/ProductionReport/EquipmentStateByDay.cs index fa1c8fb..eb9ebc8 100644 --- a/ReportingServices.Shared/Models/ProductionReport/EquipmentStateByDay.cs +++ b/ReportingServices.Shared/Models/ProductionReport/EquipmentStateByDay.cs @@ -1,8 +1,12 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class EquipmentStateByDay { + [JsonPropertyName("StartTime")] public string StartTime { get; set; } + [JsonPropertyName("AvailablePct")] public string AvailablePct { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/QuarterlyTargets.cs b/ReportingServices.Shared/Models/ProductionReport/QuarterlyTargets.cs index 0cade51..f278aa2 100644 --- a/ReportingServices.Shared/Models/ProductionReport/QuarterlyTargets.cs +++ b/ReportingServices.Shared/Models/ProductionReport/QuarterlyTargets.cs @@ -1,10 +1,16 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class QuarterlyTargets { + [JsonPropertyName("Reactor_Outs")] public int Reactor_Outs { get; set; } + [JsonPropertyName("Yield_Outs")] public int Yield_Outs { get; set; } + [JsonPropertyName("IFX_Scrap")] public int IFX_Scrap { get; set; } + [JsonPropertyName("Yield")] public float Yield { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/RDS.cs b/ReportingServices.Shared/Models/ProductionReport/RDS.cs index 1dcaf95..603cb01 100644 --- a/ReportingServices.Shared/Models/ProductionReport/RDS.cs +++ b/ReportingServices.Shared/Models/ProductionReport/RDS.cs @@ -1,11 +1,18 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class RDS { + [JsonPropertyName("Reactor")] public int Reactor { get; set; } + [JsonPropertyName("ReactorType")] public string ReactorType { get; set; } + [JsonPropertyName("DateOut")] public DateTime DateOut { get; set; } + [JsonPropertyName("UnloadTemp")] public int UnloadTemp { get; set; } + [JsonPropertyName("LayerType")] public string LayerType { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/Reactor.cs b/ReportingServices.Shared/Models/ProductionReport/Reactor.cs index 2871b3b..389ef4d 100644 --- a/ReportingServices.Shared/Models/ProductionReport/Reactor.cs +++ b/ReportingServices.Shared/Models/ProductionReport/Reactor.cs @@ -1,10 +1,16 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class Reactor { + [JsonPropertyName("ReactorNumber")] public int ReactorNumber { get; set; } + [JsonPropertyName("Type")] public string Type { get; set; } + [JsonPropertyName("PocketSize")] public string PocketSize { get; set; } + [JsonPropertyName("HasDisabledLoadLock")] public bool HasDisabledLoadlock { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/ReactorOutsByRDS.cs b/ReportingServices.Shared/Models/ProductionReport/ReactorOutsByRDS.cs index b121dc1..98a8b4d 100644 --- a/ReportingServices.Shared/Models/ProductionReport/ReactorOutsByRDS.cs +++ b/ReportingServices.Shared/Models/ProductionReport/ReactorOutsByRDS.cs @@ -1,9 +1,14 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class ReactorOutsByRDS { + [JsonPropertyName("RDS_NO")] public string RDS_NO { get; set; } + [JsonPropertyName("Units")] public string Units { get; set; } + [JsonPropertyName("EndProcessTime")] public string EndProcessTime { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/ScrapByDay.cs b/ReportingServices.Shared/Models/ProductionReport/ScrapByDay.cs index fc07042..5aca4aa 100644 --- a/ReportingServices.Shared/Models/ProductionReport/ScrapByDay.cs +++ b/ReportingServices.Shared/Models/ProductionReport/ScrapByDay.cs @@ -1,11 +1,18 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class ScrapByDay { + [JsonPropertyName("StartDate")] public string StartDate { get; set; } + [JsonPropertyName("TW_PROD")] public int TW_PROD { get; set; } + [JsonPropertyName("TOT_REJ_CUST")] public int TOT_REJ_CUST { get; set; } + [JsonPropertyName("TOT_REJ_MANU")] public int TOT_REJ_MANU { get; set; } + [JsonPropertyName("TOT_REJ_WFRS")] public int TOT_REJ_WFRS { get; set; } } } diff --git a/ReportingServices.Shared/Models/ProductionReport/ToolStateCurrent.cs b/ReportingServices.Shared/Models/ProductionReport/ToolStateCurrent.cs index 8969ad6..4288123 100644 --- a/ReportingServices.Shared/Models/ProductionReport/ToolStateCurrent.cs +++ b/ReportingServices.Shared/Models/ProductionReport/ToolStateCurrent.cs @@ -1,14 +1,24 @@ -namespace ReportingServices.Shared.Models.ProductionReport +using System.Text.Json.Serialization; + +namespace ReportingServices.Shared.Models.ProductionReport { public class ToolStateCurrent { + [JsonPropertyName("Tool")] public string Tool { get; set; } + [JsonPropertyName("TranTime")] public string TranTime { get; set; } + [JsonPropertyName("GanttEndTime")] public string GanttEndTime { get; set; } + [JsonPropertyName("GanttElapsedHours")] public string GanttElapsedHours { get; set; } + [JsonPropertyName("BasicStateDescription")] public string BasicStateDescription { get; set; } + [JsonPropertyName("SubState")] public string SubState { get; set; } + [JsonPropertyName("ReactorStatus")] public string ReactorStatus { get; set; } + [JsonPropertyName("Comment")] public string Comment { get; set; } } diff --git a/ReportingServices.Shared/Models/ProductionReport/YieldInformation.cs b/ReportingServices.Shared/Models/ProductionReport/YieldInformation.cs new file mode 100644 index 0000000..8a5b500 --- /dev/null +++ b/ReportingServices.Shared/Models/ProductionReport/YieldInformation.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace ReportingServices.Shared.Models.ProductionReport +{ + public class YieldInformation + { + [JsonPropertyName("Outs")] + public List Outs { get; set; } + [JsonPropertyName("Scrap")] + public List Scrap { get; set; } + } +} diff --git a/ReportingServices.Shared/Repositories/Implementations/FabTimeReportingRepository.cs b/ReportingServices.Shared/Repositories/Implementations/FabTimeReportingRepository.cs index 5707017..a091f7f 100644 --- a/ReportingServices.Shared/Repositories/Implementations/FabTimeReportingRepository.cs +++ b/ReportingServices.Shared/Repositories/Implementations/FabTimeReportingRepository.cs @@ -17,16 +17,14 @@ namespace ReportingServices.Shared.Repositories return await GetJsonData>(url); } - public async Task GetToolStateTrendData(DailyReport rpt, string toolType) + public async Task> GetToolStateTrendData(string toolType) { string url = APIHelperFunctions.GenerateURLWithParameters(chart: "TOOLSTATE", periodLen: "24", capacityTypesLike: toolType, toolsLike: _toolFilter); - rpt.AddToolAvailibilityByType(toolType, await GetJsonData>(url)); - - return; + return await GetJsonData>(url); } - public async Task GetToolStateData(DailyReport rpt, string toolType) + public async Task> GetToolStateData(string toolType) { string capacityFilter = toolType == "ASM" ? toolType + "%2CASM%2B" : toolType; string startDate = HttpUtility.UrlEncode(APIHelperFunctions.GetDateWithOffsetAsAPIString(DateTime.Now.ToString(), -12.5f)); @@ -34,9 +32,7 @@ namespace ReportingServices.Shared.Repositories string url = APIHelperFunctions.GenerateURLWithParameters(chart: "ToolStateGantt", periodLen: "24", capacityTypesLike: capacityFilter, toolsLike: _toolFilter, startDate: startDate); - rpt.AddToolStateByType(toolType, await GetJsonData>(url)); - - return; + return await GetJsonData>(url); } public async Task GetJsonData(string url) diff --git a/ReportingServices.Shared/Repositories/Interfaces/IFabTimeReportingRepository.cs b/ReportingServices.Shared/Repositories/Interfaces/IFabTimeReportingRepository.cs index 5af248f..900f712 100644 --- a/ReportingServices.Shared/Repositories/Interfaces/IFabTimeReportingRepository.cs +++ b/ReportingServices.Shared/Repositories/Interfaces/IFabTimeReportingRepository.cs @@ -6,8 +6,8 @@ namespace ReportingServices.Shared.Repositories public interface IFabTimeReportingRepository { public Task> GetMovesTrendData(string startDate = "", string endDate = ""); - public Task GetToolStateTrendData(DailyReport rpt, string toolType); - public Task GetToolStateData(DailyReport rpt, string toolType); + public Task> GetToolStateTrendData(string toolType); + public Task> GetToolStateData(string toolType); public Task GetJsonData(string url); } } diff --git a/ReportingServices.Shared/ViewModels/ProductionReport/YieldStatistics.cs b/ReportingServices.Shared/ViewModels/ProductionReport/YieldStatistics.cs index 2b9c7b9..6041e8c 100644 --- a/ReportingServices.Shared/ViewModels/ProductionReport/YieldStatistics.cs +++ b/ReportingServices.Shared/ViewModels/ProductionReport/YieldStatistics.cs @@ -15,10 +15,10 @@ namespace ReportingServices.Shared.ViewModels.ProductionReport IsCurrentWeek = isCurrentWeek; } - public void SetYieldInformation(List outs, List scrap) + public void SetYieldInformation(YieldInformation yieldInformation) { - OutsByDay = GetReactorOutsByDay(outs); - ScrapByDay = scrap; + OutsByDay = GetReactorOutsByDay(yieldInformation.Outs); + ScrapByDay = yieldInformation.Scrap; } public static List GetDistinctDatesFromReactorOuts(List outs) diff --git a/ReportingServices.UI/Controllers/PlanningReportController.cs b/ReportingServices.UI/Controllers/PlanningReportController.cs index 5da7c73..5e5fc3a 100644 --- a/ReportingServices.UI/Controllers/PlanningReportController.cs +++ b/ReportingServices.UI/Controllers/PlanningReportController.cs @@ -1,12 +1,14 @@ using Microsoft.AspNetCore.Mvc; using ReportingServices.Shared.Repositories; using ReportingServices.Shared.Models.PlanningReport; +using ReportingServices.Shared.HelperClasses; namespace ReportingServices.UI.Controllers { public class PlanningReportController : Controller { private readonly IScrapeDatabaseRepository _scrapeDatabaseRepository; + private readonly string _baseUrl = "https://localhost:7196/api/ScrapeDB/"; public PlanningReportController(IScrapeDatabaseRepository scrapeDatabaseRepository) { @@ -18,10 +20,13 @@ namespace ReportingServices.UI.Controllers return View(); } - public IActionResult WeeklyPartChangesReport(DateTime startDate, DateTime endDate) + public async Task WeeklyPartChangesReport(DateTime startDate, DateTime endDate) { - int numberOfPartChanges = _scrapeDatabaseRepository.GetNumberOfPartChanges(startDate.ToString(), endDate.ToString()); - List reactorPSNWORuns = _scrapeDatabaseRepository.GetReactorPSNWORuns(startDate.ToString(), endDate.ToString()); + string partChangeUrl = _baseUrl + "PartChanges?startDate=" + startDate.ToString() + "&endDate=" + endDate.ToString(); + string psnwoRunsUrl = _baseUrl + "PSNWO?startDate=" + startDate.ToString() + "&endDate=" + endDate.ToString(); + + int numberOfPartChanges = await ApiCaller.GetApi(partChangeUrl); + List reactorPSNWORuns = await ApiCaller.GetApi>(psnwoRunsUrl); WeeklyPartChanges weeklyPartChanges = new() { diff --git a/ReportingServices.UI/Controllers/ProductionReportController.cs b/ReportingServices.UI/Controllers/ProductionReportController.cs index 2e74fe7..62e5596 100644 --- a/ReportingServices.UI/Controllers/ProductionReportController.cs +++ b/ReportingServices.UI/Controllers/ProductionReportController.cs @@ -34,7 +34,7 @@ namespace ReportingServices.UI.Controllers try { DailyReportHelper.SetRepositories(_fabTimeReportingRepository, _scrapeDatabaseRepository); - DailyReport dailyReport = DailyReportHelper.SetUpDailyReport(); + DailyReport dailyReport = DailyReportHelper.SetUpDailyReport().Result; Dictionary> toolStateOwners = JsonFileHandler.LoadJSONFile>>(_toolStateOwnerFilePath); dailyReport.ToolStatesByOwner = toolStateOwners; diff --git a/ReportingServices.UI/ReportingServices.UI.csproj b/ReportingServices.UI/ReportingServices.UI.csproj index df2c458..7025435 100644 --- a/ReportingServices.UI/ReportingServices.UI.csproj +++ b/ReportingServices.UI/ReportingServices.UI.csproj @@ -18,8 +18,4 @@ - - - - diff --git a/ReportingServices.UI/wwwroot/Assets/DailyReportInfo.json b/ReportingServices.UI/wwwroot/Assets/DailyReportInfo.json index 2ee6b09..038b86e 100644 --- a/ReportingServices.UI/wwwroot/Assets/DailyReportInfo.json +++ b/ReportingServices.UI/wwwroot/Assets/DailyReportInfo.json @@ -1 +1,328 @@ -{"Previous Week":[{"Day":0,"Date":"2022-11-27T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":1,"Date":"2022-11-28T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":10,"HTRSingleLoadLock":16,"ASMUnloadTempsLessThan700":2,"HTRUnloadTempsLessThan700":1},{"Day":2,"Date":"2022-11-29T00:00:00","OperatorHeadcountDays":14,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":3,"HTRSingleLoadLock":12,"ASMUnloadTempsLessThan700":3,"HTRUnloadTempsLessThan700":1},{"Day":3,"Date":"2022-11-30T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":4,"Date":"2022-12-01T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":5,"Date":"2022-12-02T00:00:00","OperatorHeadcountDays":0,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":6,"Date":"2022-12-03T00:00:00","OperatorHeadcountDays":13,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0}],"Current Week":[{"Day":0,"Date":"2022-12-04T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":1,"Date":"2022-12-05T00:00:00","OperatorHeadcountDays":6,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":5,"HTRSingleLoadLock":14,"ASMUnloadTempsLessThan700":3,"HTRUnloadTempsLessThan700":3},{"Day":2,"Date":"2022-12-13T00:00:00","OperatorHeadcountDays":11,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0},{"Day":3,"Date":"2022-12-07T00:00:00","OperatorHeadcountDays":13,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":3,"HTRSingleLoadLock":12,"ASMUnloadTempsLessThan700":2,"HTRUnloadTempsLessThan700":1},{"Day":4,"Date":"2022-12-22T00:00:00","OperatorHeadcountDays":15,"OperatorHeadcountNights":12,"OperatorCallOutsDays":0,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R23,R24,R26,R28","DailyPartChanges":"R21","WeeklyPartChanges":"R21,R23,R25","ASMSingleLoadLock":7,"HTRSingleLoadLock":14,"ASMUnloadTempsLessThan700":4,"HTRUnloadTempsLessThan700":3},{"Day":5,"Date":"2022-12-09T00:00:00","OperatorHeadcountDays":0,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":2,"HTRSingleLoadLock":14,"ASMUnloadTempsLessThan700":2,"HTRUnloadTempsLessThan700":1},{"Day":6,"Date":"2022-12-10T00:00:00","OperatorHeadcountDays":13,"OperatorHeadcountNights":15,"OperatorCallOutsDays":2,"OperatorCallOutsNights":0,"EngineeringHeadcountDays":2,"EngineeringHeadcountNights":2,"EngineeringCallOutsDays":0,"EngineeringCallOutsNights":0,"MaintenanceHeadcountDays":4,"MaintenanceHeadcountNights":5,"MaintenanceCallOutsDays":0,"MaintenanceCallOutsNights":2,"BottleChanges":"R22","DailyPartChanges":"R22,R23,R25","WeeklyPartChanges":"R21,R23,R29,R30","ASMSingleLoadLock":0,"HTRSingleLoadLock":0,"ASMUnloadTempsLessThan700":0,"HTRUnloadTempsLessThan700":0}]} \ No newline at end of file +{ + "Previous Week": [ + { + "Day": 0, + "Date": "2022-11-27T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 1, + "Date": "2022-11-28T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 10, + "HTRSingleLoadLock": 16, + "ASMUnloadTempsLessThan700": 2, + "HTRUnloadTempsLessThan700": 1 + }, + { + "Day": 2, + "Date": "2022-11-29T00:00:00", + "OperatorHeadcountDays": 14, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 3, + "HTRSingleLoadLock": 12, + "ASMUnloadTempsLessThan700": 3, + "HTRUnloadTempsLessThan700": 1 + }, + { + "Day": 3, + "Date": "2022-11-30T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 4, + "Date": "2022-12-01T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 5, + "Date": "2022-12-02T00:00:00", + "OperatorHeadcountDays": 0, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 6, + "Date": "2022-12-03T00:00:00", + "OperatorHeadcountDays": 13, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + } + ], + "Current Week": [ + { + "Day": 0, + "Date": "2022-12-04T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 1, + "Date": "2022-12-05T00:00:00", + "OperatorHeadcountDays": 6, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 5, + "HTRSingleLoadLock": 14, + "ASMUnloadTempsLessThan700": 3, + "HTRUnloadTempsLessThan700": 3 + }, + { + "Day": 2, + "Date": "2022-12-13T00:00:00", + "OperatorHeadcountDays": 11, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + }, + { + "Day": 3, + "Date": "2022-12-07T00:00:00", + "OperatorHeadcountDays": 13, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 7, + "HTRSingleLoadLock": 15, + "ASMUnloadTempsLessThan700": 4, + "HTRUnloadTempsLessThan700": 3 + }, + { + "Day": 4, + "Date": "2022-12-22T00:00:00", + "OperatorHeadcountDays": 15, + "OperatorHeadcountNights": 12, + "OperatorCallOutsDays": 0, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R23,R24,R26,R28", + "DailyPartChanges": "R21", + "WeeklyPartChanges": "R21,R23,R25", + "ASMSingleLoadLock": 7, + "HTRSingleLoadLock": 14, + "ASMUnloadTempsLessThan700": 4, + "HTRUnloadTempsLessThan700": 3 + }, + { + "Day": 5, + "Date": "2022-12-09T00:00:00", + "OperatorHeadcountDays": 0, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 2, + "HTRSingleLoadLock": 14, + "ASMUnloadTempsLessThan700": 2, + "HTRUnloadTempsLessThan700": 1 + }, + { + "Day": 6, + "Date": "2022-12-10T00:00:00", + "OperatorHeadcountDays": 13, + "OperatorHeadcountNights": 15, + "OperatorCallOutsDays": 2, + "OperatorCallOutsNights": 0, + "EngineeringHeadcountDays": 2, + "EngineeringHeadcountNights": 2, + "EngineeringCallOutsDays": 0, + "EngineeringCallOutsNights": 0, + "MaintenanceHeadcountDays": 4, + "MaintenanceHeadcountNights": 5, + "MaintenanceCallOutsDays": 0, + "MaintenanceCallOutsNights": 2, + "BottleChanges": "R22", + "DailyPartChanges": "R22,R23,R25", + "WeeklyPartChanges": "R21,R23,R29,R30", + "ASMSingleLoadLock": 0, + "HTRSingleLoadLock": 0, + "ASMUnloadTempsLessThan700": 0, + "HTRUnloadTempsLessThan700": 0 + } + ] +} \ No newline at end of file diff --git a/ReportingServicesAPIs/Controllers/FabTimeController.cs b/ReportingServicesAPIs/Controllers/FabTimeController.cs new file mode 100644 index 0000000..310cee8 --- /dev/null +++ b/ReportingServicesAPIs/Controllers/FabTimeController.cs @@ -0,0 +1,46 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ReportingServices.Shared.Models.ProductionReport; +using ReportingServices.Shared.Repositories; + +namespace ReportingServices.API.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class FabTimeController : ControllerBase + { + private readonly IFabTimeReportingRepository _fabTimeReportingRepository; + private readonly IScrapeDatabaseRepository _scrapeDBRepository; + + public FabTimeController(IFabTimeReportingRepository fabTimeReportingRepository, IScrapeDatabaseRepository scrapeDBRepository) + { + _fabTimeReportingRepository = fabTimeReportingRepository; + _scrapeDBRepository = scrapeDBRepository; + } + + [HttpGet("ReactorOuts")] + public async Task GetReactorOuts(string startDate, string endDate) + { + List outs = await _fabTimeReportingRepository.GetMovesTrendData(startDate, endDate); + YieldInformation yieldInformation = new() + { + Outs = outs, + Scrap = _scrapeDBRepository.GetScrapByDay(outs) + }; + + return yieldInformation; + } + + [HttpGet("ToolStateTrend")] + public async Task> GetToolStateTrendData(string toolType) + { + return await _fabTimeReportingRepository.GetToolStateTrendData(toolType); + } + + [HttpGet("ToolState")] + public async Task> GetToolStateData(string toolType) + { + return await _fabTimeReportingRepository.GetToolStateData(toolType); + } + } +} diff --git a/ReportingServicesAPIs/Controllers/ScrapeDBController.cs b/ReportingServicesAPIs/Controllers/ScrapeDBController.cs new file mode 100644 index 0000000..c127e31 --- /dev/null +++ b/ReportingServicesAPIs/Controllers/ScrapeDBController.cs @@ -0,0 +1,50 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ReportingServices.Shared.Models.PlanningReport; +using ReportingServices.Shared.Models.ProductionReport; +using ReportingServices.Shared.Repositories; + +namespace ReportingServices.API.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class ScrapeDBController : ControllerBase + { + private readonly IScrapeDatabaseRepository _scrapeDBRepository; + + public ScrapeDBController(IScrapeDatabaseRepository scrapeDBRepository) + { + _scrapeDBRepository = scrapeDBRepository; + } + + [HttpGet("PSNWO")] + public List GetReactorPSNWORuns(string startDate, string endDate) + { + return _scrapeDBRepository.GetReactorPSNWORuns(startDate, endDate); + } + + [HttpGet("PartChanges")] + public int GetNumberOfPartChanges(string startDate, string endDate) + { + return _scrapeDBRepository.GetNumberOfPartChanges(startDate, endDate); + } + + [HttpGet("Targets")] + public QuarterlyTargets GetQuarterlyTargets() + { + return _scrapeDBRepository.GetQuarterlyTargets(); + } + + [HttpGet("Reactors")] + public List GetReactors() + { + return _scrapeDBRepository.GetReactors(); + } + + [HttpGet("RDS")] + public List GetRDSForLastDay() + { + return _scrapeDBRepository.GetRDSForLastDay(); + } + } +} diff --git a/ReportingServicesAPIs/Controllers/WeatherForecastController.cs b/ReportingServicesAPIs/Controllers/WeatherForecastController.cs deleted file mode 100644 index d44911b..0000000 --- a/ReportingServicesAPIs/Controllers/WeatherForecastController.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace ReportingServicesAPIs.Controllers -{ - [ApiController] - [Route("[controller]")] - public class WeatherForecastController : ControllerBase - { - private static readonly string[] Summaries = new[] - { - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - }; - - private readonly ILogger _logger; - - public WeatherForecastController(ILogger logger) - { - _logger = logger; - } - - [HttpGet(Name = "GetWeatherForecast")] - public IEnumerable Get() - { - return Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = DateTime.Now.AddDays(index), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }) - .ToArray(); - } - } -} \ No newline at end of file diff --git a/ReportingServicesAPIs/Program.cs b/ReportingServicesAPIs/Program.cs index 48863a6..8f9d30e 100644 --- a/ReportingServicesAPIs/Program.cs +++ b/ReportingServicesAPIs/Program.cs @@ -1,11 +1,14 @@ +using ReportingServices.Shared.Repositories; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. - builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); var app = builder.Build(); diff --git a/ReportingServicesAPIs/ReportingServices.API.csproj b/ReportingServicesAPIs/ReportingServices.API.csproj index e7dbb17..7a18bdd 100644 --- a/ReportingServicesAPIs/ReportingServices.API.csproj +++ b/ReportingServicesAPIs/ReportingServices.API.csproj @@ -10,4 +10,8 @@ + + + + diff --git a/ReportingServicesAPIs/WeatherForecast.cs b/ReportingServicesAPIs/WeatherForecast.cs deleted file mode 100644 index 6fd08f9..0000000 --- a/ReportingServicesAPIs/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace ReportingServicesAPIs -{ - public class WeatherForecast - { - public DateTime Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string Summary { get; set; } - } -} \ No newline at end of file