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