| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using System;
- using System.Threading;
- using SHJX.Service.Model.Dao;
- using SHJX.Service.ServerClient;
- using SHJX.Service.Model.Control;
- using System.Collections.Generic;
- using SHJX.Service.Control.Modules;
- using SHJX.Service.Control.Interface;
- using SHJX.Service.Common.Logging;
- using Microsoft.Extensions.Logging;
- using System.Linq;
- using SHJX.Service.Common.ReadXML;
- namespace SHJX.Service.Control.Route.RouteController
- {
- /// <summary>
- /// 加水
- /// </summary>
- public class DissolveAddWaterOperate : FlowControlOperateImp
- {
- private static readonly ILogger logger = LogFactory.BuildLogger(typeof(DissolveAddWaterOperate));
- private const string OpName = "Water";
- private string localtion;
- private OptClient _client;
- private DropLiquid _liquid;
- private EquipmentTask _task;
- public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
- {
- _task = data.Task;
- _client = data.Client;
- _liquid = data.DataManager.QueryLiquid(OpName);
- if (!_liquid.Enable) return true;
- localtion = _task.To;
- logger.LogInformation($"加水{localtion}");
- DataCentre.GetStorageContent.Factory("Timer").Start();
- Thread.Sleep(2000);
- DataCentre.GetStorageContent.Factory("Timer").Stop();
- var res = _task.RouteType switch
- {
- "SY" => SYStep(),
- "BD" => BDStep(),
- "Wash" => WashStep(),
- _ => throw new ArgumentNullException(_task.RouteType),
- };
- return res;
- }
- /// <summary>
- /// 润洗 && 清洗
- /// </summary>
- /// <returns></returns>
- private bool WashStep()
- {
- var value = _task.TaskType switch
- {
- "润洗" => _liquid.WashVolume,
- "清洗" => _liquid.ClearVolume,
- _ => throw new ArgumentNullException(_task.TaskType),
- };
- var res = DataCentre.GetStorageContent.Factory(OpName).Start(localtion);
- Thread.Sleep(Convert.ToInt32(Math.Round(1000 * value)));
- res = res && DataCentre.GetStorageContent.Factory(OpName).Stop(localtion);
- LiquidTotal liquid1 = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
- liquid1.Total -= 45; //水减去 45毫升
- res = res && DataCentre._dataManager.Update<LiquidTotal>(liquid1) > 0;
- return res;
- }
- /// <summary>
- /// 水样
- /// </summary>
- /// <returns></returns>
- /// 水样任务需要分两次加液
- private bool SYStep()
- {
- PortArgs tempPortArgs = new() { TypeName = "Heat" };
- var tempRes = _client.Factory("Heat").Read(tempPortArgs) as Dictionary<string, double>;
- if (DataCentre.GetConfig.AddWaterTemperature < tempRes["pv"])
- {
- logger.LogInformation($"加水时温度不匹配:加水温度为:{DataCentre.GetConfig.AddWaterTemperature},实际温度为:{tempRes["pv"]}");
- return false;
- }
- DataCentre.GetStorageContent.Factory(OpName).Start(localtion);
- Thread.Sleep(Convert.ToInt32(Math.Round(1000 * _liquid.SampleVolume * 0.6)));
- DataCentre.GetStorageContent.Factory(OpName).Stop(localtion);
- var res = DataCentre.GetStorageContent.Factory(OpName).Start(localtion);
- Thread.Sleep(Convert.ToInt32(Math.Round(1000 * _liquid.SampleVolume * 0.4)));
- res = res && DataCentre.GetStorageContent.Factory(OpName).Stop(localtion);
- LiquidTotal liquid1 = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
- liquid1.Total -= 45; //水减去 45毫升
- res = res && DataCentre._dataManager.Update<LiquidTotal>(liquid1) > 0;
- return res;
- }
- /// <summary>
- /// 标定
- /// </summary>
- /// <param name="RouteStep"></param>
- /// <returns></returns>
- /// 标定任务需要分两个步骤加液
- private bool BDStep()
- {
- DataCentre.GetStorageContent.Factory("Timer").Start();
- Thread.Sleep(2000);
- DataCentre.GetStorageContent.Factory("Timer").Stop();
- var res = DataCentre.GetStorageContent.Factory(OpName).Start(localtion);
- Thread.Sleep(Convert.ToInt32(Math.Round(1000 * _liquid.SampleVolume * 0.5)));
- res = res && DataCentre.GetStorageContent.Factory(OpName).Stop(localtion);
- LiquidTotal liquid1 = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
- liquid1.Total -= 45; //水减去 45毫升
- res = res && DataCentre._dataManager.Update<LiquidTotal>(liquid1) > 0;
- return res;
- }
- }
- }
|