| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using SHJX.Service.Control.Extends;
- namespace SHJX.Service.Control.Pipeline.Nodes.InterceptorNodes
- {
- public class AddLiquidInterceptor : INode
- {
- #region Fields
- private static TaskExtend _taskExtend;
- private static IDataManager _dataManager;
- #endregion
- public AddLiquidInterceptor(TaskExtend taskExtend, IDataManager dataManager)
- {
- Name = nameof(AddLiquidInterceptor);
- _taskExtend = taskExtend;
- _dataManager = dataManager;
- }
- public override INode Invoke()
- {
- return this;
- }
- public override void Next()
- {
- bool vitriolEnable = true;
- bool sodiumHydroxideEnable = true;
- bool potassiumPermanganateEnable = true;
- LiquidVolume vitriolLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.AddLiquidVitriol)).First();
- if (vitriolLiquid is not null)
- {
- vitriolEnable = vitriolLiquid.Enable;//加液位硫酸
- }
- LiquidVolume sodiumHydroxideLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.Sodium1Hydroxide)).First();
- if (sodiumHydroxideLiquid is not null)
- {
- sodiumHydroxideEnable = sodiumHydroxideLiquid.Enable;//氢氧化钠
- }
- LiquidVolume potassiumPermanganateLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.Titration2PotassiumPermanganate)).First();
- if (potassiumPermanganateLiquid is not null)
- {
- potassiumPermanganateEnable = potassiumPermanganateLiquid.Enable;//加液位高锰酸钾
- }
- if (!(vitriolEnable || sodiumHydroxideEnable || potassiumPermanganateEnable))
- {
- ReleaseAxis();
- ReleaseArea();
- _taskExtend.UpdateRoute(CurrentTask);
- return;
- }
- NextNode?.SetTask(CurrentTask)?.Invoke()?.Record()?.Next();
- }
- private void ReleaseArea()
- {
- List<EquipmentArea> areas = _dataManager.Query<EquipmentArea>().Where(it => it.PointName.In(CurrentTask.To, CurrentTask.From)).ToList();
- areas.ForEach(area =>
- {
- area.Enable = true;
- _dataManager.Update(area);
- });
- List<PositionHotlist> positions = _dataManager.Query<PositionHotlist>().Where(it => it.PositionName.In(CurrentTask.To, CurrentTask.From)).ToList();
- positions.ForEach(position =>
- {
- position.CurrentOccupy = string.Empty;
- position.Enable = true;
- _dataManager.Update(position);
- });
- }
- private void ReleaseAxis()
- {
- List<RouteCache> caches = _dataManager.Query<RouteCache>().Where(it => it.Source.Equals(CurrentTask.Source)).ToList();
- if (caches.Any())
- {
- if (caches.Count == 1)
- {
- _dataManager.Delete(caches.FirstOrDefault());
- }
- else
- {
- foreach (RouteCache cache in caches)
- {
- if (cache.RouteStep != CurrentTask.RouteStep)
- {
- _dataManager.Delete(cache);
- }
- }
- }
- }
- _dataManager.Update<StateMachine>().Invoke(it => it.Status.Set(0))(it => it.Name.Equals(StateMachineName.MOTOR_LOCK));
- }
- }
- }
|