92 lines
3.6 KiB
C#
92 lines
3.6 KiB
C#
|
|
using MainShell.Common;
|
|||
|
|
using MainShell.DeviceMaintance.Model;
|
|||
|
|
using MainShell.EventArgsFolder;
|
|||
|
|
using MainShell.Parameter;
|
|||
|
|
using MainShell.ParaSetting.Model;
|
|||
|
|
using MaxwellFramework.Core.Attributes;
|
|||
|
|
using MW.WorkFlow;
|
|||
|
|
using MwFramework.ManagerService;
|
|||
|
|
using Stylet;
|
|||
|
|
using StyletIoC;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace MainShell.Process
|
|||
|
|
{
|
|||
|
|
[Singleton]
|
|||
|
|
public class NeedleZCalibrationActivity : ActivityAbstractBase
|
|||
|
|
{
|
|||
|
|
private readonly NeedleZCalibrationService _needleZCalibrationService;
|
|||
|
|
|
|||
|
|
|
|||
|
|
public NeedleZCalibrationActivity(NeedleZCalibrationService needleZCalibrationService) : base("NeedleZCalibrationActivity")
|
|||
|
|
{
|
|||
|
|
_needleZCalibrationService = needleZCalibrationService ?? throw new ArgumentNullException(nameof(needleZCalibrationService));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override async Task<ActivityResult> OnExecuteAsync(WorkflowContext context, ActivityControl activityControl)
|
|||
|
|
{
|
|||
|
|
NeedleZCalibrationWorkflowData workflowData = GetWorkflowData(context);
|
|||
|
|
IParamList paramList = workflowData.GetParameterList();
|
|||
|
|
NeedleCalibrationSetting needleCalibrationSetting = paramList?.GetParameter<NeedleCalibrationSetting>();
|
|||
|
|
EquipmentParaSysSetting equipmentParaSysSetting = paramList?.GetParameter<EquipmentParaSysSetting>();
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
NeedleZCalibrationExecutionContext executionContext = _needleZCalibrationService.CreateExecutionContext(
|
|||
|
|
needleCalibrationSetting,
|
|||
|
|
equipmentParaSysSetting,
|
|||
|
|
workflowData.TouchCount,
|
|||
|
|
workflowData.AutoRaiseZ1);
|
|||
|
|
IReadOnlyList<double> results = await _needleZCalibrationService.ExecuteCalibrationAsync(
|
|||
|
|
executionContext,
|
|||
|
|
activityControl,
|
|||
|
|
workflowData.CancellationToken,
|
|||
|
|
result => PublishResult(workflowData, result));
|
|||
|
|
WriteResults(context, results);
|
|||
|
|
return ActivityResult.Success;
|
|||
|
|
}
|
|||
|
|
catch (InvalidOperationException ex)
|
|||
|
|
{
|
|||
|
|
return Fail(context, MessageKey.ProcessStepFailedWithReason, new object[] { Name, ex.Message });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static void PublishResult(NeedleZCalibrationWorkflowData workflowData, double result)
|
|||
|
|
{
|
|||
|
|
workflowData.EventAggregator?.PublishOnUIThread(new NeedleZCalibrationResultEventArgs(result));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static void WriteResults(WorkflowContext context, IReadOnlyList<double> results)
|
|||
|
|
{
|
|||
|
|
if (context == null || results == null || results.Count == 0)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
context.SetData(WorkflowContextKeys.NeedleZCalibrationResults, results);
|
|||
|
|
context.SetData(WorkflowContextKeys.NeedleZCalibrationLastResult, results.Last());
|
|||
|
|
context.SetData(WorkflowContextKeys.NeedleZCalibrationAverageResult, results.Average());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static NeedleZCalibrationWorkflowData GetWorkflowData(WorkflowContext context)
|
|||
|
|
{
|
|||
|
|
if (context == null)
|
|||
|
|
{
|
|||
|
|
throw new ArgumentNullException(nameof(context));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
NeedleZCalibrationWorkflowData workflowData = null;
|
|||
|
|
if (!context.TryGetData(WorkflowContextKeys.NeedleZCalibrationWorkflowData, out workflowData) || workflowData == null)
|
|||
|
|
{
|
|||
|
|
throw new InvalidOperationException("δ<>ṩ<EFBFBD><E1B9A9>ͷZ<CDB7>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return workflowData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|