using System;
using System.Linq;
using System.Threading;
using SHJX.Service.Model.Dao;
using SHJX.Service.Control.Modules;
using SHJX.Service.Control.Interface;
using SHJX.Service.Common.ReadXML;
namespace SHJX.Service.Control.Route.RouteController
{
///
/// 硫酸汞加液
///
public class SampleAL1Operate : FlowControlOperateImp
{
private const string OpName = "Mercury";
private DropLiquid _liquid;
private EquipmentTask _task;
public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
{
_task = data.Task;
_liquid = data.DataManager.QueryLiquid(OpName);
if (!_liquid.Enable) return true;
DataCentre.GetStorageContent.Factory("Timer").Start();
Thread.Sleep(2000);
DataCentre.GetStorageContent.Factory("Timer").Stop();
var res = data.Task.RouteType switch
{
"Wash" => WashLiquid(),
_ => OtherAddLiquid(),
};
return res;
}
///
/// 清洗 && 润洗
///
///
private bool WashLiquid()
{
var value = _task.TaskType switch
{
"润洗" => _liquid.WashVolume,
"清洗" => _liquid.ClearVolume,
_ => throw new ArgumentNullException(_task.TaskType),
};
var res = DataCentre.GetStorageContent.Factory(OpName).Start();
Thread.Sleep(Convert.ToInt32(Math.Round(1000 * value)));
res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
LiquidTotal liquid = DataCentre._dataManager.Query().Where(it => it.LiquidName.Equals(OpName)).First();
liquid.Total -= 5; // 硫酸汞加液扣减5毫升
res = res & DataCentre._dataManager.Update(liquid) > 0;
return res;
}
///
/// 其他加液
///
///
private bool OtherAddLiquid()
{
var res = DataCentre.GetStorageContent.Factory(OpName).Start();
Thread.Sleep(Convert.ToInt32(Math.Round(_liquid.SampleVolume * 1000)));
res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
LiquidTotal liquid = DataCentre._dataManager.Query().Where(it => it.LiquidName.Equals(OpName)).First();
liquid.Total -= 2; // 硫酸汞加液扣减2毫升
res = res & DataCentre._dataManager.Update(liquid) > 0;
return res;
}
}
}