255 lines
13 KiB
C#
255 lines
13 KiB
C#
namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|
{
|
|
using LaaProductionSQL;
|
|
|
|
using System;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Web.Http;
|
|
|
|
[RoutePrefix("api/TestBench")]
|
|
public class TestBenchController : ApiController
|
|
{
|
|
public static readonly Lazy<String> ConnectionString = new Lazy<String>(()
|
|
=> ConfigurationManager.ConnectionStrings["default"].ConnectionString);
|
|
|
|
/// <summary>
|
|
/// SetMeterLogPathInfo
|
|
/// </summary>
|
|
/// <param name="SerialNumber">PcbID from Meter</param>
|
|
///
|
|
/// <returns></returns>
|
|
[Route("SetMeterLogPathInfo"), HttpGet]
|
|
public IHttpActionResult SetMeterLogPathInfo(Int32 SerialNumber, Int32? TestRunId = null, Int32? CalibrationRunId = null, String BasePath = "", String MainLogName = "", String LEDName = "")
|
|
{
|
|
var rowsAffected = SQLConnection
|
|
.CreateSQLConnection(ConnectionString.Value)
|
|
.CreateCommand($@"
|
|
INSERT
|
|
INTO [CordonelLogFiles]
|
|
( [SerialNumber]
|
|
, [TestRunId]
|
|
, [CalibrationRunId]
|
|
, [BasePath]
|
|
, [MainLog]
|
|
, [LED])
|
|
VALUES (@{nameof(SerialNumber)}
|
|
, @{nameof(TestRunId)}
|
|
, @{nameof(CalibrationRunId)}
|
|
, @{nameof(BasePath)}
|
|
, @{nameof(MainLogName)}
|
|
, @{nameof(LEDName)})")
|
|
.SetParameter(nameof(SerialNumber), SerialNumber)
|
|
.SetParameter(nameof(TestRunId), TestRunId)
|
|
.SetParameter(nameof(CalibrationRunId), CalibrationRunId)
|
|
.SetParameter(nameof(BasePath), BasePath)
|
|
.SetParameter(nameof(MainLogName), MainLogName)
|
|
.SetParameter(nameof(LEDName), LEDName)
|
|
.ExecuteNonQuery();
|
|
|
|
if (rowsAffected == 1)
|
|
{
|
|
return this.Ok();
|
|
}
|
|
|
|
return this.BadRequest("Invalid data.");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Get SerialNumber from PcbID
|
|
/// </summary>
|
|
/// <param name="PcbID">PcbID from Meter</param>
|
|
/// <returns></returns>
|
|
[Route("GetMeterInfoForTestBench"), HttpGet]
|
|
public IHttpActionResult GetMeterInfoForTestBench(String PcbID)
|
|
{
|
|
var str = $@"
|
|
SELECT DISTINCT
|
|
[MapPcbIdToSerialNumber_SerialNumber] AS [SerialNr]
|
|
, [MapOrder].[CordonelAssignedPicking_FertigungsAuftragsNr] AS [FertigungsNr]
|
|
, [Meter].[Adresse] AS [RadioAddress]
|
|
, [KundeneigeneSerienNr] AS [CustomerSerialNr]
|
|
, (SELECT TOP 1 [ID]
|
|
FROM [CordonelMeterCalibrationResults]
|
|
WHERE [PcbId] = @{nameof(PcbID)}
|
|
ORDER BY [Date] DESC) AS [CalibrationRunID]
|
|
, (SELECT TOP 1 [StatusFertigung]
|
|
FROM [AuftragPositionSerienNr]
|
|
WHERE [SerienNr] = [MapPcbIdToSerialNumber_SerialNumber]
|
|
ORDER BY [AnlageDatum] DESC) AS [LastProcessState]
|
|
, [Nennweite] AS [Dn]
|
|
, (SELECT TOP 1 [Dn_InternalId]
|
|
FROM [CordonelMeterSizes]
|
|
WHERE [Dn_VakoID] = SUBSTRING([Identnr].[VakoCode], 4, 2)) AS [NewNennweiteID]
|
|
, [lut].[FileCrc] AS [LutCrc]
|
|
FROM [Cordonel_AssignedPicking] AS [MapOrder]
|
|
LEFT OUTER JOIN [MapPcbIdToSerialNumber] AS [map]
|
|
ON [MapOrder].[CordonelAssignedPicking_PcbId] = [map].[MapPcbIdToSerialNumber_PcbId]
|
|
AND [map].[MapPcbIdToSerialNumber_Deleted] = 0
|
|
LEFT OUTER JOIN [AuftragPositionSerienNr] AS [mapSrn]
|
|
ON [map].[MapPcbIdToSerialNumber_SerialNumber] = [mapSrn].[SerienNr]
|
|
AND [mapSrn].[Pruefgangnr] = 0
|
|
LEFT OUTER JOIN [AuftragPosition_gesamt] AS [auftraginfo]
|
|
ON [auftraginfo].[AuftragNr] = [mapSrn].[AuftragNr]
|
|
AND [auftraginfo].[PositionNr] = [mapSrn].[PositionNr]
|
|
LEFT OUTER JOIN [Genesis_Meter] AS [Meter]
|
|
ON [Meter].[Seriennummer] = [map].[MapPcbIdToSerialNumber_SerialNumber]
|
|
LEFT OUTER JOIN [Identnr]
|
|
ON [auftraginfo].[Identnr] = [Identnr].[IdentNr]
|
|
LEFT OUTER JOIN [Cordonel_Lut] AS [lut]
|
|
ON [lut].[MeterSize] = (SELECT TOP 1 [Dn_InternalId]
|
|
FROM [CordonelMeterSizes]
|
|
WHERE [Dn_VakoID] = SUBSTRING([Identnr].[VakoCode], 4, 2))
|
|
AND [lut].[CurrentVersionForProd] = 1
|
|
WHERE [MapOrder].[CordonelAssignedPicking_IsDeleted] = 0
|
|
AND [MapOrder].[CordonelAssignedPicking_PcbId] = @{nameof(PcbID)} ";
|
|
var results = SQLConnection
|
|
.CreateSQLConnection(ConnectionString.Value)
|
|
.CreateCommand($@"
|
|
SELECT DISTINCT
|
|
[MapPcbIdToSerialNumber_SerialNumber] AS [SerialNr]
|
|
, [MapOrder].[CordonelAssignedPicking_FertigungsAuftragsNr] AS [FertigungsNr]
|
|
, [Meter].[Adresse] AS [RadioAddress]
|
|
, [KundeneigeneSerienNr] AS [CustomerSerialNr]
|
|
, (SELECT TOP 1 [ID]
|
|
FROM [CordonelMeterCalibrationResults]
|
|
WHERE [PcbId] = @{nameof(PcbID)}
|
|
ORDER BY [Date] DESC) AS [CalibrationRunID]
|
|
, (SELECT TOP 1 [StatusFertigung]
|
|
FROM [AuftragPositionSerienNr]
|
|
WHERE [SerienNr] = [MapPcbIdToSerialNumber_SerialNumber]
|
|
ORDER BY [AnlageDatum] DESC) AS [LastProcessState]
|
|
, [Nennweite] AS [Dn]
|
|
, (SELECT TOP 1 [Dn_InternalId]
|
|
FROM [CordonelMeterSizes]
|
|
WHERE [Dn_VakoID] = SUBSTRING([Identnr].[VakoCode], 4, 2)) AS [NewNennweiteID]
|
|
, [lut].[FileCrc] AS [LutCrc]
|
|
FROM [Cordonel_AssignedPicking] AS [MapOrder]
|
|
LEFT OUTER JOIN [MapPcbIdToSerialNumber] AS [map]
|
|
ON [MapOrder].[CordonelAssignedPicking_PcbId] = [map].[MapPcbIdToSerialNumber_PcbId]
|
|
AND [map].[MapPcbIdToSerialNumber_Deleted] = 0
|
|
LEFT OUTER JOIN [AuftragPositionSerienNr] AS [mapSrn]
|
|
ON [map].[MapPcbIdToSerialNumber_SerialNumber] = [mapSrn].[SerienNr]
|
|
AND [mapSrn].[Pruefgangnr] = 0
|
|
LEFT OUTER JOIN [AuftragPosition_gesamt] AS [auftraginfo]
|
|
ON [auftraginfo].[AuftragNr] = [mapSrn].[AuftragNr]
|
|
AND [auftraginfo].[PositionNr] = [mapSrn].[PositionNr]
|
|
LEFT OUTER JOIN [Genesis_Meter] AS [Meter]
|
|
ON [Meter].[Seriennummer] = [map].[MapPcbIdToSerialNumber_SerialNumber]
|
|
LEFT OUTER JOIN [Identnr]
|
|
ON [auftraginfo].[Identnr] = [Identnr].[IdentNr]
|
|
LEFT OUTER JOIN [Cordonel_Lut] AS [lut]
|
|
ON [lut].[MeterSize] = (SELECT TOP 1 [Dn_InternalId]
|
|
FROM [CordonelMeterSizes]
|
|
WHERE [Dn_VakoID] = SUBSTRING([Identnr].[VakoCode], 4, 2))
|
|
AND [lut].[CurrentVersionForProd] = 1
|
|
WHERE [MapOrder].[CordonelAssignedPicking_IsDeleted] = 0
|
|
AND [MapOrder].[CordonelAssignedPicking_PcbId] = @{nameof(PcbID)} ")
|
|
.SetParameter(nameof(PcbID), PcbID)
|
|
.ExecuteReader(x => new string[]
|
|
{
|
|
$"{x.GetInt()}", // SerialNr,
|
|
$"{x.GetInt()}", // FertigungsNr,
|
|
$"{x.GetLong()}", // RadioAddress,
|
|
$"{x.GetValue<int?>()}", // CustomerSerialNr,
|
|
$"{x.GetString()}", // CalibrationRunID,
|
|
$"{x.GetValue<byte>()}", // LastProcessState,
|
|
$"{x.GetInt()}", // Dn,
|
|
$"{x.GetInt()}", // NewNennweiteID,
|
|
$"{x.GetValue<int?>()}", // LutCrc
|
|
});
|
|
|
|
if (results.Count() == 1)
|
|
{
|
|
return this.Ok(results.FirstOrDefault());
|
|
}
|
|
|
|
return this.Content(HttpStatusCode.BadRequest, new string[] { string.Empty, string.Empty, string.Empty });
|
|
}
|
|
|
|
[HttpGet]
|
|
[Route("GetOffsetCalibration/{pcbId}")]
|
|
public IHttpActionResult GetOffsetCalibration(int pcbId)
|
|
{
|
|
var offset = SQLConnection
|
|
.CreateSQLConnection(ConnectionString.Value)
|
|
.CreateCommand($@"
|
|
SELECT [PcbId]
|
|
, [TestRunNr]
|
|
, [Offset]
|
|
FROM [Cordonel_Calibrations]
|
|
WHERE [PcbId] = @{nameof(pcbId)}")
|
|
.SetParameter(nameof(pcbId), pcbId)
|
|
.FirstOrDefault(x => new CordonelCalibration
|
|
{
|
|
PcbId = x.GetInt(),
|
|
TestRunNr = x.GetInt(),
|
|
Offset = x.GetValue<double>()
|
|
});
|
|
|
|
return this.Json(offset);
|
|
}
|
|
|
|
[HttpPost]
|
|
public IHttpActionResult AddOffsetCalibration([FromBody] CordonelCalibration model)
|
|
{
|
|
var rowsAffected = SQLConnection
|
|
.CreateSQLConnection(ConnectionString.Value)
|
|
.CreateCommand($@"
|
|
INSERT
|
|
INTO [Cordonel_Calibrations]
|
|
( [PcbId]
|
|
, [TestRunNr]
|
|
, [Offset])
|
|
VALUES (@{nameof(CordonelCalibration.PcbId)}
|
|
, @{nameof(CordonelCalibration.TestRunNr)}
|
|
, @{nameof(CordonelCalibration.Offset)})")
|
|
.SetParameter(nameof(CordonelCalibration.PcbId), model.PcbId)
|
|
.SetParameter(nameof(CordonelCalibration.TestRunNr), model.TestRunNr)
|
|
.SetParameter(nameof(CordonelCalibration.Offset), model.Offset)
|
|
.ExecuteNonQuery();
|
|
|
|
if (rowsAffected == 1)
|
|
{
|
|
return this.Ok();
|
|
}
|
|
|
|
return this.BadRequest("Invalid data.");
|
|
}
|
|
|
|
[HttpPost]
|
|
public IHttpActionResult SetOffsetCalibration([FromBody] CordonelCalibration model)
|
|
{
|
|
var rowsAffected = SQLConnection
|
|
.CreateSQLConnection(ConnectionString.Value)
|
|
.CreateCommand($@"
|
|
UPDATE [Cordonel_Calibrations]
|
|
SET [TestRunNr] = @{nameof(CordonelCalibration.TestRunNr)}
|
|
, [Offset] = @{nameof(CordonelCalibration.Offset)}
|
|
WHERE [PcbId] = @{nameof(CordonelCalibration.PcbId)}")
|
|
.SetParameter(nameof(CordonelCalibration.TestRunNr), model.TestRunNr)
|
|
.SetParameter(nameof(CordonelCalibration.Offset), model.Offset)
|
|
.SetParameter(nameof(CordonelCalibration.PcbId), model.PcbId)
|
|
.ExecuteNonQuery();
|
|
|
|
if (rowsAffected == 1)
|
|
{
|
|
return this.Ok();
|
|
}
|
|
|
|
return this.BadRequest("Invalid data.");
|
|
}
|
|
|
|
public class CordonelCalibration
|
|
{
|
|
public int PcbId { get; set; }
|
|
|
|
public int TestRunNr { get; set; }
|
|
|
|
public double Offset { get; set; }
|
|
}
|
|
}
|
|
}
|