137 lines
4.5 KiB
C#
137 lines
4.5 KiB
C#
using System.Data;
|
|
using System.Numerics;
|
|
using System.Runtime.Intrinsics.Arm;
|
|
using System.Text.RegularExpressions;
|
|
using Microsoft.Data.SqlClient;
|
|
using ReportingServices.Models.PlanningReport;
|
|
using ReportingServices.ReportingObjects;
|
|
|
|
namespace ReportingServices.HelperClasses
|
|
{
|
|
public class DBCaller
|
|
{
|
|
private SqlConnection _connection;
|
|
|
|
public void OpenConnection()
|
|
{
|
|
if (_connection == null || _connection.State == ConnectionState.Closed)
|
|
{
|
|
_connection = new SqlConnection("Server=Messv01ec.ec.local\\PROD1,53959;Database=LSL2SQL;User Id=srpadmin;Password=0okm9ijn;TrustServerCertificate=true");
|
|
_connection.Open();
|
|
}
|
|
}
|
|
|
|
public void CloseConnection()
|
|
{
|
|
if (_connection.State != ConnectionState.Closed)
|
|
_connection.Close();
|
|
}
|
|
|
|
public List<ScrapByDay> GetScrap(List<ReactorOutsByRDS> outs)
|
|
{
|
|
List<ScrapByDay> scrap = new();
|
|
string rdsNumbers = "";
|
|
|
|
foreach (ReactorOutsByRDS rout in outs)
|
|
rdsNumbers = rdsNumbers + "'" + rout.RDS_NO + "', ";
|
|
|
|
rdsNumbers = rdsNumbers.Substring(0, rdsNumbers.Length - 2);
|
|
|
|
OpenConnection();
|
|
|
|
SqlCommand cmd = _connection.CreateCommand();
|
|
|
|
try
|
|
{
|
|
string query = "SELECT " +
|
|
" DATE_OUT," +
|
|
" SUM(CUST_TOT_REJ) AS TOT_REJ_CUST," +
|
|
" SUM(LSL_TOT_REJ) AS TOT_REJ_MANU," +
|
|
" SUM(TW_PROD) AS TW_PROD " +
|
|
"FROM RDS " +
|
|
"WHERE SEQ IN (" + rdsNumbers + ") " +
|
|
"GROUP BY DATE_OUT " +
|
|
"ORDER BY 1 DESC";
|
|
|
|
cmd.CommandText = query;
|
|
|
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
while (reader.Read() && reader[0].ToString() != "1/1/1900 12:00:00 AM")
|
|
scrap.Add(new ScrapByDay(reader[0].ToString(), reader[3].ToString(), reader[1].ToString(), reader[2].ToString()));
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
cmd.Dispose();
|
|
|
|
CloseConnection();
|
|
|
|
return scrap;
|
|
}
|
|
|
|
public List<WeeklyPartChanges> GetWeeklyPartChanges(string startDate, string endDate)
|
|
{
|
|
List<WeeklyPartChanges> weeklyPartChanges = new();
|
|
|
|
OpenConnection();
|
|
|
|
SqlCommand cmd = _connection.CreateCommand();
|
|
|
|
string query = "SELECT REACTOR, PROD_SPEC_ID, COUNT(WO) FROM RDS " +
|
|
"WHERE DATE_OUT BETWEEN @startDate AND @endDate " +
|
|
"GROUP BY REACTOR, PROD_SPEC_ID " +
|
|
"ORDER BY 1";
|
|
|
|
cmd.CommandText = query;
|
|
cmd.Parameters.AddWithValue("@startDate", startDate);
|
|
cmd.Parameters.AddWithValue("@endDate", endDate);
|
|
|
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
while (reader.Read())
|
|
weeklyPartChanges.Add(new WeeklyPartChanges(reader[0].ToString(), reader[1].ToString(), int.Parse(reader[2].ToString())));
|
|
}
|
|
|
|
cmd.Dispose();
|
|
|
|
CloseConnection();
|
|
|
|
return weeklyPartChanges;
|
|
}
|
|
|
|
public int GetNumberOfPartChanges(string startDate, string endDate)
|
|
{
|
|
int result = 0;
|
|
|
|
OpenConnection();
|
|
|
|
SqlCommand cmd = _connection.CreateCommand();
|
|
|
|
string query = "SELECT COUNT(*) FROM " +
|
|
"(SELECT REACTOR, COUNT(PROD_SPEC_ID) - 1 AS PCHANGE FROM " +
|
|
"(SELECT REACTOR, PROD_SPEC_ID, COUNT(WO) AS PSN_COUNT FROM RDS WHERE DATE_OUT BETWEEN @startDate AND @endDate GROUP BY REACTOR, PROD_SPEC_ID) AS t " +
|
|
"GROUP BY REACTOR) AS l WHERE PCHANGE > 0";
|
|
|
|
cmd.CommandText = query;
|
|
cmd.Parameters.AddWithValue("@startDate", startDate);
|
|
cmd.Parameters.AddWithValue("@endDate", endDate);
|
|
|
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
reader.Read();
|
|
|
|
result = int.Parse(reader[0].ToString());
|
|
}
|
|
|
|
cmd.Dispose();
|
|
|
|
CloseConnection();
|
|
|
|
return result;
|
|
}
|
|
}
|
|
} |