using SHJX.Service.Common.ReadXML;
using SHJX.Service.Control.Interface;
using SHJX.Service.Model.Dao;
using System.Threading;
namespace SHJX.Service.Control.TimerControl.WriteTaskToEquipment
{
///
/// 样品任务
///
public class SampleWriteTask : WriteTaskToEquipmentImp
{
public SampleWriteTask(ReadConfigUtil config, FlowContent operateController)
: base(config, operateController) { }
///
/// 写入任务到设备
///
public override void WriteTaskToEquipmentEvent()
{
if (!ReadConfig.TaskRunning)
return;
var task = GetNewTask(4);
if (task is not null&& task.RouteId==4)
{
OperateController.OperateControllerContent(task);
Thread.Sleep(1 * 1000);
task = GetNewTask(9);
if (task is not null && task.RouteId == 9)
{
OperateController.OperateControllerContent(task);
}
}
Thread.Sleep(1 * 1000);
task = GetNewTask(1);
if (task is null)
return;
OperateController.OperateControllerContent(task);
}
///
/// 获取新任务
///
///
///
private EquipmentTask GetNewTask(int routeId)
{
EquipmentTask task;
//TODO:如果任务为加热,则取查找是否有样品冷却的任务,如果有,则返回
if (routeId.Equals(4) && DataManager.QuerySampleHeating())
{
task = DataManager.QuerySampleCoolingAfter();
if (task is not null)
return task;
}
task = DataManager.QueryNewTaskFirst(TaskState.Doing, routeId);
if (task is not null)
return task;
if (DataManager.QueryEqualsRouteIdCount(routeId) > 0) //如果存在同一步骤未完成的情况
return null;
if (routeId.Equals(11))// 任务路由已为最后一条
return null;
task = GetNewTask(++routeId);
return task;
}
}
}