67 lines
3.0 KiB
C#
67 lines
3.0 KiB
C#
|
|
using MainShell.Common;
|
|||
|
|
using MW.WorkFlow;
|
|||
|
|
using System;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace MainShell.Process
|
|||
|
|
{
|
|||
|
|
public class ChipPreparationConsumeActivity : ActivityAbstractBase
|
|||
|
|
{
|
|||
|
|
public ChipPreparationConsumeActivity(string name)
|
|||
|
|
: base(name)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override Task<ActivityResult> OnExecuteAsync(WorkflowContext context, ActivityControl activityControl)
|
|||
|
|
{
|
|||
|
|
activityControl.ThrowIfCancellationRequested();
|
|||
|
|
|
|||
|
|
CurrentChipLifecycleState currentChipState;
|
|||
|
|
if (!context.TryGetData<CurrentChipLifecycleState>(WorkflowContextKeys.CurrentChipState, out currentChipState) ||
|
|||
|
|
currentChipState != CurrentChipLifecycleState.LoadedPendingTransfer)
|
|||
|
|
{
|
|||
|
|
return Task.FromResult(ActivityResult.Success);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
PreparationAreaService preparationAreaService;
|
|||
|
|
if (!context.TryGetData<PreparationAreaService>(WorkflowContextKeys.PreparationAreaService, out preparationAreaService) || preparationAreaService == null)
|
|||
|
|
{
|
|||
|
|
throw new InvalidOperationException("δ<>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
AutoProductionRuntimeStateService autoProductionRuntimeStateService;
|
|||
|
|
if (!context.TryGetData<AutoProductionRuntimeStateService>(WorkflowContextKeys.AutoProductionRuntimeStateService, out autoProductionRuntimeStateService) || autoProductionRuntimeStateService == null)
|
|||
|
|
{
|
|||
|
|
throw new InvalidOperationException("δ<>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
string rejectReason;
|
|||
|
|
if (preparationAreaService.TryConsumeReady(out rejectReason))
|
|||
|
|
{
|
|||
|
|
CurrentChipStateService currentChipStateService;
|
|||
|
|
if (context.TryGetData<CurrentChipStateService>(WorkflowContextKeys.CurrentChipStateService, out currentChipStateService) && currentChipStateService != null)
|
|||
|
|
{
|
|||
|
|
currentChipStateService.SetState(CurrentChipLifecycleState.InUse);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
autoProductionRuntimeStateService.SetCurrentChipRemainingCount(1);
|
|||
|
|
|
|||
|
|
context.SetData(WorkflowContextKeys.PendingChipLoad, false);
|
|||
|
|
context.SetData(WorkflowContextKeys.CurrentChipState, CurrentChipLifecycleState.InUse);
|
|||
|
|
context.SetData(WorkflowContextKeys.PreparationAreaStatus, preparationAreaService.CurrentStatus);
|
|||
|
|
context.SetData(WorkflowContextKeys.CurrentChipRemainingCount, autoProductionRuntimeStateService.CurrentChipRemainingCount);
|
|||
|
|
return Task.FromResult(ActivityResult.Success);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return Task.FromResult(Fail(
|
|||
|
|
context,
|
|||
|
|
MessageKey.ProcessStepFailedWithReason,
|
|||
|
|
new object[]
|
|||
|
|
{
|
|||
|
|
Name,
|
|||
|
|
string.IsNullOrWhiteSpace(rejectReason) ? "оƬ<D0BE><C6AC>̨<CCA8><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>" : rejectReason
|
|||
|
|
}));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|