Files
Demetrio Cassarino a12ab8f531 -pulizia codice
2024-06-13 17:36:10 +02:00

107 lines
6.2 KiB
VB.net

Imports EgtBEAMWALL.DataLayer.DatabaseModels
Public Class ViewerOptimizerComm
Private m_bTickInExecution As Boolean = False
Sub New()
End Sub
Friend Sub Timer_Tick()
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) AndAlso Map.refProjectVM.SupervisorMachGroupPanelVM.bReloadingProj Then
EgtUILib.EgtOutLog("Ricaricamento programma in esecuzione!!")
Return
End If
If m_bTickInExecution Then
EgtUILib.EgtOutLog("Tick gia' in esecuzione!!")
Return
End If
m_bTickInExecution = True
' se c'e' un progetto aperto o in caricamento
If IsNothing(Map.refSupervisorManagerVM.CurrProd) OrElse Map.refSupervisorManagerVM.bLoadingProd Then
m_bTickInExecution = False
Return
End If
' recupero indice modifica del prod
Dim nModificationIndex As Integer = 0
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd(m_SupervisorId)
For Each ActiveSession In ActiveSessionList
If ActiveSession.ItemId = Map.refSupervisorManagerVM.CurrProd.nProdId Then
nModificationIndex = ActiveSession.Index
End If
Next
' se indice letto diverso da indice gia' presente
If nModificationIndex <> Map.refSupervisorManagerVM.CurrProd.nModificationIndex Then
' recupero elementi modificati
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(m_SupervisorId, Map.refSupervisorManagerVM.CurrProd.nModificationIndex + 1)
Dim bReloadFile As Boolean = False
For Each MachGroupModification In MachGroupList
If MachGroupModification.ItemType = Core.StatusMapItemType.MachGroup Then
Select Case MachGroupModification.Operation
Case Core.StatusMapOpType.MachGroupAdd
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Add(MachGroupModification.ItemId, {MachGroupModification.Index, MachGroupModification.Index})
Case Core.StatusMapOpType.MachGroupMod
If Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.ContainsKey(MachGroupModification.ItemId) Then
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList(MachGroupModification.ItemId)(0) = MachGroupModification.Index
Else
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Add(MachGroupModification.ItemId, {MachGroupModification.Index, 0})
End If
Case Core.StatusMapOpType.MachGroupRem
If Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.ContainsKey(MachGroupModification.ItemId) Then
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Remove(MachGroupModification.ItemId)
End If
Case Core.StatusMapOpType.MachGroupAssignedToSupervisor
Dim MachgroupIndexes As Integer() = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList(MachGroupModification.ItemId)
' se indice di aggiornamento file diverso da indice ultima modifica
If MachgroupIndexes(0) <> MachgroupIndexes(1) Then
' devo ricaricare il file
bReloadFile = True
' ricarico il progetto
Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
' esco aggiornando l'indice a quello corrente
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(MachGroupModification.Index)
Exit For
Else
Dim ProdMachGroup As MyMachGroupVM = Map.refProjectVM.ProdMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId)
If Not IsNothing(ProdMachGroup) Then
ProdMachGroup.dtStartTime = DateTime.MinValue
ProdMachGroup.dtEndTime = DateTime.MinValue
ProdMachGroup.MyMachGroupM.SetProductionState(Core.ItemState.Assigned)
Dim DBMachGroup As MachGroupModel = DbControllers.m_MachGroupController.FindByMachGroupId(Map.refSupervisorManagerVM.CurrProd.nProdId, ProdMachGroup.Id)
If Not IsNothing(DBMachGroup) Then ProdMachGroup.SetProductionIndex(DBMachGroup.ProdIndex)
For Each Part In ProdMachGroup.PartVMList
Part.dtStartTime = DateTime.MinValue
Part.dtEndTime = DateTime.MinValue
Part.nProduction_State = Core.ItemState.Assigned
Next
' lo aggiungo alla lista di MachGroup
Map.refProjectVM.SupervisorMachGroupPanelVM.AddMachGroupToSupervisor(ProdMachGroup)
End If
End If
End Select
ElseIf MachGroupModification.ItemType = Core.StatusMapItemType.Comm Then
If MachGroupModification.Operation = Core.StatusMapOpType.ViewOptimStoped Then
ViewerOptimizerCommThread.SetViewerOptimizerBlocked(True)
ElseIf MachGroupModification.Operation = Core.StatusMapOpType.ChangeProdInSupervisorRequest Then
' lo apro
Map.refSupervisorManagerVM.OpenProjectFromOptimizer(MachGroupModification.ItemId)
End If
End If
Next
' se devo ricaricare il file
If bReloadFile Then
' aggiorno indici in dictionary
For Each MachGroupModification In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.Where(Function(x) x.Value(0) <> x.Value(1))
MachGroupModification.Value(1) = MachGroupModification.Value(0)
Next
End If
If Not bReloadFile Then
' aggiorno indice del prod
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(nModificationIndex)
End If
End If
m_bTickInExecution = False
End Sub
End Class