Merge done

This commit is contained in:
Roland Drabesch
2022-09-22 16:11:42 +02:00
97 changed files with 2072 additions and 1624 deletions
@@ -1,8 +1,4 @@
using Logic.ProductionToProductMapper.Cordonel;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Service.Core;
using System;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -11,45 +7,42 @@ using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Logic.ProductionToProductMapper.Cordonel;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Service.Core;
using Xylem.Common.Logic.ProductionOrderCore;
using Xylem.Common.Logic.ProductionOrderCore.KitronTestResults;
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
using Xylem.Common.Logic.ProductionOrderCore.Vako;
namespace Service.MeterProcessState.Controllers
namespace Xylem.Common.Service.MeterProcessState.Controllers
{
[RoutePrefix("api/FinalCheck")]
public class FinalCheckController : ApiController
{
public static class GlobalConfig
{
public static Lazy<string> connectionString = new Lazy<string>(()
=>
System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
public static Lazy<String> ConnectionString = new Lazy<String>(()
=> System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
);
}
//LocalWebRequest
/// <summary>
/// Get Radio Configuration from database matching the PcbID
/// </summary>
/// <param name="PcbID">PcbID from Meter</param>
/// <param name="pcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetProgrammingParameters"), HttpGet]
public async Task<HttpResponseMessage> GetProgrammingParameters(string PcbID)
public async Task<HttpResponseMessage> GetProgrammingParameters(String pcbID)
{
try
{
return await Task.Run(() =>
{
var builder = new StringBuilder();
var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.connectionString.Value);
var ret = OrderProgrammingParameters.GetProgrammingParameters(pcbID, GlobalConfig.ConnectionString.Value);
foreach (var r in ret.Where(r => r.RegisterName == "SENSUSRADIO_EncryptionKey"))
{
foreach (var t in r.RegisterValue)
@@ -77,30 +70,26 @@ namespace Service.MeterProcessState.Controllers
/// <param name="PcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetEncryptionKey"), HttpGet]
public async Task<HttpResponseMessage> GetEncryptionKey(string PcbID)
public async Task<HttpResponseMessage> GetEncryptionKey(String PcbID)
{
try
{
return await Task.Run(() =>
{
var builder = new StringBuilder();
var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.connectionString.Value);
var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.ConnectionString.Value);
var key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Csd);
var key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Csd) ??
ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Vako);
if (key == null)
if (key != null)
{
key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Vako);
foreach (var t in key.RegisterValue)
{
builder.Append(t.ToString("x2"));
}
}
foreach (var t in key.RegisterValue)
{
builder.Append(t.ToString("x2"));
}
return Request.CreateResponse(HttpStatusCode.OK, builder.ToString());
});
@@ -117,14 +106,14 @@ namespace Service.MeterProcessState.Controllers
/// <param name="PcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetRadioConfiguration"), HttpGet]
public async Task<HttpResponseMessage> GetRadioConfiguration(string PcbID, bool withPressure)
public async Task<HttpResponseMessage> GetRadioConfiguration(String PcbID, Boolean withPressure)
{
try
{
return await Task.Run(() =>
{
var radio = OrderRadioParameter.GetRadioPramas(PcbID, GlobalConfig.connectionString.Value, withPressure ? "p" : "");
var radio = OrderRadioParameter.GetRadioParams(PcbID, GlobalConfig.ConnectionString.Value, withPressure ? "p" : "");
if (radio != null)
{
@@ -158,13 +147,13 @@ namespace Service.MeterProcessState.Controllers
/// <param name="PcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetConfiguration"), HttpGet]
public async Task<HttpResponseMessage> GetConfiguration(string PcbID)
public async Task<HttpResponseMessage> GetConfiguration(String PcbID)
{
try
{
return await Task.Run(() =>
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
@@ -181,9 +170,9 @@ namespace Service.MeterProcessState.Controllers
}
//MapData.Rows[0]["Adresse"]
var ra = (long)MapData.Rows[0]["Adresse"] - 10000000000;
var ra = (Int64)MapData.Rows[0]["Adresse"] - 10000000000;
var resultDic = new Dictionary<string, object>();
var resultDic = new Dictionary<String, Object>();
resultDic.Add("SENSUSRADIO_RadioAddress", ra);
@@ -220,13 +209,13 @@ namespace Service.MeterProcessState.Controllers
[Route("GetOrderOverview"), HttpGet]
public async Task<HttpResponseMessage> GetOrderOverview(int ProductionOrderNumber, int? CheckPcbId = null)
public async Task<HttpResponseMessage> GetOrderOverview(Int32 ProductionOrderNumber, Int32? CheckPcbId = null)
{
try
{
return await Task.Run(async () =>
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
@@ -281,10 +270,10 @@ namespace Service.MeterProcessState.Controllers
foreach (DataRow row in MapData.Rows)
{
ret.Count = (int)row["menge"];
ret.AssignedPicking = (int)row["AssignedPicking"];
ret.PressureTested = (int)row["PressureTested"];
ret.HeliumTested = (int)row["HeliumTested"];
ret.Count = (Int32)row["menge"];
ret.AssignedPicking = (Int32)row["AssignedPicking"];
ret.PressureTested = (Int32)row["PressureTested"];
ret.HeliumTested = (Int32)row["HeliumTested"];
}
if (CheckPcbId.HasValue)
{
@@ -310,12 +299,12 @@ namespace Service.MeterProcessState.Controllers
}
}
[Route("GetKitronProductionResults"), HttpGet]
public async Task<HttpResponseMessage> GetKitronProductionResults(int? SerialNumber = null, string PcbID = "")
public async Task<HttpResponseMessage> GetKitronProductionResults(Int32? SerialNumber = null, String PcbID = "")
{
try
{
var ret = new Dictionary<string, JObject>();
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
var ret = new Dictionary<String, JObject>();
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() =>
{
@@ -378,12 +367,12 @@ namespace Service.MeterProcessState.Controllers
[Route("GetKitronProductionDate"), HttpGet]
public async Task<HttpResponseMessage> GetKitronProductionDate(int CheckPcbId)
public async Task<HttpResponseMessage> GetKitronProductionDate(Int32 CheckPcbId)
{
try
{
var ret = new DateTimeOffset();
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() =>
{
@@ -435,12 +424,12 @@ namespace Service.MeterProcessState.Controllers
[Route("GetPossibleRadioLengths"), HttpGet]
public async Task<HttpResponseMessage> GetPossibleRadioLengths(int CheckPcbId)
public async Task<HttpResponseMessage> GetPossibleRadioLengths(Int32 CheckPcbId)
{
try
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
var sb = new StringBuilder();
@@ -451,8 +440,8 @@ namespace Service.MeterProcessState.Controllers
sb.AppendLine(" where [ID_PCB] = @PcbId ");
sb.AppendLine(" order by ID_TEST desc ");
var dt = dataacces.ExecuteQuery(sb.ToString());
int? frq = null;
var listLength = new List<string>();
Int32? frq = null;
var listLength = new List<String>();
foreach (var item in dt.Select())
{
try
@@ -491,7 +480,7 @@ namespace Service.MeterProcessState.Controllers
}
var sbRet = new List<string>();
var sbRet = new List<String>();
foreach (var item in listLength)
{
@@ -529,7 +518,7 @@ namespace Service.MeterProcessState.Controllers
}
[Route("GetOrderDetails"), HttpGet]
public async Task<HttpResponseMessage> GetOrderDetails(int ProductionOrderNumber, int? CheckPcbId = null)
public async Task<HttpResponseMessage> GetOrderDetails(Int32 ProductionOrderNumber, Int32? CheckPcbId = null)
{
try
{
@@ -542,14 +531,14 @@ namespace Service.MeterProcessState.Controllers
return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex);
}
}
private PickingCompareItem GetPickingItem(int ProductionOrderNumber, int? CheckPcbId)
private PickingCompareItem GetPickingItem(Int32 ProductionOrderNumber, Int32? CheckPcbId)
{
var ignorProductionDate = new DateTime();
return GetPickingItem(ProductionOrderNumber, CheckPcbId, out ignorProductionDate);
}
private PickingCompareItem GetPickingItem(int ProductionOrderNumber, int? CheckPcbId, out DateTime dateTime)
private PickingCompareItem GetPickingItem(Int32 ProductionOrderNumber, Int32? CheckPcbId, out DateTime dateTime)
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
var lastProdDate = new DateTime();
List<ProgrammingParameters> programming = new List<ProgrammingParameters>();
@@ -586,8 +575,8 @@ namespace Service.MeterProcessState.Controllers
foreach (DataRow row in checkAppsData.Rows)
{
uint AppID = uint.MaxValue;
uint Version = uint.MaxValue;
UInt32 AppID = uint.MaxValue;
UInt32 Version = uint.MaxValue;
if (uint.TryParse(row["CordonelCurrentFw_AppID"].ToString(), out AppID) && uint.TryParse(row["CordonelCurrentFw_Version"].ToString(), out Version))
{
checkAppsIdVersion.Add(AppID, Version);
@@ -624,7 +613,7 @@ namespace Service.MeterProcessState.Controllers
if (dt.Rows.Count == 1)
{
//invert is a skip not a do value
SkipRadioCheck = (bool)dt.Rows[0]["SkipRadioParameters"];
SkipRadioCheck = (Boolean)dt.Rows[0]["SkipRadioParameters"];
}
@@ -778,7 +767,7 @@ namespace Service.MeterProcessState.Controllers
}
}
private static bool findMatchingTestResult(ref DateTime lastProdDate, string LengthString, string dnString, RadioTest radioTestResult)
private static Boolean findMatchingTestResult(ref DateTime lastProdDate, String LengthString, String dnString, RadioTest radioTestResult)
{
var TestStepLoopCalibratesOk = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && w.ResultCalibration != null && w.LengthCode != null && w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}")).ToList();
@@ -917,7 +906,7 @@ namespace Service.MeterProcessState.Controllers
//}
[Route("SetMetersizeProgrammingData"), HttpPost]
public async Task<HttpResponseMessage> SetMetersizeProgrammingData(MeterSize ParameterMeterSize, [FromBody] string listOfDnParamsRaw)
public async Task<HttpResponseMessage> SetMetersizeProgrammingData(MeterSize ParameterMeterSize, [FromBody] String listOfDnParamsRaw)
{
try
@@ -926,7 +915,7 @@ namespace Service.MeterProcessState.Controllers
var listOfDnParams = JsonConvert.DeserializeObject<Dictionary<string, UInt32>>(listOfDnParamsRaw);
var listOfDnParams = JsonConvert.DeserializeObject<Dictionary<String, UInt32>>(listOfDnParamsRaw);
var sb = new StringBuilder();
sb.AppendLine($" delete [Auftrag].[dbo].[CordonelMeterSizesParameter] where [Dn_InternalId] = { ParameterMeterSize.GetHashCode()} ");
foreach (var item in listOfDnParams)
@@ -935,7 +924,7 @@ namespace Service.MeterProcessState.Controllers
sb.AppendLine($" select {ParameterMeterSize.GetHashCode()}, '{item.Key}', {item.Value};");
}
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { return dataacces.ExecuteQuery(sb.ToString()) != null; }));
@@ -953,7 +942,7 @@ namespace Service.MeterProcessState.Controllers
[Route("GetMetersizeProgrammingData"), HttpGet]
public async Task<HttpResponseMessage> GetMetersizeProgrammingData(MeterSize MeterSize)
{
var programming = new Dictionary<string, UInt32>();
var programming = new Dictionary<String, UInt32>();
var sb = new StringBuilder();
try
{
@@ -964,7 +953,7 @@ namespace Service.MeterProcessState.Controllers
sb.AppendLine($" inner join [Auftrag].[dbo].[CordonelMeterSizesParameter] para on size.Dn_InternalId = para.[Dn_InternalId] ");
sb.AppendLine($" where size.[Dn_InternalId] = {MeterSize.GetHashCode()} ");
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
var MapData = dataacces.ExecuteQuery(sb.ToString());
@@ -992,12 +981,12 @@ namespace Service.MeterProcessState.Controllers
}
[Route("GetVakoPogramming"), HttpGet]
public async Task<HttpResponseMessage> GetVakoPogramming(int ProductionOrderNumber)
public async Task<HttpResponseMessage> GetVakoPogramming(Int32 ProductionOrderNumber)
{
try
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
List<ProgrammingParameters> programming = new List<ProgrammingParameters>();
GetVakoProgramming(ProductionOrderNumber, dataacces, programming);
@@ -1011,7 +1000,7 @@ namespace Service.MeterProcessState.Controllers
}
[Route("GetSingleVakoKey"), HttpGet]
public async Task<HttpResponseMessage> GetSingleVakoKey(int ProductionOrderNumber, string KeyName)
public async Task<HttpResponseMessage> GetSingleVakoKey(Int32 ProductionOrderNumber, String KeyName)
{
try
{
@@ -1019,8 +1008,8 @@ namespace Service.MeterProcessState.Controllers
{
var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.connectionString.Value, ProductionOrderNumber);
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, rawVako.Type);
var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.ConnectionString.Value, ProductionOrderNumber);
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, rawVako.Type);
var vakoData = VakoParser.Parse(rawVako, rawMapping);
var hitList = vakoData.KeyValues.FindAll(g => g.Name == KeyName);
if (hitList.Count != 1)
@@ -1048,17 +1037,17 @@ namespace Service.MeterProcessState.Controllers
{
var ret = new List<VakoNew>();
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, "GNS");
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, "GNS");
var grpd = rawMapping.GroupBy(g => g.Name);
foreach (var item in grpd)
{
var l = item.ToList();
var digits = new List<long> { };
for (int i = 1; i <= l.First().Laenge; i++)
var digits = new List<Int64> { };
for (Int32 i = 1; i <= l.First().Laenge; i++)
{
digits.Add(l.First().Stelle + i);
}
var d = new Dictionary<string, string>();
var d = new Dictionary<String, String>();
foreach (var lvalues in l)
{
try
@@ -1087,19 +1076,19 @@ namespace Service.MeterProcessState.Controllers
public partial class VakoNew
{
public string Name { get; set; }
public String Name { get; set; }
public long[] Digits { get; set; }
public Int64[] Digits { get; set; }
public Dictionary<string, string> Values { get; set; }
public Dictionary<String, String> Values { get; set; }
}
private static void GetVakoProgramming(int ProductionOrderNumber, SqlDataAccess dataacces, List<ProgrammingParameters> programming)
private static void GetVakoProgramming(Int32 ProductionOrderNumber, SqlDataAccess dataacces, List<ProgrammingParameters> programming)
{
var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.connectionString.Value, ProductionOrderNumber);
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, rawVako.Type);
var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.ConnectionString.Value, ProductionOrderNumber);
var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, rawVako.Type);
var vakoData = VakoParser.Parse(rawVako, rawMapping);
@@ -1123,18 +1112,18 @@ namespace Service.MeterProcessState.Controllers
foreach (DataRow row in MapData.Rows)
{
programming.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (byte[])row["RegisterValue"]));
programming.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (Byte[])row["RegisterValue"]));
}
}
[Route("GetLastState")]
public async Task<HttpResponseMessage> GetLastState(string PcbId)
public async Task<HttpResponseMessage> GetLastState(String PcbId)
{
try
{
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() =>
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value))
{
var dt = dataacces.ExecuteQuery($"select top 1 [ProcessState_State] from dbo.MeterProcessState where ProcessState_PcbId like '{PcbId}' order by ProcessState_DateUtc desc ");
foreach (var item in dt.Select())