using System;
using System.Threading;
using SHJX.Service.Model.Dao;
using SHJX.Service.Control.Modules;
using SHJX.Service.Control.Interface;
using System.Linq;
using SHJX.Service.Common.ReadXML;
namespace SHJX.Service.Control.Route.RouteController
{
///
/// 加指示剂
///
/// 试亚铁灵
///
public class TitrationAddIndicatorOperate : FlowControlOperateImp
{
private string OpName = "Indicator";
private string DripNozzleType = "DripNozzle";
private DropLiquid _liquid;
private EquipmentTask _task;
//public static bool HighFlag = false;
public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
{
_task = data.Task;
//if (_task.SampleConcentration == "High" || data.Task.To == "D4")
//{
// OpName = "Indicator2";
// DripNozzleType = "DripNozzle2";
// HighFlag = true;
//}
//else
// HighFlag = false;
_liquid = data.DataManager.QueryLiquid(OpName);
if (!_liquid.Enable)
{
var dripNozzleRes = DataCentre.GetStorageContent.Factory(DripNozzleType).Start();
return dripNozzleRes;
}
DataCentre.GetStorageContent.Factory(DripNozzleType).Start();
DataCentre.GetStorageContent.Factory("Timer").Start();
Thread.Sleep(2000);
DataCentre.GetStorageContent.Factory("Timer").Stop();
var res = _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;//指示剂INDECATOR5毫升
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(1000 * _liquid.SampleVolume)));
res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
LiquidTotal liquid = DataCentre._dataManager.Query().Where(it => it.LiquidName.Equals(OpName)).First();
liquid.Total -= 0.2;//指示剂INDECATOR0.2毫升
res = res && DataCentre._dataManager.Update(liquid) > 0;
return res;
}
}
}