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; } } }