ee558cecd6
- Correzione flip e rot dei duplo - Cambiata gestione ricalcolo in supervisore - Aggiunti controlli su comunicazione tra programmi - Gestione apertura progetto con s/blocco duplo - Gestione errore ricalcolo in supervisore - Aggiunti controlli su cicli di comunicazione tra programmi
113 lines
5.6 KiB
VB.net
113 lines
5.6 KiB
VB.net
Imports EgtBEAMWALL.DataLayer.DatabaseModels
|
|
|
|
Public Class ViewerOptimizerComm
|
|
|
|
Sub New()
|
|
' imposto in Map
|
|
'Map.SetRefMachManaging(Me)
|
|
End Sub
|
|
|
|
Friend Sub Timer_Tick()
|
|
' se c'e' un progetto aperto o in caricamento
|
|
If IsNothing(Map.refSupervisorManagerVM.CurrProd) OrElse Map.refSupervisorManagerVM.bLoadingProd Then Return
|
|
' recupero indice modifica del prod
|
|
Dim nModificationIndex As Integer = 0
|
|
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd()
|
|
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(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()
|
|
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 AndAlso MachGroupModification.Operation = Core.StatusMapOpType.ViewOptimStoped Then
|
|
ViewerOptimizerCommThread.SetViewerOptimizerBlocked(True)
|
|
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
|
|
|
|
|
|
' ricarico il progetto
|
|
'Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
|
|
End If
|
|
|
|
|
|
|
|
' aggiorno indice del prod
|
|
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(nModificationIndex)
|
|
End If
|
|
|
|
|
|
|
|
|
|
' verifico se e' aperto in qualche ottimizzatore
|
|
'DbControllers.m_ProdController.
|
|
'Map.refSupervisorManagerVM.CurrProd.bIsLocked
|
|
' verifico se la mappa messaggi ha indice maggiore del mio
|
|
|
|
' ricarico il progetto
|
|
|
|
' aggiorno eventuali nuovi machgroup
|
|
|
|
|
|
|
|
|
|
|
|
' se devo ripartire a meta' di una barra
|
|
|
|
' mando messaggio di blocco dell'ottimizzatore
|
|
|
|
|
|
End Sub
|
|
|
|
End Class
|