From 3ba550c1240eafd65bc3be736e39cff701bc7dfa Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Mon, 3 Jun 2024 11:51:58 +0200 Subject: [PATCH 1/2] - introdotta tolleranza di ricerca delle barre - master panel --- .../LeftPanel/LeftPanelVM.vb | 21 +++++++++++-------- .../MachGroupPanel/MyMachGroupPanelVM.vb | 17 ++++++++------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb b/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb index 699bbeca..b3a259c0 100644 --- a/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb +++ b/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb @@ -873,16 +873,19 @@ Public Class LeftPanelVM DbControllers.m_LogMachineController.Create(LogEvent.CreatePartStateLog(Time, Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, 2, DbControllers.SupervisorId)) ' se attivo magazzino web, e primo pezzo della barra, aggiorno utilizzo barra da magazzino If GetMainPrivateProfileInt(S_WAREHOUSE, K_NETWAREHOUSE, 0) = 1 AndAlso MachGroup.PartVMList(0).nPartId = Part.nPartId AndAlso MachGroup.nProduction_State <> ItemState.Scrapped Then - Dim nMaterialId As Integer - If Map.refSupervisorManagerVM.CurrProd.nType = BWType.BEAM Then - nMaterialId = DbControllers.m_MaterialsController.Insert(New MaterialM(MachGroup.dW, MachGroup.dH, 0, MachGroup.sMATERIAL, MachGroup.sWAREHOUSEMATERIAL)) - ElseIf Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL Then - nMaterialId = DbControllers.m_MaterialsController.Insert(New MaterialM(0, MachGroup.dH, 0, MachGroup.sMATERIAL, MachGroup.sWAREHOUSEMATERIAL)) - End If - Dim RawPartList = DbControllers.m_RawItemsController.GetFilt(nMaterialId) - Dim RawPart As RawPartM = RawPartList.FirstOrDefault(Function(x) x.dL = MachGroup.dL AndAlso x.Material.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.Material.sWarehouseMaterial = MachGroup.sWAREHOUSEMATERIAL) + ' Dim nMaterialId As Integer + 'If Map.refSupervisorManagerVM.CurrProd.nType = BWType.BEAM Then + ' ' nMaterialId = DbControllers.m_MaterialsController.Insert(New MaterialM(MachGroup.dW, MachGroup.dH, 0, MachGroup.sMATERIAL, MachGroup.sWAREHOUSEMATERIAL)) + ' nMaterialId = DbControllers.m_MaterialsController.Insert(MachGroup.RawPartM.Material) + 'ElseIf Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL Then + ' nMaterialId = DbControllers.m_MaterialsController.Insert(New MaterialM(0, MachGroup.dH, 0, MachGroup.sMATERIAL, MachGroup.sWAREHOUSEMATERIAL)) + 'End If + 'Dim RawPartList = DbControllers.m_RawItemsController.GetFilt(nMaterialId) + 'Dim RawPart As RawPartM = RawPartList.FirstOrDefault(Function(x) x.dL = MachGroup.dL AndAlso x.Material.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.Material.sWarehouseMaterial = MachGroup.sWAREHOUSEMATERIAL) + 'Dim RawDictionary As New Dictionary(Of Integer, Integer) + 'RawDictionary.Add(RawPart.nId, 1) Dim RawDictionary As New Dictionary(Of Integer, Integer) - RawDictionary.Add(RawPart.nId, 1) + RawDictionary.Add(MachGroup.MyMachGroupM.RawPartM.nId, 1) ' forzo aggiornamento eventuali dati non inviati su Db DbControllers.m_MagmanController.ForceSyncroSend() DbControllers.m_MagmanController.ResourceSendCons(Map.refSupervisorManagerVM.CurrProd.ProdFileM.nProjCloudId, RawDictionary) diff --git a/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/MyMachGroupPanelVM.vb b/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/MyMachGroupPanelVM.vb index 8db5184d..70f51eb4 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/MyMachGroupPanelVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/MyMachGroupPanelVM.vb @@ -14,6 +14,9 @@ Public Class MyMachGroupPanelVM ' lista dei RawPart presenti su db Private m_RawPartDbList As New List(Of RawPartM) + ' tolleranza di ricerca delle barre in magazzino + Private m_DimensionRange As Double = 0.1 + Public Shadows Property SelectedMachGroup As MyMachGroupVM Get Return m_SelectedMachGroup @@ -264,7 +267,7 @@ Public Class MyMachGroupPanelVM ' aggiornamento materiale Dim RawPart As RawPartM = Nothing If bUseList Then - RawPart = m_RawPartDbList.FirstOrDefault(Function(x) x.Material.sMaterial = MachGroup.RawPartM.Material.sMaterial AndAlso x.Material.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.Material.dL = MachGroup.dL) + RawPart = m_RawPartDbList.FirstOrDefault(Function(x) x.Material.sMaterial = MachGroup.RawPartM.Material.sMaterial AndAlso Math.Abs(x.Material.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.Material.dH - MachGroup.dH) < m_DimensionRange AndAlso Math.Abs(x.Material.dL - MachGroup.dL) < m_DimensionRange) End If If Not IsNothing(RawPart) Then MachGroup.MyMachGroupM.RawPartM.Material.SetId(RawPart.Material.nId) @@ -280,9 +283,9 @@ Public Class MyMachGroupPanelVM Select Case SearchMaterial.Tipo Case DataLayer.Controllers.MaterialsController.SearchResult.TypeFound.ALIAS, DataLayer.Controllers.MaterialsController.SearchResult.TypeFound.MATERIAL If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM Then - Material = SearchMaterial.Result.FirstOrDefault(Function(x) x.dW = MachGroup.dW AndAlso x.dH = MachGroup.dH) + Material = SearchMaterial.Result.FirstOrDefault(Function(x) Math.Abs(x.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.dH - MachGroup.dH) < m_DimensionRange) ElseIf Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL Then - Material = SearchMaterial.Result.FirstOrDefault(Function(x) x.dH = MachGroup.dH) + Material = SearchMaterial.Result.FirstOrDefault(Function(x) Math.Abs(x.dH - MachGroup.dH) < m_DimensionRange) End If Case Else EgtOutLog("Error! MachGroup material not found!!") @@ -294,9 +297,9 @@ Public Class MyMachGroupPanelVM End Select Dim SearchRawPart As List(Of RawPartM) = DbControllers.m_RawItemsController.GetFilt(Material.nId) If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM Then - RawPart = SearchRawPart.FirstOrDefault(Function(x) x.Material.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.dL = MachGroup.dL) + RawPart = SearchRawPart.FirstOrDefault(Function(x) Math.Abs(x.Material.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.Material.dH - MachGroup.dH) < m_DimensionRange AndAlso Math.Abs(x.dL - MachGroup.dL) < m_DimensionRange) ElseIf Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL Then - RawPart = SearchRawPart.FirstOrDefault(Function(x) x.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.Material.dL = MachGroup.dL) + RawPart = SearchRawPart.FirstOrDefault(Function(x) Math.Abs(x.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.Material.dH - MachGroup.dH) < m_DimensionRange AndAlso Math.Abs(x.dL - MachGroup.dL) < m_DimensionRange) End If If Not IsNothing(RawPart) Then MachGroup.MyMachGroupM.RawPartM.Material.SetId(RawPart.Material.nId) @@ -311,9 +314,9 @@ Public Class MyMachGroupPanelVM If nRawPartId > 0 Then SearchRawPart = DbControllers.m_RawItemsController.GetFilt(Material.nId) If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM Then - RawPart = SearchRawPart.FirstOrDefault(Function(x) x.Material.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.dL = MachGroup.dL) + RawPart = SearchRawPart.FirstOrDefault(Function(x) Math.Abs(x.Material.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.Material.dH - MachGroup.dH) < m_DimensionRange AndAlso Math.Abs(x.dL - MachGroup.dL) < m_DimensionRange) ElseIf Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL Then - RawPart = SearchRawPart.FirstOrDefault(Function(x) x.dW = MachGroup.dW AndAlso x.Material.dH = MachGroup.dH AndAlso x.dL = MachGroup.dL) + RawPart = SearchRawPart.FirstOrDefault(Function(x) Math.Abs(x.dW - MachGroup.dW) < m_DimensionRange AndAlso Math.Abs(x.Material.dH - MachGroup.dH) < m_DimensionRange AndAlso Math.Abs(x.dL - MachGroup.dL) < m_DimensionRange) End If If IsNothing(RawPart) Then EgtOutLog("Error! MachGroup material not found!!") From e7467b19d03b948a259bb49cf14720d536b83969 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 27 Jun 2024 18:20:45 +0200 Subject: [PATCH 2/2] Fix refresh view: spostata in try/catch --- .../Controllers/DbController.cs | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/EgtBEAMWALL.DataLayer/Controllers/DbController.cs b/EgtBEAMWALL.DataLayer/Controllers/DbController.cs index 8b74a19a..46f1fc15 100644 --- a/EgtBEAMWALL.DataLayer/Controllers/DbController.cs +++ b/EgtBEAMWALL.DataLayer/Controllers/DbController.cs @@ -76,8 +76,10 @@ namespace EgtBEAMWALL.DataLayer.Controllers { bool answ = false; - // in primis refresh delle view - string sqlCommand = @"CREATE OR REPLACE VIEW v_expProdRaw AS + try + { + // in primis refresh delle view + string sqlCommand = @"CREATE OR REPLACE VIEW v_expProdRaw AS SELECT DbId, DtEvent, VarValue, SUBSTRING_INDEX(VarValue, ';', 1) AS Prod, SUBSTRING_INDEX(SUBSTRING_INDEX(VarValue, ';', 2), ';', -1) AS MachGroupId, @@ -92,20 +94,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers FROM v_expProdRaw AS vp INNER JOIN MachGroupList mgl ON vp.MachGroupId = mgl.Id INNER JOIN partlist pl ON vp.PartId = pl.Id;"; - dbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand); - Thread.Sleep(100); + dbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand); + Thread.Sleep(100); - // ora setup parametri x utente - string domain = "%"; + // ora setup parametri x utente + string domain = "%"; - // ora controllo utente con diritti - answ = doCheckCreate(username, pwd, answ, domain, true); - if (answ) - { - doGrantPriv(username, domain, "USAGE ON *.*"); - doGrantPriv(username, domain, $"SELECT ON {dbName}.v_expProd"); + // ora controllo utente con diritti + answ = doCheckCreate(username, pwd, answ, domain, true); + if (answ) + { + doGrantPriv(username, domain, "USAGE ON *.*"); + doGrantPriv(username, domain, $"SELECT ON {dbName}.v_expProd"); + } + } + catch (Exception exc) + { + string errMessage = $"EXCEPTION on DbController.refreshViews: {Environment.NewLine}{exc}"; + Console.WriteLine(errMessage); + Log.Error(errMessage); } - return answ; }