209 lines
9.7 KiB
C#
209 lines
9.7 KiB
C#
using LaaProductionSQL;
|
|
using System;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Configuration;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web.Http;
|
|
using Xylem.Common.Logic.ServiceCore;
|
|
|
|
namespace Xylem.Common.Service.MeterProcessState.Controllers
|
|
{
|
|
[RoutePrefix("api/TestBench")]
|
|
public class TestBenchController : ApiController
|
|
{
|
|
public static class GlobalConfig
|
|
{
|
|
public static 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 async Task<HttpResponseMessage> SetMeterLogPathInfo(Int32 SerialNumber, Int32? TestRunId = null, Int32? CalibrationRunId = null, String BasePath = "", String MainLogName = "", String LEDName = "")
|
|
{
|
|
|
|
try
|
|
{
|
|
return await Task.Run(() =>
|
|
{
|
|
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
var TestRunIdStr = TestRunId.HasValue ? TestRunId.Value.ToString() : "null";
|
|
var CalibrationRunIdStr = CalibrationRunId.HasValue ? CalibrationRunId.Value.ToString() : "null";
|
|
|
|
|
|
sb.AppendLine($" Insert into [Auftrag].[dbo].[CordonelLogFiles] ");
|
|
sb.AppendLine($" select ");
|
|
sb.AppendLine($"{SerialNumber} , ");
|
|
sb.AppendLine($"{TestRunIdStr} , ");
|
|
sb.AppendLine($"{CalibrationRunIdStr} , ");
|
|
sb.AppendLine($"'{BasePath}' , ");
|
|
|
|
sb.AppendLine($"'{MainLogName}' , ");
|
|
sb.AppendLine($"'{LEDName}' ");
|
|
|
|
|
|
|
|
var MapData = dataacces.ExecuteQuery(sb.ToString());
|
|
|
|
return Request.CreateResponse(HttpStatusCode.OK, "");
|
|
}
|
|
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Get SerialNumber from PcbID
|
|
/// </summary>
|
|
/// <param name="PcbID">PcbID from Meter</param>
|
|
/// <returns></returns>
|
|
[Route("GetMeterInfoForTestBench"), HttpGet]
|
|
public async Task<HttpResponseMessage> GetMeterInfoForTestBench(String PcbID)
|
|
{
|
|
|
|
try
|
|
{
|
|
return await Task.Run(() =>
|
|
{
|
|
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
sb.AppendLine($" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber], mapOrder.CordonelAssignedPicking_FertigungsAuftragsNr ,KundeneigeneSerienNr as CustomerSerialNr ");
|
|
sb.AppendLine($" , meter.[Adresse] , Nennweite as Dn ");
|
|
sb.AppendLine($" , (SELECT TOP(1) Dn_InternalId FROM CordonelMeterSizes where Dn_VakoID = substring(Identnr.VakoCode, 4, 2)) as NewNennweiteID ");
|
|
|
|
sb.AppendLine($" , (select top 1 ID from[Auftrag].[dbo].[CordonelMeterCalibrationResults] where PcbId = '{PcbID}' order by date desc) as CalibrationRunID ");
|
|
sb.AppendLine($" , (select top 1 StatusFertigung from Auftrag.dbo.AuftragPositionSerienNr a where a.SerienNr = [MapPcbIdToSerialNumber_SerialNumber] order by AnlageDatum desc) as LastProcessState ");
|
|
sb.AppendLine($" , lut.FileCrc as LutCrc ");
|
|
sb.AppendLine($" FROM Auftrag.dbo.Cordonel_AssignedPicking mapOrder ");
|
|
sb.AppendLine($" left outer join [Auftrag].[dbo].[MapPcbIdToSerialNumber] map on mapOrder.CordonelAssignedPicking_PcbId = map.MapPcbIdToSerialNumber_PcbId and MapPcbIdToSerialNumber_Deleted = 0 ");
|
|
sb.AppendLine($" left outer join Auftrag.dbo.AuftragPositionSerienNr mapSrn on map.[MapPcbIdToSerialNumber_SerialNumber] = mapSrn.SerienNr and mapSrn.Pruefgangnr = 0 ");
|
|
sb.AppendLine($" left outer join Auftrag.dbo.AuftragPosition_gesamt auftraginfo on auftraginfo.AuftragNr = mapSrn.AuftragNr and auftraginfo.PositionNr = mapSrn.PositionNr ");
|
|
sb.AppendLine($" left outer join [Auftrag].[dbo].[Genesis_Meter] meter on meter.Seriennummer = MapPcbIdToSerialNumber_SerialNumber ");
|
|
sb.AppendLine($" left outer join Identnr on auftraginfo.Identnr = Identnr.IdentNr ");
|
|
sb.AppendLine($" left outer join [Auftrag].[dbo].[Cordonel_Lut] lut on lut.MeterSize = (SELECT TOP(1) Dn_InternalId FROM CordonelMeterSizes where Dn_VakoID = substring(Identnr.VakoCode, 4, 2)) and lut.CurrentVersionForProd = 1 ");
|
|
sb.AppendLine($" where mapOrder.CordonelAssignedPicking_IsDeleted = 0 and mapOrder.CordonelAssignedPicking_PcbId = '{PcbID}'");
|
|
|
|
var MapData = dataacces.ExecuteQuery(sb.ToString());
|
|
if (MapData.Rows.Count != 1)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.OK, new String[] { string.Empty, string.Empty, string.Empty });
|
|
//return Request.CreateResponse(HttpStatusCode.InternalServerError, "Can not find unique serial number for your request");
|
|
}
|
|
|
|
|
|
var ret = new String[] { MapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"].ToString(), MapData.Rows[0]["CordonelAssignedPicking_FertigungsAuftragsNr"].ToString(), MapData.Rows[0]["Adresse"].ToString(), MapData.Rows[0]["CustomerSerialNr"].ToString(), MapData.Rows[0]["CalibrationRunID"].ToString(), MapData.Rows[0]["LastProcessState"].ToString(), MapData.Rows[0]["Dn"].ToString(), MapData.Rows[0]["NewNennweiteID"].ToString(), MapData.Rows[0]["LutCrc"].ToString() };
|
|
|
|
return Request.CreateResponse(HttpStatusCode.OK, ret);
|
|
}
|
|
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
|
|
}
|
|
}
|
|
|
|
[HttpGet]
|
|
[Route("GetOffsetCalibration/{pcbId}")]
|
|
public IHttpActionResult GetOffsetCalibration(int pcbId)
|
|
{
|
|
var offset = SQLConnection
|
|
.CreateSQLConnection(GlobalConfig.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(GlobalConfig.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(GlobalConfig.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; }
|
|
}
|
|
}
|
|
}
|