using System;
using System.Linq;
using SHJX.Service.Model.Dao;
using SHJX.Service.Model.Control;
namespace SHJX.Service.Control
{
public static class CreateTask
{
///
/// 创建水样任务
///
///
public static EquipmentTask NewSampleTask(this SampleDetail args, string waveKey)
{
(string OperateType, int Priority) = args.SampleType switch
{
"水样" => ("SY", 200),
"补杯" => ("SY", 100),
"空白" => ("SY", 300),
"标定" => ("BD", 400),
_ => throw new ArgumentNullException(args.SampleType)
};
var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals(OperateType) && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
var initStep = DataCentre.GetSteps.FirstOrDefault(item => initRoute != null && item.RouteStepId.Equals(initRoute.InitStep));
var task = new EquipmentTask
{
Priority = Priority,
WaveKey = waveKey,
OriginLocalName = args.NodeName,
From = args.NodeName,
To = args.NodeName,
RouteId = initRoute.RouteId,
RouteStepId = initRoute.InitStep,
RouteStep = initStep?.RouteStepName,
RouteType = initRoute?.OpKey,
RouteUpdateType = initStep?.UpdateRange,
TaskDetailName = args.Detail,
GetSampleVolume = args.SampleVolume,
GetSampleMultiple = args.Multiple,
TaskType = args.SampleType,
SampleConcentration = args.Concentration.Equals("低") ? "Low" : "High",
HgSO4Volume = args.HgSO4,
QuickTitration = args.QuickTitration
};
return task;
}
///
/// 创建Wash任务
///
///
public static EquipmentTask NewWashTask(this string detailName)
{
var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals("Wash") && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
if (initRoute == null)
return null;
var initStep = DataCentre.GetSteps.FirstOrDefault(item => item.RouteStepId.Equals(initRoute.InitStep));
var area = DataCentre.GetAreas;
var localName = area.FirstOrDefault(item => item.AreaName.Equals(initRoute.From))?.PointName;
var toLocalName = area.FirstOrDefault(item =>
item.AreaName.Equals(initRoute.To) &&
item.Status.Equals(true))?.PointName;
var task = new EquipmentTask
{
TaskType = detailName,
Priority = 500,
Status = TaskState.Doing,
OriginLocalName = localName,
From = localName,
To = toLocalName,
RouteId = initRoute.RouteId,
RouteStepId = initRoute.InitStep,
RouteStep = initStep?.RouteStepName,
RouteType = initRoute.OpKey,
RouteUpdateType = initStep?.UpdateRange
};
return task;
}
///
/// 创建单点任务
///
///
///
public static EquipmentTask NewSinglePointTask(this string pointName)
{
var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals("SP") && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
var initStep = DataCentre.GetSteps.FirstOrDefault(item => initRoute != null && item.RouteStepId.Equals(initRoute.InitStep));
var task = new EquipmentTask
{
Status = TaskState.Doing,
OriginLocalName = pointName,
From = pointName,
To = pointName,
RouteId = 1,
RouteStepId = initRoute.InitStep,
RouteType = initRoute.OpKey,
RouteStep = initStep?.RouteStepName,
RouteUpdateType = initStep?.UpdateRange
};
return task;
}
}
}