Added data pull for previous week and capability for production passdown to view previous week data, added tool state mapping json file and production passdown report shows owners, removed unnecessary jQuery package.

This commit is contained in:
Daniel Wathen
2022-12-07 10:44:11 -07:00
parent 3409ad58b7
commit 4592b035b6
16 changed files with 651 additions and 576 deletions

View File

@ -3,8 +3,6 @@ using ReportingServices.Dependency_Injections;
using ReportingServices.HelperClasses;
using ReportingServices.Models.ProductionReport;
using ReportingServices.ReportingObjects;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Web;
namespace ReportingServices.Controllers
@ -15,7 +13,8 @@ namespace ReportingServices.Controllers
private readonly IScrapeDatabaseRepository _scrapeDatabaseRepository;
private readonly IFabTimeReportingRepository _fabTimeReportingRepository;
private readonly int _reportIndex = (int)DateTime.Now.DayOfWeek;
private readonly string _dailyRptFileName = "wwwroot/Assets/DailyReportInfo.json";
private readonly string _dailyRptFilePath = "wwwroot/Assets/DailyReportInfo.json";
private readonly string _toolStateOwnerFilePath = "wwwroot/Assets/ToolStates.json";
private readonly string _toolFilter = "~R76%2C%20~R78%2C%20~R25%2C%20~R67%2C%20~R69%2C%20~R71%2C%20~R47%2C%20~R51%2C%20~R28";
public ProductionReportController(IJsonFileHandler jsonFileHandler, IScrapeDatabaseRepository scrapeDatabaseRepository, IFabTimeReportingRepository fabTimeReportingRepository)
@ -34,15 +33,18 @@ namespace ReportingServices.Controllers
public IActionResult DailyReport()
{
DailyReport dailyReport = SetUpDailyReport();
Dictionary<string, List<string>> toolStateOwners = _jsonFileHandler.LoadJSONFile<Dictionary<string, List<string>>>(_toolStateOwnerFilePath);
dailyReport.ToolStatesByOwner = toolStateOwners;
return View(dailyReport);
}
public IActionResult EditDailyReport()
{
JsonNode node = _jsonFileHandler.LoadJSONFile<JsonNode>(_dailyRptFileName);
Dictionary<string, List<ManualReportEntries>> entries = _jsonFileHandler.LoadJSONFile<Dictionary<string, List<ManualReportEntries>>>(_dailyRptFilePath);
ManualReportEntries rpt = JsonSerializer.Deserialize<ManualReportEntries>(node[(int)DateTime.Now.DayOfWeek]["Entries"]);
ManualReportEntries rpt = entries["Current Week"][_reportIndex];
return View(rpt);
}
@ -50,18 +52,21 @@ namespace ReportingServices.Controllers
[HttpPost]
public IActionResult EditDailyReport(ManualReportEntries rpt)
{
List<ManualReportEntriesByDay> report = _jsonFileHandler.LoadJSONFile<List<ManualReportEntriesByDay>>(_dailyRptFileName);
Dictionary<string, List<ManualReportEntries>> report = _jsonFileHandler.LoadJSONFile<Dictionary<string, List<ManualReportEntries>>>(_dailyRptFilePath);
report[_reportIndex].Entries = rpt;
rpt.Date = DateTime.Parse(DateTime.Now.ToShortDateString());
rpt.Day = DateTime.Now.DayOfWeek;
_jsonFileHandler.SaveJSONFile(report, _dailyRptFileName);
report["Current Week"][_reportIndex] = rpt;
_jsonFileHandler.SaveJSONFile(report, _dailyRptFilePath);
return RedirectToAction("DailyReport");
}
public async Task<List<ReactorOutsByRDS>> MovesTrendCaller()
public async Task<List<ReactorOutsByRDS>> MovesTrendCaller(string startDate = "", string endDate = "")
{
string url = APIHelperFunctions.GenerateURLWithParameters(chart: "MOVESLOTLIST", areasLike: "CLEANROOM", operationsLike: "1UNLOAD");
string url = APIHelperFunctions.GenerateURLWithParameters(startDate: startDate, endDate: endDate, chart: "MOVESLOTLIST", areasLike: "CLEANROOM", operationsLike: "1UNLOAD");
List<ReactorOutsByRDS> outsByRDS = await _fabTimeReportingRepository.GetMovesTrendData(url);
@ -80,7 +85,7 @@ namespace ReportingServices.Controllers
public async Task<List<ToolStateCurrent>> ToolStatesCaller(string toolType)
{
string capacityFilter = toolType == "ASM" ? toolType + "%2CASM%2B" : toolType;
string startDate = HttpUtility.UrlEncode(APIHelperFunctions.GetDateWithOffsetAsAPIString(DateTime.Now.ToString(), 12.5f));
string startDate = HttpUtility.UrlEncode(APIHelperFunctions.GetDateWithOffsetAsAPIString(DateTime.Now.ToString(), -12.5f));
string url = APIHelperFunctions.GenerateURLWithParameters(chart: "ToolStateGantt", periodLen: "24",
capacityTypesLike: capacityFilter, toolsLike: _toolFilter, startDate: startDate);
@ -95,44 +100,82 @@ namespace ReportingServices.Controllers
DailyReport report = new();
Task<List<ReactorOutsByRDS>> task1 = MovesTrendCaller();
Task<List<EquipmentStateByDay>> task2 = ToolStateTrendCaller("ASM");
Task<List<EquipmentStateByDay>> task3 = ToolStateTrendCaller("EPP");
Task<List<EquipmentStateByDay>> task4 = ToolStateTrendCaller("HTR");
Task<List<ToolStateCurrent>> task5 = ToolStatesCaller("ASM");
Task<List<ToolStateCurrent>> task6 = ToolStatesCaller("EPP");
Task<List<ToolStateCurrent>> task7 = ToolStatesCaller("HTR");
Task<List<ReactorOutsByRDS>> task2 = MovesTrendCaller(startDate: report.StartDate.AddDays(-7).ToString(), endDate: report.StartDate.ToString());
Task<List<EquipmentStateByDay>> task3 = ToolStateTrendCaller("ASM");
Task<List<EquipmentStateByDay>> task4 = ToolStateTrendCaller("EPP");
Task<List<EquipmentStateByDay>> task5 = ToolStateTrendCaller("HTR");
Task<List<ToolStateCurrent>> task6 = ToolStatesCaller("ASM");
Task<List<ToolStateCurrent>> task7 = ToolStatesCaller("EPP");
Task<List<ToolStateCurrent>> task8 = ToolStatesCaller("HTR");
Task<List<ToolStateCurrent>> task9 = ToolStatesCaller("Metrology");
Task<List<ToolStateCurrent>> task10 = ToolStatesCaller("Cleans");
report.SetOutsByDay(task1.Result);
report.CurrentWeek.SetOutsByDay(task1.Result);
report.PreviousWeek.SetOutsByDay(task2.Result);
List<ScrapByDay> scrap = _scrapeDatabaseRepository.GetScrapByDay(task1.Result);
List<ScrapByDay> previousScrap = _scrapeDatabaseRepository.GetScrapByDay(task2.Result);
report.SetScrapByDay(scrap);
report.AddToolAvailibilityByType("ASM", task2.Result);
report.AddToolAvailibilityByType("EPP", task3.Result);
report.AddToolAvailibilityByType("HTR", task4.Result);
report.AddToolStateByType("ASM", task5.Result);
report.AddToolStateByType("EPP", task6.Result);
report.AddToolStateByType("HTR", task7.Result);
report.CurrentWeek.SetScrapByDay(scrap);
report.PreviousWeek.SetScrapByDay(previousScrap);
report.AddToolAvailibilityByType("ASM", task3.Result);
report.AddToolAvailibilityByType("EPP", task4.Result);
report.AddToolAvailibilityByType("HTR", task5.Result);
report.AddToolStateByType("ASM", task6.Result);
report.AddToolStateByType("EPP", task7.Result);
report.AddToolStateByType("HTR", task8.Result);
report.AddToolStateByType("Metrology", task9.Result);
report.AddToolStateByType("Cleans", task10.Result);
report.ReverseLists();
int[] toolsByWaferSize = _scrapeDatabaseRepository.GetNumberOfToolsByWaferSize();
report.QuarterlyTargets = _scrapeDatabaseRepository.GetQuarterlyTargets();
int[] toolsByWaferSize = _scrapeDatabaseRepository.GetNumberOfToolsByWaferSize("''");
report.NumberOfToolsWaferSize6IN = toolsByWaferSize[0];
report.NumberOfToolsWaferSize8IN = toolsByWaferSize[1];
List<ManualReportEntriesByDay> entries = _jsonFileHandler.LoadJSONFile<List<ManualReportEntriesByDay>>(_dailyRptFileName);
string reactors = "";
report.Entries = entries;
foreach (KeyValuePair<string, ToolStateByType> keyValuePairs in report.ToolStateByType)
{
if (keyValuePairs.Key != "Metrology" && keyValuePairs.Key != "Cleans")
{
foreach (ToolStateCurrent tool in keyValuePairs.Value.ToolStateCurrents)
{
if (tool.BasicStateDescription != "Productive" && tool.ReactorStatus != "Out of Service")
{
reactors = reactors + "'" + tool.Tool.Substring(1) + "', ";
}
}
}
}
reactors = reactors.Substring(0, reactors.Length - 2);
int[] toolsByWaferSizeScheduled = _scrapeDatabaseRepository.GetNumberOfToolsByWaferSize(reactors);
report.NumberOfToolsWaferSize6INScheduled = toolsByWaferSizeScheduled[0];
report.NumberOfToolsWaferSize8INScheduled = toolsByWaferSizeScheduled[1];
Dictionary<string, List<ManualReportEntries>> entries = _jsonFileHandler.LoadJSONFile<Dictionary<string, List<ManualReportEntries>>>(_dailyRptFilePath);
report.CurrentEntries = entries["Current Week"];
report.PreviousEntries = entries["Previous Week"];
int[] singleLoadLocks = _scrapeDatabaseRepository.GetNumberOfSingleLoadLocks();
report.Entries[_reportIndex].Entries.ASMSingleLoadLock = singleLoadLocks[0];
report.Entries[_reportIndex].Entries.HTRSingleLoadLock = singleLoadLocks[1];
report.CurrentEntries[_reportIndex].ASMSingleLoadLock = singleLoadLocks[0];
report.CurrentEntries[_reportIndex].HTRSingleLoadLock = singleLoadLocks[1];
int[] unloadTempsLessThan700 = _scrapeDatabaseRepository.GetNumberOfToolUnloadTempsLessThan700();
report.Entries[_reportIndex].Entries.ASMUnloadTempsLessThan700 = unloadTempsLessThan700[0];
report.Entries[_reportIndex].Entries.HTRUnloadTempsLessThan700 = unloadTempsLessThan700[1];
report.CurrentEntries[_reportIndex].ASMUnloadTempsLessThan700 = unloadTempsLessThan700[0];
report.CurrentEntries[_reportIndex].HTRUnloadTempsLessThan700 = unloadTempsLessThan700[1];
entries["Current Week"] = report.CurrentEntries;
_jsonFileHandler.SaveJSONFile(entries, _dailyRptFilePath);
return report;
}