Fixed bug for expanding yield columns in javascript file, added database calls for unload temps and tools by wafer size, and included unload temps and tools by wafer size in production passdown report.
This commit is contained in:
@ -115,14 +115,24 @@ namespace ReportingServices.Controllers
|
|||||||
report.AddToolStateByType("HTR", task7.Result);
|
report.AddToolStateByType("HTR", task7.Result);
|
||||||
report.ReverseLists();
|
report.ReverseLists();
|
||||||
|
|
||||||
|
int[] toolsByWaferSize = _scrapeDatabaseRepository.GetNumberOfToolsByWaferSize();
|
||||||
|
|
||||||
|
report.NumberOfToolsWaferSize6IN = toolsByWaferSize[0];
|
||||||
|
report.NumberOfToolsWaferSize8IN = toolsByWaferSize[1];
|
||||||
|
|
||||||
List<ManualReportEntriesByDay> entries = _jsonFileHandler.LoadJSONFile<List<ManualReportEntriesByDay>>(_dailyRptFileName);
|
List<ManualReportEntriesByDay> entries = _jsonFileHandler.LoadJSONFile<List<ManualReportEntriesByDay>>(_dailyRptFileName);
|
||||||
|
|
||||||
report.Entries = entries;
|
report.Entries = entries;
|
||||||
|
|
||||||
int[] singleLoadLocks = _scrapeDatabaseRepository.GetNumberOfSingleLoadLocks();
|
int[] singleLoadLocks = _scrapeDatabaseRepository.GetNumberOfSingleLoadLocks();
|
||||||
|
|
||||||
report.Entries[_reportIndex].Entries.SingleLoadLockASM = singleLoadLocks[0];
|
report.Entries[_reportIndex].Entries.ASMSingleLoadLock = singleLoadLocks[0];
|
||||||
report.Entries[_reportIndex].Entries.SingleLoadLockHTR = singleLoadLocks[1];
|
report.Entries[_reportIndex].Entries.HTRSingleLoadLock = singleLoadLocks[1];
|
||||||
|
|
||||||
|
int[] unloadTempsLessThan700 = _scrapeDatabaseRepository.GetNumberOfToolUnloadTempsLessThan700();
|
||||||
|
|
||||||
|
report.Entries[_reportIndex].Entries.ASMUnloadTempsLessThan700 = unloadTempsLessThan700[0];
|
||||||
|
report.Entries[_reportIndex].Entries.HTRUnloadTempsLessThan700 = unloadTempsLessThan700[1];
|
||||||
|
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using ReportingServices.Models.PlanningReport;
|
using ReportingServices.Models.PlanningReport;
|
||||||
using ReportingServices.ReportingObjects;
|
using ReportingServices.ReportingObjects;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace ReportingServices.Dependency_Injections
|
namespace ReportingServices.Dependency_Injections
|
||||||
{
|
{
|
||||||
@ -125,6 +126,43 @@ namespace ReportingServices.Dependency_Injections
|
|||||||
return weeklyPartChanges;
|
return weeklyPartChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int[] GetNumberOfToolsByWaferSize()
|
||||||
|
{
|
||||||
|
int[] singleLoadLocks = new int[2];
|
||||||
|
|
||||||
|
OpenConnection();
|
||||||
|
|
||||||
|
SqlCommand cmd = _connection.CreateCommand();
|
||||||
|
|
||||||
|
string query = "SELECT " +
|
||||||
|
" SUSC_POCKET_SIZE, " +
|
||||||
|
" COUNT(SUSC_POCKET_SIZE) " +
|
||||||
|
" FROM REACTOR " +
|
||||||
|
" WHERE REACT_ASSIGNMENT IS NOT NULL " +
|
||||||
|
" AND REACT_ASSIGNMENT <> 'Out of Service' " +
|
||||||
|
" AND REACT_ASSIGNMENT <> '' " +
|
||||||
|
"GROUP BY SUSC_POCKET_SIZE";
|
||||||
|
|
||||||
|
cmd.CommandText = query;
|
||||||
|
|
||||||
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
reader.Read();
|
||||||
|
|
||||||
|
singleLoadLocks[0] = int.Parse(reader[1].ToString());
|
||||||
|
|
||||||
|
reader.Read();
|
||||||
|
|
||||||
|
singleLoadLocks[1] = int.Parse(reader[1].ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Dispose();
|
||||||
|
|
||||||
|
CloseConnection();
|
||||||
|
|
||||||
|
return singleLoadLocks;
|
||||||
|
}
|
||||||
|
|
||||||
public int[] GetNumberOfSingleLoadLocks()
|
public int[] GetNumberOfSingleLoadLocks()
|
||||||
{
|
{
|
||||||
int[] singleLoadLocks = new int[2];
|
int[] singleLoadLocks = new int[2];
|
||||||
@ -160,5 +198,39 @@ namespace ReportingServices.Dependency_Injections
|
|||||||
|
|
||||||
return singleLoadLocks;
|
return singleLoadLocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int[] GetNumberOfToolUnloadTempsLessThan700()
|
||||||
|
{
|
||||||
|
int[] unloadTempTools = new int[2];
|
||||||
|
|
||||||
|
OpenConnection();
|
||||||
|
|
||||||
|
SqlCommand cmd = _connection.CreateCommand();
|
||||||
|
|
||||||
|
string query = "SELECT REACTOR_TYPE, COUNT(DISTINCT(REACTOR)) AS ULT FROM RDS " +
|
||||||
|
"INNER JOIN RDS_LAYER lay ON lay.RDS_NO = SEQ " +
|
||||||
|
"WHERE DATE_OUT > DATEADD(DAY, -1, SYSDATETIME()) " +
|
||||||
|
" AND UL_TEMP< 700 " +
|
||||||
|
"GROUP BY REACTOR_TYPE";
|
||||||
|
|
||||||
|
cmd.CommandText = query;
|
||||||
|
|
||||||
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
reader.Read();
|
||||||
|
|
||||||
|
unloadTempTools[0] = int.Parse(reader[1].ToString());
|
||||||
|
|
||||||
|
reader.Read();
|
||||||
|
|
||||||
|
unloadTempTools[1] = int.Parse(reader[1].ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.Dispose();
|
||||||
|
|
||||||
|
CloseConnection();
|
||||||
|
|
||||||
|
return unloadTempTools;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ namespace ReportingServices.Dependency_Injections
|
|||||||
public List<ScrapByDay> GetScrapByDay(List<ReactorOutsByRDS> outs);
|
public List<ScrapByDay> GetScrapByDay(List<ReactorOutsByRDS> outs);
|
||||||
public List<ReactorPSNWORuns> GetReactorPSNWORuns(string startDate, string endDate);
|
public List<ReactorPSNWORuns> GetReactorPSNWORuns(string startDate, string endDate);
|
||||||
public int GetNumberOfPartChanges(string startDate, string endDate);
|
public int GetNumberOfPartChanges(string startDate, string endDate);
|
||||||
|
public int[] GetNumberOfToolsByWaferSize();
|
||||||
public int[] GetNumberOfSingleLoadLocks();
|
public int[] GetNumberOfSingleLoadLocks();
|
||||||
|
public int[] GetNumberOfToolUnloadTempsLessThan700();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ namespace ReportingServices.Models.ProductionReport
|
|||||||
public Dictionary<string, List<EquipmentStateByDay>> ToolAvailibilityByType { get; set; }
|
public Dictionary<string, List<EquipmentStateByDay>> ToolAvailibilityByType { get; set; }
|
||||||
public Dictionary<string, ToolStateByType> ToolStateByType { get; set; }
|
public Dictionary<string, ToolStateByType> ToolStateByType { get; set; }
|
||||||
public List<ManualReportEntriesByDay> Entries { get; set; }
|
public List<ManualReportEntriesByDay> Entries { get; set; }
|
||||||
|
public int NumberOfToolsWaferSize6IN { get; set; }
|
||||||
|
public int NumberOfToolsWaferSize8IN { get; set; }
|
||||||
|
|
||||||
public DailyReport()
|
public DailyReport()
|
||||||
{
|
{
|
||||||
|
@ -17,7 +17,9 @@
|
|||||||
public string BottleChanges { get; set; }
|
public string BottleChanges { get; set; }
|
||||||
public string DailyPartChanges { get; set; }
|
public string DailyPartChanges { get; set; }
|
||||||
public string WeeklyPartChanges { get; set; }
|
public string WeeklyPartChanges { get; set; }
|
||||||
public int SingleLoadLockASM { get; set; }
|
public int ASMSingleLoadLock { get; set; }
|
||||||
public int SingleLoadLockHTR { get; set; }
|
public int HTRSingleLoadLock { get; set; }
|
||||||
|
public int ASMUnloadTempsLessThan700 { get; set; }
|
||||||
|
public int HTRUnloadTempsLessThan700 { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
int ASMSLL = 0;
|
int ASMSLL = 0;
|
||||||
int HTRSLL = 0;
|
int HTRSLL = 0;
|
||||||
|
|
||||||
|
int ASMUnloadTemps = 0;
|
||||||
|
int HTRUnloadTemps = 0;
|
||||||
|
|
||||||
int reportIndex = (int)DateTime.Now.DayOfWeek;
|
int reportIndex = (int)DateTime.Now.DayOfWeek;
|
||||||
|
|
||||||
ManualReportEntries rpt = Model.Entries[reportIndex].Entries;
|
ManualReportEntries rpt = Model.Entries[reportIndex].Entries;
|
||||||
@ -135,7 +138,12 @@
|
|||||||
<td>Before Scrap</td>
|
<td>Before Scrap</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td scope="row" id="expandYield">Actual Yielded Wafers Out <img src="~/Images/plusIcon.png" width="20" style="padding-bottom: 3px" onclick="expandYield()" id="yieldImage" /></td>
|
<td scope="row" id="expandYield">
|
||||||
|
Actual Yielded Wafers Out
|
||||||
|
<button class="btn btn-default" onclick="expandYield()">
|
||||||
|
<img src="~/Images/plusIcon.png" width="20" style="padding-bottom: 3px" id="yieldImage" />
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
@for (int i = 0; i < 7; i++)
|
@for (int i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
if (i < Model.OutsByDay.Count)
|
if (i < Model.OutsByDay.Count)
|
||||||
@ -407,13 +415,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Application ENG (0):</li>
|
<li>Application ENG (0):</li>
|
||||||
<li>Reactors (Capacity )</li>
|
<li>Reactors (Capacity @(Model.NumberOfToolsWaferSize6IN + Model.NumberOfToolsWaferSize8IN))
|
||||||
|
<ul>
|
||||||
|
<li>150mm - @Model.NumberOfToolsWaferSize6IN</li>
|
||||||
|
<li>200mm - @Model.NumberOfToolsWaferSize8IN</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li>Scheduled Reactors: </li>
|
<li>Scheduled Reactors: </li>
|
||||||
<li>Dual Layer Reactors</li>
|
<li>Dual Layer Reactors</li>
|
||||||
<li>Engineering Focus Tools (Down > 12 hours)</li>
|
<li>Engineering Focus Tools (Down > 12 hours)
|
||||||
<ul>
|
<ul>
|
||||||
<li>@string.Join(",", toolsDownGreaterThan12Hours)</li>
|
<li>@string.Join(",", toolsDownGreaterThan12Hours)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</li>
|
||||||
<li>Metrology Down (): </li>
|
<li>Metrology Down (): </li>
|
||||||
<li>Cleans (): </li>
|
<li>Cleans (): </li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -527,9 +541,9 @@
|
|||||||
{
|
{
|
||||||
int index = i == 6 ? 0 : i + 1;
|
int index = i == 6 ? 0 : i + 1;
|
||||||
|
|
||||||
<td>@Model.Entries[index].Entries.SingleLoadLockASM</td>
|
<td>@Model.Entries[index].Entries.ASMSingleLoadLock</td>
|
||||||
|
|
||||||
ASMSLL += @Model.Entries[index].Entries.SingleLoadLockASM;
|
ASMSLL += @Model.Entries[index].Entries.ASMSingleLoadLock;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -547,9 +561,9 @@
|
|||||||
{
|
{
|
||||||
int index = i == 6 ? 0 : i + 1;
|
int index = i == 6 ? 0 : i + 1;
|
||||||
|
|
||||||
<td>@Model.Entries[index].Entries.SingleLoadLockHTR</td>
|
<td>@Model.Entries[index].Entries.HTRSingleLoadLock</td>
|
||||||
|
|
||||||
HTRSLL += @Model.Entries[index].Entries.SingleLoadLockHTR;
|
HTRSLL += @Model.Entries[index].Entries.HTRSingleLoadLock;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -559,6 +573,46 @@
|
|||||||
<td>@(HTRSLL / count)</td>
|
<td>@(HTRSLL / count)</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td scope="row">ASMs <700C (Unload Temps)</td>
|
||||||
|
@for (int i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (i < Model.Entries.Count)
|
||||||
|
{
|
||||||
|
int index = i == 6 ? 0 : i + 1;
|
||||||
|
|
||||||
|
<td>@Model.Entries[index].Entries.ASMUnloadTempsLessThan700</td>
|
||||||
|
|
||||||
|
ASMUnloadTemps += @Model.Entries[index].Entries.ASMUnloadTempsLessThan700;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<td></td>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<td>@(ASMUnloadTemps / count)</td>
|
||||||
|
<td>0</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td scope="row">HTRs <700C (Unload Temps)</td>
|
||||||
|
@for (int i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (i < Model.Entries.Count)
|
||||||
|
{
|
||||||
|
int index = i == 6 ? 0 : i + 1;
|
||||||
|
|
||||||
|
<td>@Model.Entries[index].Entries.HTRUnloadTempsLessThan700</td>
|
||||||
|
|
||||||
|
HTRUnloadTemps += @Model.Entries[index].Entries.HTRUnloadTempsLessThan700;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<td></td>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<td>@(HTRUnloadTemps / count)</td>
|
||||||
|
<td>0</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
@ -144,6 +144,8 @@ function expandYield() {
|
|||||||
yieldDivs[i].classList.toggle("hidden");
|
yieldDivs[i].classList.toggle("hidden");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var source = document.getElementById("yieldImage").src;
|
||||||
|
|
||||||
if (source.substring(source.indexOf("Images/") + 7) == "plusIcon.png")
|
if (source.substring(source.indexOf("Images/") + 7) == "plusIcon.png")
|
||||||
document.getElementById("yieldImage").src = "../Images/minusIcon.png";
|
document.getElementById("yieldImage").src = "../Images/minusIcon.png";
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user