AutoRun / Permission State Change

- Recipe Lock 수정
This commit is contained in:
최이근 2026-03-17 23:45:03 +09:00
parent 06805428c6
commit 8db304375a

View File

@ -91,59 +91,44 @@ namespace ILSOS_CCW_H52A {
seq.RunStateChanged += AutoRunSeq_RunStateChanged; seq.RunStateChanged += AutoRunSeq_RunStateChanged;
} }
private const ushort LogOut = 65535; // CMY - 급해서 해두긴 했는데 더 좋은 방향으로 바꾸어야함
private void AutoRunSeq_RunStateChanged(object sender, (string sequenceId, SequenceRunState state) e) private void AutoRunSeq_RunStateChanged(object sender, (string sequenceId, SequenceRunState state) e)
{ {
//Idle 상태에서는 Permission에 따라서 Recipe Lock이 결정된다.
//AutoRun 상황에서 Recipe Save Lock if (e.state == SequenceRunState.Idle) {
bool RecipeLockEnable = e.state != SequenceRunState.Idle; OnPermissionChanged(null);
if (ApplicationExt.PermissionLevel == LogOut) { }
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true); //Running 상태에서는 무조건 Recipe Lock
RecipeLockEnable = true; // CMY - LogOut 되어 있으면 무조건 락 else if (e.state == SequenceRunState.Running) {
} else Application.Current.Dispatcher.Invoke(() => {
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, RecipeLockEnable);
bool AutoRunState = e.state == SequenceRunState.Running;
Application.Current.Dispatcher.Invoke(() => {
if (AutoRunState)
WeldingRecipeManager.OnActiveReloaded(); WeldingRecipeManager.OnActiveReloaded();
else _UCRecipe.IsEnabled = false;
WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name); AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true);
});
}
//다른 경우는? 중복호출이 될 것 같긴한데? 사실상 Idle과 동일하게 처리하는게 나을지?
else {
if (RecipeLockEnable == false || e.state == SequenceRunState.Running) { }
_UCRecipe.IsEnabled = e.state != SequenceRunState.Running; // CMY - Recipe Lock을 풀 조건이 아니면 Enable은 건드리지 않는다.
}
if (RecipeLockEnable) Log.E($"AutoRun State Changed[{Enum.GetName(typeof(SequenceRunState), e.state)}].");
Log.E($"AutoRun Start. Recipe Lock Enable True");
else
Log.E("AutoRun End. Recipe Lock Enable False");
});
} }
private void OnPermissionChanged(EventMessage message) private void OnPermissionChanged(EventMessage message)
{ {
bool permissionOn = ApplicationExt.PermissionLevel <= (ushort)PermissionLevel.LEVEL3; bool IsAdmin = ApplicationExt.PermissionLevel <= (ushort)eEditablePermissionLevel.Engineer;
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !permissionOn);
// Login 권한이 없어지면 Active된 레시피로 변경하도록 함 // Login 권한이 없어지면 Active된 레시피로 변경하도록 함
Application.Current.Dispatcher.Invoke(() => { Application.Current.Dispatcher.Invoke(() => {
if (!permissionOn) if (!IsAdmin)
WeldingRecipeManager.OnActiveReloaded(); WeldingRecipeManager.OnActiveReloaded();
else else
WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name); WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name);
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !IsAdmin);
_UCRecipe.IsEnabled = IsAdmin;
}); });
//LogOut 상황에서 Recipe Save Lock Log.E($"OnPermissionChanged >> Permission[{Enum.GetName(typeof(eEditablePermissionLevel), ApplicationExt.PermissionLevel)}] / RecipeLock[{!IsAdmin}]");
//LogOut 상황에서 Reicpe 화면 수정할 수 없도록 함
Application.Current.Dispatcher.Invoke(() => { _UCRecipe.IsEnabled = permissionOn; });
Application.Current.Dispatcher.Invoke(() => {
if (!permissionOn)
Log.E($"User LogOut. Recipe Lock Enable True");
else
Log.E("User Login. Recipe Lock Enable False");
});
} }
// For Selection LaserDevice // For Selection LaserDevice