diff --git a/Common/CordonelAssemblyLine/Model/PickingModel.cs b/Common/CordonelAssemblyLine/Model/PickingModel.cs index 8b3b2e41..f8790a90 100644 --- a/Common/CordonelAssemblyLine/Model/PickingModel.cs +++ b/Common/CordonelAssemblyLine/Model/PickingModel.cs @@ -383,104 +383,113 @@ namespace CordonelAssemblyLine.Model { lblS08Text = "1"; lblS08Color = progressError; - ret = false; + ret = false; } } - if (ret) + + if (SkipProcessSteps == null || !SkipProcessSteps.SkipLUT) { + if (ret) + { - lblS08Text = "2"; - lblS08Color = progressDone; - lblS10Color = progressCurrent; - if (OrderDetails.MeterSize <= 1) - { - lblS10Color = progressDone; - lblS10Text = "Keine LUT für DN40/50"; - } - else - { - StringBuilder sbUrl = new StringBuilder(); - sbUrl.Append("http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetLutFiles"); - sbUrl.Append($"?Metersize={OrderDetails.MeterSize}"); - sbUrl.Append($"&ForProd=true"); - //?Metersize=2&Region=EMEA& - if (OrderDetails.FrequencyIndicator != 0) + + lblS08Text = "2"; + lblS08Color = progressDone; + lblS10Color = progressCurrent; + + if (OrderDetails.MeterSize <= 1) { - //get ema - sbUrl.Append($"&Region=EMEA"); + lblS10Color = progressDone; + lblS10Text = "Keine LUT für DN40/50"; } else { - //get na - sbUrl.Append($"&Region=NA"); - } - - - try - { - - var retLut = LocalWebRequest.GetRequest(sbUrl.ToString(), 80000); - var a = JsonConvert.DeserializeObject>(retLut); - - if (a.Count == 1) + StringBuilder sbUrl = new StringBuilder(); + sbUrl.Append("http://10.49.40.25/MeterProcessState/api/FileUpToDate/GetLutFiles"); + sbUrl.Append($"?Metersize={OrderDetails.MeterSize}"); + sbUrl.Append($"&ForProd=true"); + //?Metersize=2&Region=EMEA& + if (OrderDetails.FrequencyIndicator != 0) { - setState($"Vergleich abgeschlossen:{State}"); - var lut = a.First(); - lblS10Text = $"Update {lut.FileName}"; - - - var _meterLutUpdate = new MeterLutUpdate(meter); - if (_meterLutUpdate == null) - { - ret = false; - } - else - { - var loadResult = _meterLutUpdate.LoadLutFromStream(lut.FileName, lut.FileContent.ToList()); - var updatResult = _meterLutUpdate.UpdateMeterLut(); - if (loadResult && updatResult) - { - lblS10Text = $"{lut.FileName} in meter"; - lblS10Color = progressDone; - } - else - { - Result = $"Fehler beim Update"; - setState(Result); - lblS10Text = Result; - lblS10Color = progressError; - - ret = false; - } - } - - - + //get ema + sbUrl.Append($"&Region=EMEA"); } else { + //get na + sbUrl.Append($"&Region=NA"); + } - Result = $"Keine eindeutige LUT gefunden"; + + try + { + + var retLut = LocalWebRequest.GetRequest(sbUrl.ToString(), 80000); + var a = JsonConvert.DeserializeObject>(retLut); + + if (a.Count == 1) + { + setState($"Vergleich abgeschlossen:{State}"); + var lut = a.First(); + lblS10Text = $"Update {lut.FileName}"; + + + var _meterLutUpdate = new MeterLutUpdate(meter); + if (_meterLutUpdate == null) + { + ret = false; + } + else + { + var loadResult = _meterLutUpdate.LoadLutFromStream(lut.FileName, lut.FileContent.ToList()); + var updatResult = _meterLutUpdate.UpdateMeterLut(); + if (loadResult && updatResult) + { + lblS10Text = $"{lut.FileName} in meter"; + lblS10Color = progressDone; + } + else + { + Result = $"Fehler beim Update"; + setState(Result); + lblS10Text = Result; + lblS10Color = progressError; + + ret = false; + } + } + + + + } + else + { + + Result = $"Keine eindeutige LUT gefunden"; + setState(Result); + lblS10Color = progressError; + lblS10Text = Result; + ret = false; + } + + } + catch (Exception ex) + { + Result = $"Fehler beim LUT Update"; setState(Result); lblS10Color = progressError; lblS10Text = Result; - ret = false; + return false; } - - } - catch (Exception ex) - { - Result = $"Fehler beim LUT Update"; - setState(Result); - lblS10Color = progressError; - lblS10Text = Result; - return false; } } + + } + else + { + setState($"LUT wird nicht überprüft Sonderfreigabe#{SkipProcessSteps.Id} von {SkipProcessSteps.Name}"); } - - @@ -591,31 +600,38 @@ namespace CordonelAssemblyLine.Model - - foreach (var item in checkAppsIdVersion) + if (SkipProcessSteps == null || !SkipProcessSteps.SkipFWCheck) { - - try + foreach (var item in checkAppsIdVersion) { - var MeterFWApp = meter.MeterAppListVersion.First(a => item.Key == a.AppId); - if (MeterFWApp == null || MeterFWApp.Version != item.Value) + try { - setState($"Falsche FW, bitte Updaten AppId:{item.Key} sollte {item.Value} haben, hat aber {MeterFWApp.Version}"); + var MeterFWApp = meter.MeterAppListVersion.First(a => item.Key == a.AppId); + if (MeterFWApp == null || MeterFWApp.Version != item.Value) + { + setState($"Falsche FW, bitte Updaten AppId:{item.Key} sollte {item.Value} haben, hat aber {MeterFWApp.Version}"); + meter.WriteLog(State); + lblS06Color = progressError; + return false; + } + lblS06Text = MeterFWApp.StrVersion; + } + catch (Exception) + { + setState($"Fehler beim auslesen der FW"); meter.WriteLog(State); + lblS06Text = State; lblS06Color = progressError; return false; } - lblS06Text = MeterFWApp.StrVersion; - } - catch (Exception) - { - setState($"Fehler beim auslesen der FW"); - meter.WriteLog(State); - lblS06Text = State; - lblS06Color = progressError; - return false; } } + else + { + setState($"Produktionsdatum wird nicht überprüft Sonderfreigabe#{SkipProcessSteps.Id} von {SkipProcessSteps.Name}"); + } + + lblS06Color = progressDone; lblS07Color = progressCurrent; @@ -657,6 +673,7 @@ namespace CordonelAssemblyLine.Model private BarScanner barScanner; private string Order; private string PcbId; + private SkipProcess SkipProcessSteps; private string ScannerPort = "COM20"; @@ -794,7 +811,7 @@ namespace CordonelAssemblyLine.Model lblS03Color = progressError; sm = PickingStateMachine.MeterError; break; - } + } if (retCode == 417) { sm = PickingStateMachine.MeterError; @@ -821,6 +838,18 @@ namespace CordonelAssemblyLine.Model { setState($"Auftragsdaten geladen {Order}"); + + + var url = ServiceUrls.MeterProcessStateUrl(); + url = url + $"GetCordonelSkipProcessStates?OrderNumber={Order}&PcbId={PcbId}"; + var tmp = 0; + var retStr = LocalWebRequest.GetRequestWithError(url, out tmp); + + SkipProcessSteps = new SkipProcess(); + if (tmp == 200) + { + SkipProcessSteps = JsonConvert.DeserializeObject(retStr); + } sm = PickingStateMachine.Compare; @@ -843,22 +872,27 @@ namespace CordonelAssemblyLine.Model minDate = minDate.AddMonths(OrderOverview.OrderOverViewCordonel.Count < 5 ? -9 : -3); setState($"Register wurde am {OrderOverview.KitronProductionDate } hergestellt, für diesen Auftrag ist muss das Register vor {minDate} hergestellt worden sein"); lblS09Text = $"{OrderOverview.KitronProductionDate}"; - if (Order == "3189174") + if (SkipProcessSteps == null || !SkipProcessSteps.SkipBatteyCheck) { - minDate = minDate.AddYears(-5); + + + if (OrderOverview.KitronProductionDate <= minDate) + { + setState($"Fehlgeschlagen Register ist zu alt! Bitte QS informieren. KitronProductionDate:{OrderOverview.KitronProductionDate }"); + + sm = PickingStateMachine.MeterError; + lblS09Color = progressError; + var b = (System.Windows.Media.Brush)converter.ConvertFromString("#FFFF00"); + b.Freeze(); + ResultColor = b; + + break; + + } } - if (OrderOverview.KitronProductionDate <= minDate) + else { - setState($"Fehlgeschlagen Register ist zu alt! Bitte QS informieren. KitronProductionDate:{OrderOverview.KitronProductionDate }"); - - sm = PickingStateMachine.MeterError; - lblS09Color = progressError; - var b = (System.Windows.Media.Brush)converter.ConvertFromString("#FFFF00"); - b.Freeze(); - ResultColor = b; - - break; - + setState($"Produktionsdatum wird nicht überprüft Sonderfreigabe#{SkipProcessSteps.Id} von {SkipProcessSteps.Name}"); } lblS09Color = progressDone; diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs index 46c7beea..32a0bd89 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs @@ -2078,6 +2078,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore SetLcdText(false, BitConverter.GetBytes((Int64)newState).Take(2).ToArray()); } + /// public DisplayCodes GetLastProcessState() { diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs new file mode 100644 index 00000000..59655396 --- /dev/null +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs @@ -0,0 +1,18 @@ +using System; + +namespace Logic.ProductionToProductMapper.Cordonel +{ + public class SkipProcess + { + public int Id { get; set; } + public int OrderNumber { get; set; } + public int PcbId { get; set; } + public bool SkipRadioParameters { get; set; } + public bool SkipFWCheck { get; set; } + public bool SkipBatteyCheck { get; set; } + public bool SkipLUT { get; set; } + public DateTime Date { get; set; } + public string Name { get; set; } + + } +} diff --git a/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj b/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj index 3bcfc753..f06d5947 100644 --- a/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj +++ b/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj @@ -78,6 +78,7 @@ + diff --git a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs index 109c5e3f..2728697a 100644 --- a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs +++ b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs @@ -48,7 +48,7 @@ namespace Service.MeterProcessState.Controllers { return await Task.Run(() => { - var builder = new StringBuilder(); + var builder = new StringBuilder(); var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.connectionString.Value); foreach (var r in ret.Where(r => r.RegisterName == "SENSUSRADIO_EncryptionKey")) { @@ -99,7 +99,7 @@ namespace Service.MeterProcessState.Controllers builder.Append(t.ToString("x2")); } - + return Request.CreateResponse(HttpStatusCode.OK, builder.ToString()); @@ -127,11 +127,11 @@ namespace Service.MeterProcessState.Controllers var radio = OrderRadioParameter.GetRadioPramas(PcbID, GlobalConfig.connectionString.Value, withPressure ? "p" : ""); if (radio != null) { - var builder = new StringBuilder(); + var builder = new StringBuilder(); foreach (var t in radio.EncryptionKey) { builder.Append(t.ToString("x2")); - } + } return Request.CreateResponse(HttpStatusCode.OK, radio); } else @@ -162,7 +162,7 @@ namespace Service.MeterProcessState.Controllers using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) { - + var sb = new StringBuilder(); sb.AppendLine($" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber],Adresse,FunkschluesselIndex "); sb.AppendLine($" FROM [Auftrag].[dbo].[MapPcbIdToSerialNumber] pcb "); @@ -572,9 +572,9 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine($" where CordonelCurrentFw_Deleted is null "); sb.AppendLine($" and CordonelCurrentFw_Frequency = {FrequencyIndicator} "); - + sb.AppendLine($" and CordonelCurrentFw_Metersize = {MeterSize} "); - + var checkAppsData = dataacces.ExecuteQuery(sb.ToString()); @@ -590,9 +590,40 @@ namespace Service.MeterProcessState.Controllers } + + if (CheckPcbId.HasValue) { + var SkipRadioCheck = true; + sb = new StringBuilder(); + + + sb.AppendLine($" select [id] "); + sb.AppendLine($" ,[OrderNumber] "); + sb.AppendLine($" ,[PcbId] "); + sb.AppendLine($" ,[SkipRadioParameters] "); + sb.AppendLine($" ,[SkipFWCheck] "); + sb.AppendLine($" ,[SkipBatteyCheck] "); + sb.AppendLine($" ,[SkipLUT] "); + sb.AppendLine($" ,[Date] "); + sb.AppendLine($" ,[Name] "); + sb.AppendLine($" FROM [Auftrag].[dbo].[CordonelSkipChecks] "); + sb.AppendLine($" where "); + sb.AppendLine($" (OrderNumber = {ProductionOrderNumber} or OrderNumber is null) "); + sb.AppendLine($" and (PcbId = {CheckPcbId.Value} or PcbId is null) "); + + + var dt = dataacces.ExecuteQuery(sb.ToString()); + + if (dt.Rows.Count == 1) + { + //invert is a skip not a do value + SkipRadioCheck = (bool)dt.Rows[0]["SkipRadioParameters"]; + } + + + sb = new StringBuilder(); sb.AppendLine(" declare @PcbId nvarchar(50) "); @@ -619,7 +650,7 @@ namespace Service.MeterProcessState.Controllers - var dt = dataacces.ExecuteQuery(sb.ToString()); + dt = dataacces.ExecuteQuery(sb.ToString()); var hit = false; var hitAmbi = false; @@ -676,22 +707,25 @@ namespace Service.MeterProcessState.Controllers } } - } - if (CheckPcbId.Value == 18440026) - { - hit = true; - } - if (!hit) - { - //workaroudn for a year - if (!hitAmbi) + + if (SkipRadioCheck) { - - throw new Exception("No Radio Parameter found"); + hit = true; } - // return Request.CreateResponse(HttpStatusCode.ExpectationFailed, await Task.Run(() => { return "No radio parameter found!"; })); + + if (!hit) + { + //workaroudn for a year + if (!hitAmbi) + { + + throw new Exception("No Radio Parameter found"); + } + + // return Request.CreateResponse(HttpStatusCode.ExpectationFailed, await Task.Run(() => { return "No radio parameter found!"; })); + } } //return new RadioConfigurationParams();// } @@ -703,7 +737,7 @@ namespace Service.MeterProcessState.Controllers private static bool 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(); + 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(); diff --git a/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs b/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs index 1c2bc79f..28f7fa93 100644 --- a/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs +++ b/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs @@ -142,6 +142,9 @@ namespace Service.MeterProcessState.Controllers } } + + + [Route("GetPressureStateDetailed"), HttpGet] public async Task GetPressureStateDetailed(int PcbId, int? TopCount = null) { @@ -687,5 +690,75 @@ namespace Service.MeterProcessState.Controllers } } + [Route("GetCordonelSkipProcessStates")] + public async Task GetCordonelSkipProcessStates(int PcbId, int OrderNumber) + { + try + { + return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => + { + using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + { + StringBuilder sb = new StringBuilder(); + + + sb.AppendLine($" select [id] "); + sb.AppendLine($" ,[OrderNumber] "); + sb.AppendLine($" ,[PcbId] "); + sb.AppendLine($" ,[SkipRadioParameters] "); + sb.AppendLine($" ,[SkipFWCheck] "); + sb.AppendLine($" ,[SkipBatteyCheck] "); + sb.AppendLine($" ,[SkipLUT] "); + sb.AppendLine($" ,[Date] "); + sb.AppendLine($" ,[Name] "); + sb.AppendLine($" FROM [Auftrag].[dbo].[CordonelSkipChecks] "); + sb.AppendLine($" where "); + sb.AppendLine($" (OrderNumber = {OrderNumber} or OrderNumber is null) "); + sb.AppendLine($" and (PcbId = {PcbId} or PcbId is null) "); + + + var dt = dataacces.ExecuteQuery(sb.ToString()); + + + if (dt.Rows.Count != 1 ) + { + return new SkipProcess() { SkipBatteyCheck = false, SkipFWCheck = false, SkipLUT = false, SkipRadioParameters = false}; + } + var ret = new SkipProcess(); + foreach (var item in dt.Select()) + { + + try + { + ret.OrderNumber = OrderNumber; + ret.PcbId = PcbId; + ret.SkipRadioParameters = (bool)item["SkipRadioParameters"]; + ret.SkipFWCheck = (bool)item["SkipFWCheck"]; + ret.SkipBatteyCheck = (bool)item["SkipBatteyCheck"]; + ret.SkipBatteyCheck = (bool)item["SkipLUT"]; + ret.Date = (DateTime)item["Date"]; + ret.Name = item["Name"].ToString(); + } + catch (Exception) + { + + + } + + } + + + return ret; + } + + })); + } + catch (Exception ex) + { + return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex.ToString() + "
" + ex.InnerException.ToString()); + } + } + + } } \ No newline at end of file