| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using SHJX.Service.Model.Dao;
- namespace SHJX.Service.Control.Extends
- {
- public static class CreateTask
- {
- private static IDataManager _dataManager;
- public static void Init(IDataManager dataManager)
- {
- _dataManager = dataManager;
- }
- /// <summary>
- /// 创建水样任务
- /// </summary>
- /// <returns></returns>
- public static EquipmentTask CreateSampleTask(this SampleDetail args, string waveKey)
- {
- string operateType = args.SampleType switch
- {
- TaskTypeName.SAMPLE_ZH or TaskTypeName.BLANK_ZH => TaskTypeName.SAMPLE,
- _ => throw new ArgumentNullException(args.SampleType)
- };
- Route route = _dataManager.Query<Route>().Where(it => it.TaskType.Equals(operateType))
- .OrderBy(it => it.RouteID).First();
- if (route is null)
- {
- throw new ArgumentException("未找到对应路由");
- }
- RouteStep step = _dataManager.Query<RouteStep>().Where(it => it.RouteID.Equals(route.RouteID)).OrderBy(it => it.Order).First();
- if (step is null)
- {
- throw new ArgumentException("未找到对应路由步骤");
- }
- EquipmentTask task = new()
- {
- WaveKey = waveKey,
- Source = args.NodeName,
- Status = TaskState.New,
- From = args.NodeName,
- To = args.NodeName,
- RouteID = route.RouteID,
- RouteStep = step.Step,
- RouteType = operateType,
- AcidBaseProp = args.AcidBaseProp,
- CalibrationEnable = args.IsCalibration,
- TaskDetailName = args.DetailInfo,
- SampleVolume = args.SampleVolume,
- SampleMultiple = args.SampleMultiple,
- TaskType = args.SampleType,
- QuicklyTitration = args.QuicklyTitration
- };
- return task;
- }
- /// <summary>
- /// 创建Wash任务
- /// </summary>
- /// <returns></returns>
- public static EquipmentTask CreateWashTask(this string type) => new()
- {
- TaskType = type,
- Status = TaskState.New,
- From = string.Empty,
- To = string.Empty,
- RouteType = TaskTypeName.WASH,
- RouteStep = TaskTypeName.WASH
- };
- /// <summary>
- /// 创建标定任务
- /// </summary>
- /// <param name="task"></param>
- /// <returns></returns>
- public static EquipmentTask CreateCalibrationTask(this EquipmentTask task) => new()
- {
- Source = task.Source,
- WaveKey = task.WaveKey,
- From = task.Source,
- To = task.Source,
- Target = nameof(task.From),
- Status = TaskState.Execute,
- RouteStep = PipeName.TITRATION,
- QuicklyTitration = true,
- Record = string.Empty,
- TaskType = TaskTypeName.CALIBRATION_ZH,
- AcidBaseProp = task.AcidBaseProp,
- RouteType = TaskTypeName.SAMPLE,
- TaskDetailName = TaskTypeName.CALIBRATION_ZH
- };
- /// <summary>
- /// 创建标定任务
- /// </summary>
- /// <param name="task"></param>
- /// <returns></returns>
- public static EquipmentTask CreateCalibration2Task(this EquipmentTask task) => new()
- {
- Source = task.Source,
- WaveKey = task.WaveKey,
- From = task.Source,
- To = task.Source,
- Target = nameof(task.From),
- Status = TaskState.Execute,
- RouteStep = PipeName.TITRATION2,
- QuicklyTitration = true,
- Record = string.Empty,
- TaskType = TaskTypeName.CALIBRATION_ZH,
- AcidBaseProp = task.AcidBaseProp,
- RouteType = TaskTypeName.SAMPLE,
- TaskDetailName = TaskTypeName.CALIBRATION_ZH
- };
- /// <summary>
- /// 获取WaveKey
- /// </summary>
- /// <returns></returns>
- public static string GetWavekey()
- {
- List<EquipmentTask> equipmentTasks = _dataManager.Query<EquipmentTask>().Where(it => it.Status.In(TaskState.New, TaskState.Waiting, TaskState.Doing, TaskState.Hit, TaskState.AddLiquid, TaskState.Dissolve, TaskState.Titration, TaskState.Titration2, TaskState.Execute)).ToList();
- if (equipmentTasks.Any())
- {
- return equipmentTasks.GroupBy(item => item.WaveKey).FirstOrDefault()?.Key;
- }
- Batch batch = _dataManager.Query<Batch>().First();
- if (batch is null)
- {
- batch = new Batch
- {
- CurrentValue = 1,
- Createtime = DateTime.Now
- };
- _dataManager.Add(batch);
- }
- else
- {
- if (batch.Createtime.ToString("yyyyMMdd").Equals(DateTime.Now.ToString("yyyyMMdd")))
- {
- batch.CurrentValue++;
- }
- else
- {
- batch.Createtime = DateTime.Now;
- batch.CurrentValue = 1;
- }
- _dataManager.Update(batch);
- }
- Wavekey wavakey = new()
- {
- WaveKey = $"{DateTime.Now:yyyyMMdd}{batch.CurrentValue.ToString().PadLeft(3, '0')}"
- };
- _dataManager.Add(wavakey);
- return wavakey.WaveKey;
- }
- }
- }
|