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