diff --git a/Common/.vs/config/applicationhost.config b/Common/.vs/config/applicationhost.config index 1b9332b4..40cde372 100644 --- a/Common/.vs/config/applicationhost.config +++ b/Common/.vs/config/applicationhost.config @@ -155,7 +155,7 @@ - + diff --git a/Common/CordonelAssemblyLine/CordonelAssemblyLine.csproj b/Common/CordonelAssemblyLine/CordonelAssemblyLine.csproj index 2b40e11f..f4dd79dc 100644 --- a/Common/CordonelAssemblyLine/CordonelAssemblyLine.csproj +++ b/Common/CordonelAssemblyLine/CordonelAssemblyLine.csproj @@ -175,6 +175,10 @@ {04201E95-90A0-4B73-A72F-379739B2A3AE} GenesisCore + + {2C6378C6-6BA1-4CEE-8992-8404D8369A90} + GenesisFile + {F4AAF7E6-7333-4284-B735-E32DEB076C64} Registers diff --git a/Common/CordonelAssemblyLine/Model/LeakViewModel.cs b/Common/CordonelAssemblyLine/Model/LeakViewModel.cs index a79842c5..b3b4465f 100644 --- a/Common/CordonelAssemblyLine/Model/LeakViewModel.cs +++ b/Common/CordonelAssemblyLine/Model/LeakViewModel.cs @@ -12,6 +12,7 @@ using System.Threading.Tasks; using System.Timers; using Xylem.Common.CommonCore.Configuration; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore; +using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; using Xylem.Common.Logic.ProductionOrderCore.TestResults; using Xylem.Common.Logic.SoftwareAccessHelper; @@ -98,6 +99,20 @@ namespace CordonelAssemblyLine.Model NotifyPropertyChanged(nameof(CurrentPcbID)); } } + private bool _currentPcbHasPressure; + public bool CurrentPcbHasPressure + { + get + { + return _currentPcbHasPressure; + } + set + { + _currentPcbHasPressure = value; + + NotifyPropertyChanged(nameof(CurrentPcbHasPressure)); + } + } private Timer tmrAutoDetect; public LeakViewModel(int slotNR, int? stationID = null) @@ -151,6 +166,20 @@ namespace CordonelAssemblyLine.Model tryMeter.Logout(); Log("Try to get PcbID"); CurrentPcbID = tryMeter.GetPcbId(); + CurrentPcbHasPressure = true; + try + { + tryMeter.Login(); + var hasPresure = RegisterConverter.ConvertTo(tryMeter.ReadRegister("METROLOGYASST_PressurePresent")); + CurrentPcbHasPressure = hasPresure; + } + catch (Exception ex) + { + + tryMeter.WriteLog(ex.Message); + } + + hasDetect = !string.IsNullOrEmpty(CurrentPcbID); CurrentMeter = tryMeter; @@ -248,11 +277,24 @@ namespace CordonelAssemblyLine.Model throw new ApplicationException("Keinen Auftrag gefunden. Kommissionierung prüfen!"); } var pressureResultData = JsonConvert.DeserializeObject>(retStr); + + + //add pressures point + PressureResultDataNotifyable PressureResultData; if (!pressureResultData.Any()) { - return new PressureResultDataNotifyable(); + PressureResultData = new PressureResultDataNotifyable(); } - return new PressureResultDataNotifyable(pressureResultData.First()); + + PressureResultData = new PressureResultDataNotifyable(pressureResultData.First()); + if (!CurrentPcbHasPressure) + { + PressureResultData = PressureResultData.Testpoints.Remove(PressureResultData.Testpoints.First(r => r.Ident == 10); + } + + + + return PressureResultData; } catch (Exception ex) { diff --git a/Common/CordonelAssemblyLine/Model/PickingModel.cs b/Common/CordonelAssemblyLine/Model/PickingModel.cs index 4ef950d9..8b3b2e41 100644 --- a/Common/CordonelAssemblyLine/Model/PickingModel.cs +++ b/Common/CordonelAssemblyLine/Model/PickingModel.cs @@ -6,11 +6,12 @@ using System.ComponentModel; using System.IO.Ports; using System.Linq; using System.Runtime.CompilerServices; +using System.Text; using System.Threading; using System.Threading.Tasks; -using Ui.ProductionControls; using Xylem.Common.CommonCore.Configuration; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore; +using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; using Xylem.Common.Logic.SoftwareAccessHelper; @@ -131,54 +132,76 @@ namespace CordonelAssemblyLine.Model } } + private string pLblS01Text; + public string lblS01Text { get { return pLblS01Text; } set { pLblS01Text = value; NotifyPropertyChanged(nameof(lblS01Text)); } } - string _lblS01Text; - public string lblS01Text { get { return _lblS01Text; } set { _lblS01Text = value; NotifyPropertyChanged(nameof(lblS01Text)); } } - string _lblS02Text; - public string lblS02Text { get { return _lblS02Text; } set { _lblS02Text = value; NotifyPropertyChanged(nameof(lblS02Text)); } } + private string pLblS02Text; + public string lblS02Text { get { return pLblS02Text; } set { pLblS02Text = value; NotifyPropertyChanged(nameof(lblS02Text)); } } - string _lblS03Text; - public string lblS03Text { get { return _lblS03Text; } set { _lblS03Text = value; NotifyPropertyChanged(nameof(lblS03Text)); } } - string _lblS04Text; - public string lblS04Text { get { return _lblS04Text; } set { _lblS04Text = value; NotifyPropertyChanged(nameof(lblS04Text)); } } - string _lblS05Text; - public string lblS05Text { get { return _lblS05Text; } set { _lblS05Text = value; NotifyPropertyChanged(nameof(lblS05Text)); } } - string _lblS06Text; - public string lblS06Text { get { return _lblS06Text; } set { _lblS06Text = value; NotifyPropertyChanged(nameof(lblS06Text)); } } - string _lblS07Text; - public string lblS07Text { get { return _lblS07Text; } set { _lblS07Text = value; NotifyPropertyChanged(nameof(lblS07Text)); } } - string _lblS08Text; - public string lblS08Text { get { return _lblS08Text; } set { _lblS08Text = value; NotifyPropertyChanged(nameof(lblS08Text)); } } - string _lblS09Text; - public string lblS09Text { get { return _lblS09Text; } set { _lblS09Text = value; NotifyPropertyChanged(nameof(lblS09Text)); } } - string _lblS10Text; - public string lblS10Text { get { return _lblS10Text; } set { _lblS10Text = value; NotifyPropertyChanged(nameof(lblS10Text)); } } - string _lblS11Text; - public string lblS11Text { get { return _lblS11Text; } set { _lblS11Text = value; NotifyPropertyChanged(nameof(lblS11Text)); } } + private string pLblS03Text; + public string lblS03Text { get { return pLblS03Text; } set { pLblS03Text = value; NotifyPropertyChanged(nameof(lblS03Text)); } } + + private string pLblS04Text; + public string lblS04Text { get { return pLblS04Text; } set { pLblS04Text = value; NotifyPropertyChanged(nameof(lblS04Text)); } } + + private string pLblS05Text; + public string lblS05Text { get { return pLblS05Text; } set { pLblS05Text = value; NotifyPropertyChanged(nameof(lblS05Text)); } } + + private string pLblS06Text; + public string lblS06Text { get { return pLblS06Text; } set { pLblS06Text = value; NotifyPropertyChanged(nameof(lblS06Text)); } } + + private string pLblS07Text; + public string lblS07Text { get { return pLblS07Text; } set { pLblS07Text = value; NotifyPropertyChanged(nameof(lblS07Text)); } } + + private string pLblS08Text; + public string lblS08Text { get { return pLblS08Text; } set { pLblS08Text = value; NotifyPropertyChanged(nameof(lblS08Text)); } } + + private string pLblS09Text; + public string lblS09Text { get { return pLblS09Text; } set { pLblS09Text = value; NotifyPropertyChanged(nameof(lblS09Text)); } } + + private string pLblS10Text; + public string lblS10Text { get { return pLblS10Text; } set { pLblS10Text = value; NotifyPropertyChanged(nameof(lblS10Text)); } } + + private string pLblS11Text; + public string lblS11Text { get { return pLblS11Text; } set { pLblS11Text = value; NotifyPropertyChanged(nameof(lblS11Text)); } } + + private System.Windows.Media.Brush progressWating = (System.Windows.Media.Brush)(new System.Windows.Media.BrushConverter()).ConvertFromString("Aquamarine"); + private System.Windows.Media.Brush progressCurrent = (System.Windows.Media.Brush)(new System.Windows.Media.BrushConverter()).ConvertFromString("yellow"); + private System.Windows.Media.Brush progressDone = (System.Windows.Media.Brush)(new System.Windows.Media.BrushConverter()).ConvertFromString("green"); + private System.Windows.Media.Brush progressError = (System.Windows.Media.Brush)(new System.Windows.Media.BrushConverter()).ConvertFromString("red"); - System.Windows.Media.Brush _lblS01Color; + private System.Windows.Media.Brush _lblS01Color; public System.Windows.Media.Brush lblS01Color { get { return _lblS01Color; } set { _lblS01Color = value; NotifyPropertyChanged(nameof(lblS01Color)); } } - System.Windows.Media.Brush _lblS02Color; + + private System.Windows.Media.Brush _lblS02Color; public System.Windows.Media.Brush lblS02Color { get { return _lblS02Color; } set { _lblS02Color = value; NotifyPropertyChanged(nameof(lblS02Color)); } } - System.Windows.Media.Brush _lblS03Color; + private System.Windows.Media.Brush _lblS03Color; public System.Windows.Media.Brush lblS03Color { get { return _lblS03Color; } set { _lblS03Color = value; NotifyPropertyChanged(nameof(lblS03Color)); } } - System.Windows.Media.Brush _lblS04Color; + + private System.Windows.Media.Brush _lblS04Color; public System.Windows.Media.Brush lblS04Color { get { return _lblS04Color; } set { _lblS04Color = value; NotifyPropertyChanged(nameof(lblS04Color)); } } - System.Windows.Media.Brush _lblS05Color; + + private System.Windows.Media.Brush _lblS05Color; public System.Windows.Media.Brush lblS05Color { get { return _lblS05Color; } set { _lblS05Color = value; NotifyPropertyChanged(nameof(lblS05Color)); } } - System.Windows.Media.Brush _lblS06Color; + + private System.Windows.Media.Brush _lblS06Color; public System.Windows.Media.Brush lblS06Color { get { return _lblS06Color; } set { _lblS06Color = value; NotifyPropertyChanged(nameof(lblS06Color)); } } - System.Windows.Media.Brush _lblS07Color; + + private System.Windows.Media.Brush _lblS07Color; public System.Windows.Media.Brush lblS07Color { get { return _lblS07Color; } set { _lblS07Color = value; NotifyPropertyChanged(nameof(lblS07Color)); } } - System.Windows.Media.Brush _lblS08Color; + + private System.Windows.Media.Brush _lblS08Color; public System.Windows.Media.Brush lblS08Color { get { return _lblS08Color; } set { _lblS08Color = value; NotifyPropertyChanged(nameof(lblS08Color)); } } - System.Windows.Media.Brush _lblS09Color; + + private System.Windows.Media.Brush _lblS09Color; public System.Windows.Media.Brush lblS09Color { get { return _lblS09Color; } set { _lblS09Color = value; NotifyPropertyChanged(nameof(lblS09Color)); } } - System.Windows.Media.Brush _lblS10Color; + + private System.Windows.Media.Brush _lblS10Color; public System.Windows.Media.Brush lblS10Color { get { return _lblS10Color; } set { _lblS10Color = value; NotifyPropertyChanged(nameof(lblS10Color)); } } - System.Windows.Media.Brush _lblS11Color; + + private System.Windows.Media.Brush _lblS11Color; public System.Windows.Media.Brush lblS11Color { get { return _lblS11Color; } set { _lblS11Color = value; NotifyPropertyChanged(nameof(lblS11Color)); } } @@ -186,17 +209,29 @@ namespace CordonelAssemblyLine.Model public PickingViewModel() { - _lblS01Text = "Auftrag Scan"; - _lblS02Text = "Detektiere Pcb"; - _lblS03Text = "Lade Autrag"; - _lblS04Text = "Prüfe Region/ Frequenz"; - _lblS05Text = "Prüfe Drucksensor"; - _lblS06Text = "Prüfe FW Version"; - _lblS07Text = "Prüfe Dateisystem"; - _lblS08Text = "Battery fix"; - _lblS09Text = "Produktions-datum"; - _lblS10Text = "Display"; - _lblS11Text = "Montage bestätigen"; + lblS01Text = "-"; + lblS02Text = "-"; + lblS03Text = "-"; + lblS04Text = "-"; + lblS05Text = "-"; + lblS06Text = "-"; + lblS07Text = "-"; + lblS08Text = "-"; + lblS09Text = "-"; + lblS10Text = "-"; + lblS11Text = "-"; + lblS01Color = progressCurrent; + lblS02Color = progressWating; + lblS03Color = progressWating; + lblS04Color = progressWating; + lblS05Color = progressWating; + lblS06Color = progressWating; + lblS07Color = progressWating; + lblS08Color = progressWating; + lblS09Color = progressWating; + lblS10Color = progressWating; + lblS11Color = progressWating; + InitProgressBar(); @@ -246,6 +281,7 @@ namespace CordonelAssemblyLine.Model StartCom, WaitForBuildingMeterReady, WaitForBuildingPressureReady, + LutUpdate, } private PickingStateMachine sm = PickingStateMachine.Init; @@ -338,9 +374,124 @@ namespace CordonelAssemblyLine.Model { meter.SetProcessState(Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.PickingStarted); var ret = RunCheck(checkAppsIdVersion, Frequency, MeterSize, PressurePresent, meter); + lblS08Color = progressWating; + if (ret) + { + + + if (!meter.WriteRegister("POWERMON_BatteryQuantity", 2, true, true)) + { + lblS08Text = "1"; + lblS08Color = progressError; + ret = false; + } + } + 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) + { + //get ema + sbUrl.Append($"&Region=EMEA"); + } + else + { + //get na + sbUrl.Append($"&Region=NA"); + } + + + 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; + return false; + } + } + } + + + + + if (ret) { + + if (!meter.IsLoggedOn) + { + meter.ReLogin(); + } meter.SetProcessState(Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.PickingTested); var url = $"{ServiceUrls.MeterProcessStateUrl()}SetPickingState?PcbID={meter.PcbId}&FertigungsauftragsNr={Order}"; var RetString = LocalWebRequest.PostRequestAsyncAndGetContent(url); @@ -364,15 +515,36 @@ namespace CordonelAssemblyLine.Model private bool RunCheck(Dictionary checkAppsIdVersion, uint Frequency, uint MeterSize, bool PressurePresent, GenesisMeter meter) { - setState($"Üperprüfe Parameter"); - var FrequencyReadOut = RegisterConverter.ConvertTo(meter.ReadRegister("SENSUSRADIO_FrequencyIndicator")); - if (FrequencyReadOut != Frequency) - { - setState($"Falsche Frequenz! soll {Frequency}MHz ist {FrequencyReadOut}MHz"); - meter.WriteLog(State); - return false; + lblS04Color = progressWating; + + + + + setState($"Überprüfe Parameter"); + if (Frequency == 0) + { + lblS04Text = "NA"; } + else + { + var FrequencyReadOut = RegisterConverter.ConvertTo(meter.ReadRegister("SENSUSRADIO_FrequencyIndicator")); + if (FrequencyReadOut != Frequency) + { + + setState($"Falsche Frequenz! soll {Frequency}MHz ist {FrequencyReadOut}MHz"); + meter.WriteLog(State); + lblS04Color = progressError; + return false; + } + lblS04Text = "EMEA \\" + Frequency; + lblS04Color = progressDone; + lblS05Color = progressWating; + } + + + + //TODO: metersize check for bigger dn sizes!!! //var MeterSizeReadOut = RegisterConverter.ConvertTo(meter.ReadRegister("GENESISFLOW_MeterSize")); //if (MeterSizeReadOut != MeterSize) @@ -382,51 +554,44 @@ namespace CordonelAssemblyLine.Model // return false; //} + //meter.WriteRegister("METROLOGYASST_PressurePresent", 1,true); + var PressureReadOut = RegisterConverter.ConvertTo(meter.ReadRegister("METROLOGYASST_PressurePresent")); - if (PressureReadOut) + + if (PressureReadOut == PressurePresent) { - - meter.WriteRegister("METROLOGYASST_PressureMeasure", 1, true); - - - var pressure = RegisterConverter.ConvertTo(meter.ReadRegister("METROLOGYASST_PressureMeasure")); - setState($"Prüfe Drucksensor. {pressure}"); - - meter.WriteRegister("METROLOGYASST_PressureMeasure", 1, true); - - - var pressureS = RegisterConverter.ConvertTo(meter.ReadRegister("METROLOGYASST_PressureMeasure")); - - - if (pressure - pressureS == 0) + if (!PressurePresent) { - PressureReadOut = false; - - meter.WriteRegister("METROLOGYASST_PressurePresent", 0, true); + lblS05Text = "Kein Drucksensor"; } else { - setState($"Pcb mit Drucksensor. Registerwert überschrieben"); - PressureReadOut = true; + lblS05Text = "Drucksensor vorhanden"; } + lblS05Color = progressDone; + lblS06Color = progressCurrent; } - if (PressureReadOut != PressurePresent) + else { if (!PressurePresent) { setState($"Pcb mit Drucksensor. Laut Auftrag keine verbaut"); + lblS05Text = "Drucksensor vorhanden!"; meter.WriteLog(State); } else { setState($"Pcb ohne Drucksensor. Laut Auftrag soll eine verbaut werden"); + lblS05Text = "ohne Drucksensor!"; meter.WriteLog(State); } - //todo raus - return false; + lblS05Color = progressError; } + + + foreach (var item in checkAppsIdVersion) { @@ -437,20 +602,22 @@ namespace CordonelAssemblyLine.Model { 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; } - - } - + lblS06Color = progressDone; + lblS07Color = progressCurrent; try { @@ -464,8 +631,10 @@ namespace CordonelAssemblyLine.Model var storeRet = meter.ReadRegister("METROLOGYASST_StoreConfiguration"); if (meter.PcbId != "18440026" && meter.PcbId != "193300058" && meter.PcbId != "194800276" && meter.PcbId != "201420255" && !storeRet.All(a => a.Equals(0))) { + lblS07Text = "Filesystem corrupt"; setState($"Filesystem corrupt"); meter.WriteLog(State); + lblS07Color = progressError; return false; } @@ -474,9 +643,12 @@ namespace CordonelAssemblyLine.Model { setState($"Fehler beim überprüfen des Filesystems"); meter.WriteLog(State); + lblS07Color = progressError; + lblS07Text = State; return false; } - + lblS07Color = progressDone; + lblS07Text = "Filesystem i.O"; return true; } @@ -519,8 +691,32 @@ namespace CordonelAssemblyLine.Model var c = (System.Windows.Media.Brush)converter.ConvertFromString("Aquamarine"); c.Freeze(); ResultColor = c; - ProgressBar.Where(n => n.Name == "Init").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; - ProgressBar.Where(n => n.Name == "Scan").First().State = Ui.ProductionControls.Enums.ImgStatus.InProgress; + + lblS01Text = "-"; + lblS02Text = "-"; + lblS03Text = "-"; + lblS04Text = "-"; + lblS05Text = "-"; + lblS06Text = "-"; + lblS07Text = "-"; + lblS08Text = "-"; + lblS09Text = "-"; + lblS10Text = "-"; + lblS11Text = "-"; + lblS01Color = progressWating; + lblS02Color = progressWating; + lblS03Color = progressWating; + lblS04Color = progressWating; + lblS05Color = progressWating; + lblS06Color = progressWating; + lblS07Color = progressWating; + lblS08Color = progressWating; + lblS09Color = progressWating; + lblS10Color = progressWating; + lblS11Color = progressWating; + + + break; case PickingStateMachine.WaitForScanning: Scanner = $"Offen {ScannerPort}"; @@ -533,9 +729,9 @@ namespace CordonelAssemblyLine.Model sm = PickingStateMachine.WaitForDetect; - ProgressBar.Where(n => n.Name == "Scan").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; - ProgressBar.Where(n => n.Name == "Connect").First().State = Ui.ProductionControls.Enums.ImgStatus.InProgress; - + lblS01Text = Order; + lblS01Color = progressDone; + lblS02Color = progressWating; } break; @@ -563,13 +759,16 @@ namespace CordonelAssemblyLine.Model setState($"Pcb gefunden {PcbId}"); Log($"New PcbID detected {PcbId}"); sm = PickingStateMachine.GetOrderDetails; - ProgressBar.Where(n => n.Name == "Connect").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; - ProgressBar.Where(n => n.Name == "Order data").First().State = Ui.ProductionControls.Enums.ImgStatus.InProgress; + + lblS02Text = PcbId; + lblS02Color = progressDone; + lblS03Color = progressWating; } else { Slot = $"Keine Konnektivität EP {SlotNr}"; + lblS02Text = Slot; Log($"No Meter found"); } @@ -588,13 +787,21 @@ namespace CordonelAssemblyLine.Model setState($"Lade Auftragsdaten {Order}"); var retCode = 0; var str = LocalWebRequest.GetRequestWithError($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetOrderOverview?ProductionOrderNumber={Order}&CheckPcbId={PcbId}", out retCode, 35000); + if (str.Contains("The request is invalid")) + { + Result = "Auftrag nicht gefunden"; + lblS03Text = Result; + lblS03Color = progressError; + sm = PickingStateMachine.MeterError; + break; + } if (retCode == 417) { sm = PickingStateMachine.MeterError; Result = "Keine Radio Parameter"; + lblS03Text = Result; UpdateLogText(Result, true); - ProgressBar.Where(n => n.Name == "Compare Result").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; - ProgressBar.Where(n => n.Name == "Order data").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; + lblS03Color = progressError; } else { @@ -604,18 +811,22 @@ namespace CordonelAssemblyLine.Model if (OrderOverview.OrderOverViewCordonel.Count == OrderOverview.OrderOverViewCordonel.AssignedPicking) { Result = "Auftrag schon komplett"; + lblS03Text = Result; + lblS03Color = progressError; UpdateLogText(Result, true); sm = PickingStateMachine.MeterError; - ProgressBar.Where(n => n.Name == "Compare Result").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; - ProgressBar.Where(n => n.Name == "Order data").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; + } else { setState($"Auftragsdaten geladen {Order}"); sm = PickingStateMachine.Compare; - ProgressBar.Where(n => n.Name == "Order data").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; - ProgressBar.Where(n => n.Name == "Compare").First().State = Ui.ProductionControls.Enums.ImgStatus.InProgress; + + + lblS03Text = $"Nr {OrderOverview.OrderOverViewCordonel.AssignedPicking + 1 } von {OrderOverview.OrderOverViewCordonel.Count}"; + lblS03Color = progressDone; + lblS04Color = progressCurrent; } } @@ -626,40 +837,46 @@ namespace CordonelAssemblyLine.Model setState($"Vergleiche Auftragsdaten {Order} mit Pcb Eigenschaften"); var minDate = DateTime.Now; + + + lblS09Color = progressCurrent; 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") + { + minDate = minDate.AddYears(-5); + } if (OrderOverview.KitronProductionDate <= minDate) { setState($"Fehlgeschlagen Register ist zu alt! Bitte QS informieren. KitronProductionDate:{OrderOverview.KitronProductionDate }"); - // sm = PickingStateMachine.MeterError; - + sm = PickingStateMachine.MeterError; + lblS09Color = progressError; var b = (System.Windows.Media.Brush)converter.ConvertFromString("#FFFF00"); b.Freeze(); ResultColor = b; - //break; + break; } - + lblS09Color = progressDone; if (Compare(OrderDetails.CheckAppsIdVersion, OrderDetails.FrequencyIndicator, OrderDetails.MeterSize, OrderDetails.PressurePresent)) { - //erfolg anzeigen und weiter - ProgressBar.Where(n => n.Name == "Compare Result").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; - ProgressBar.Where(n => n.Name == "Compare").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; + sm = PickingStateMachine.MeterDone; } else { sm = PickingStateMachine.MeterError; - ProgressBar.Where(n => n.Name == "Compare Result").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; - ProgressBar.Where(n => n.Name == "Compare").First().State = Ui.ProductionControls.Enums.ImgStatus.Error; var b = (System.Windows.Media.Brush)converter.ConvertFromString("#FF8000"); b.Freeze(); ResultColor = b; } break; + + case PickingStateMachine.MeterError: OrderDetails = null; OrderOverview = null; @@ -669,6 +886,7 @@ namespace CordonelAssemblyLine.Model sm = PickingStateMachine.StartCom; break; + case PickingStateMachine.MeterDone: @@ -694,6 +912,7 @@ namespace CordonelAssemblyLine.Model if (barScanner.Input == "%Cordonel_SAP_100%") { + barScanner = null; ProgressBar.Where(n => n.Name == "Scan Build").First().State = Ui.ProductionControls.Enums.ImgStatus.Success; var url = ServiceUrls.MeterProcessStateUrl(); url = url + $"setSapState?PcbID={PcbId}&code=100&version=1"; @@ -736,6 +955,7 @@ namespace CordonelAssemblyLine.Model if (barScanner.Input == "%Cordonel_SAP_101%") { + barScanner = null; var url = ServiceUrls.MeterProcessStateUrl(); url = url + $"setSapState?PcbID={PcbId}&code=101&version=1"; try diff --git a/Common/CordonelAssemblyLine/Picking.xaml b/Common/CordonelAssemblyLine/Picking.xaml index b6213bcc..55dfcf8f 100644 --- a/Common/CordonelAssemblyLine/Picking.xaml +++ b/Common/CordonelAssemblyLine/Picking.xaml @@ -68,18 +68,46 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache index d8b5c8f6..f22623aa 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -1a3d4919c9c702245832d925951f2b7cb72fc333 +5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3 diff --git a/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs b/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs index 42318341..211c2cf7 100644 --- a/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs +++ b/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs @@ -172,7 +172,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers { if (HttpContext.Current.Request.Files[a.ToString()] is HttpPostedFile f) { - + listOfFiles.Add(new Tuple(f.FileName, GetFileBytes(f))); } } @@ -256,31 +256,43 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers { return await Task.Run(() => { - - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + + using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + { + var sb = new StringBuilder(); + + sb.AppendLine($" SELECT [Id] "); + sb.AppendLine($" ,lut.[FileID] "); + sb.AppendLine($" ,[DataLength] "); + sb.AppendLine($" ,[Version] "); + sb.AppendLine($" ,[FileCrc] "); + sb.AppendLine($" ,[MeterSize] "); + sb.AppendLine($" ,[Region] "); + sb.AppendLine($" ,[CurrentVerionForProd] "); + sb.AppendLine($" ,files.[FileName] "); + sb.AppendLine($" ,files.FileContent "); + sb.AppendLine($" FROM [Auftrag].[dbo].[Cordonel_Lut] lut "); + sb.AppendLine($" inner join [Auftrag].[dbo].[FileClusterStore] fileMaster on fileMaster.FileId = lut.[FileID] "); + sb.AppendLine($" inner join [Auftrag].[dbo].[FileMapToCluster] map on fileMaster.FileIsDeleted = 0 and fileMaster.FileId = map.[FileMapToCluster_FileClusterId] "); + sb.AppendLine($" inner join [Auftrag].[dbo].[File] files on files.FileId = map.[FileMapToCluster_FileId] "); + sb.AppendLine($" where 1= 1 "); + if (Metersize.HasValue) { - var sb = new StringBuilder(); - - sb.AppendLine($" SELECT [Id] "); - sb.AppendLine($" ,lut.[FileID] "); - sb.AppendLine($" ,[DataLength] "); - sb.AppendLine($" ,[Version] "); - sb.AppendLine($" ,[FileCrc] "); - sb.AppendLine($" ,[MeterSize] "); - sb.AppendLine($" ,[Region] "); - sb.AppendLine($" ,[CurrentVerionForProd] "); - sb.AppendLine($" ,files.[FileName] "); - sb.AppendLine($" ,files.FileContent "); - sb.AppendLine($" FROM [Auftrag].[dbo].[Cordonel_Lut] lut "); - sb.AppendLine($" inner join [Auftrag].[dbo].[FileClusterStore] fileMaster on fileMaster.FileId = lut.[FileID] "); - sb.AppendLine($" inner join [Auftrag].[dbo].[FileMapToCluster] map on fileMaster.FileIsDeleted = 0 and fileMaster.FileId = map.[FileMapToCluster_FileClusterId] "); - sb.AppendLine($" inner join [Auftrag].[dbo].[File] files on files.FileId = map.[FileMapToCluster_FileId] "); - - - var retDT = dataacces.ExecuteQuery(sb.ToString()); - return Request.CreateResponse(HttpStatusCode.OK, retDT); + sb.AppendLine($" and MeterSize= {Metersize.Value} "); } + if (!string.IsNullOrEmpty(Region)) + { + sb.AppendLine($" and Region ='{Region}' "); + } + if (ForProd.HasValue) + { + sb.AppendLine($" and CurrentVerionForProd ={(ForProd.Value? "1" : "0") } "); + } + + var retDT = dataacces.ExecuteQuery(sb.ToString()); + return Request.CreateResponse(HttpStatusCode.OK, retDT); + } }); diff --git a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs index ea55a160..109c5e3f 100644 --- a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs +++ b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs @@ -572,15 +572,9 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine($" where CordonelCurrentFw_Deleted is null "); sb.AppendLine($" and CordonelCurrentFw_Frequency = {FrequencyIndicator} "); - if (PressurePresent) - { - sb.AppendLine($" and CordonelCurrentFw_ForPressure = 1 "); - } - else - { - sb.AppendLine($" and CordonelCurrentFw_ForPressure = 0 "); - } - + + sb.AppendLine($" and CordonelCurrentFw_Metersize = {MeterSize} "); + var checkAppsData = dataacces.ExecuteQuery(sb.ToString()); @@ -709,7 +703,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.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(); @@ -717,7 +711,7 @@ namespace Service.MeterProcessState.Controllers //DN50-270 var a = TestStepLoopCalibratesOk.Where(w => w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}") && !w.LengthCode.Contains($"-{LengthString}o")).ToList(); - var ao = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}o")).ToList(); + var ao = TestStepLoopCalibratesOk.Where(w => w != null && w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}o")).ToList(); if (a.Any() && ao.Any())