| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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
- {
- /// <summary>
- /// 硫酸汞加液
- /// </summary>
- 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;
- }
- /// <summary>
- /// 清洗 && 润洗
- /// </summary>
- /// <returns></returns>
- 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<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
- liquid.Total -= 5; // 硫酸汞加液扣减5毫升
- res = res & DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
- return res;
- }
- /// <summary>
- /// 其他加液
- /// </summary>
- /// <returns></returns>
- 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<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
- liquid.Total -= 2; // 硫酸汞加液扣减2毫升
- res = res & DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
- return res;
- }
- }
- }
|