// using DevExpress.Xpo.DB;
// using FastReport.Export.Dbf;
// using HslCommunication;
// using Mesnac.Action.ChemicalWeighing.Entity;
// using Mesnac.Codd.Session;
// using Mesnac.DoUtils;
// using Mesnac.PlcUtils;
// using System;
// using System.Collections.Generic;
// using System.Data;
// using System.Linq;
// using System.Text;
// using System.Threading;
// using static DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper;
//
// namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SaveHelper
// {
// public class AlarmSaveHelper
// {
// ///
// /// 报警保存事件定义
// ///
// // public event EventHandler OnAlarmSave;
// // public event EventHandler OnAlarmSaveExtend;
// public object sender = null;
// public object senderExtend = null;
// private int WordLength = 16; //定义字长
//
// // private PlcBusiness plcBusiness = PlcBusiness.Instance;
//
// // private DoControl doControl = DoControl.Instance;
//
// private static readonly Lazy lazy = new Lazy(() => new AlarmSaveHelper());
//
// public static AlarmSaveHelper Instance
// {
// get
// {
// return lazy.Value;
// }
// }
//
// private AlarmSaveHelper() { }
//
// ///
// /// 保存报警信息
// ///
// public void Save()
// {
// List _alarmInfoList = Cache.CacheHelper.AlarmInfoList;
// List _alarmBlockWordList = Cache.CacheHelper.BlockWordList;
// ICSharpCode.Core.LoggingService.Debug("报警参数-实时刷新自动保存报警...");
//
// #region 读取PLC的报警数据 原方法 Delete By wenjy 2023-08-07 17:10:07
// //foreach (Entity.AlarmInfo info in _alarmInfoList)
// //{
// // Int16[] buff = null;
// // if (BasePlcHelper.Instance.PlcRead(info.AlarmPLC, info.AlarmBlock, info.Start, info.Length, out buff))
// // {
// // foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList)
// // {
// // if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock) //匹配数据块
// // {
// // sai.AlarmData = buff[sai.AlarmAddress - info.Start]; //对起始字偏移,为当前字的报警值
// // sai.AlarmData = Mesnac.Basic.DataProcessor.Swap(sai.AlarmData); //注意:西门子PLC需要高低位转换
// // }
// // }
// // }
// // else
// // {
// // ICSharpCode.Core.LoggingService.Warn(String.Format("从PLC读取报警数据失败:PLC={0},Block={1},Start={2},Len={3}", info.AlarmPLC, info.AlarmBlock, info.Start, info.Length));
// // }
//
// //}
//
// #endregion
//
// #region 保存报警数据 原方法 Delete By wenjy 2023-08-07 18:05:06
//
// //foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList)
// //{
// // int[] binaryAlarmData = Mesnac.Basic.DataProcessor.ParseBinaryValue(sai.AlarmData, WordLength);
// // for (int i = 0; i < WordLength; i++)
// // {
// // if (sai.IsSaveAlarm[i] == true && binaryAlarmData[i] == 0)
// // {
// // //更新报警状态
// // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i);
// // if (alarmInfo != null)
// // {
// // Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID,DateTime.Now.ToString());
// // //清除显示的报警列表信息
// // if(Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName))
// // {
// // Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName);
// // Global.PublicVar.Instance.isFlashFlag = true;
// // Global.PublicVar.Instance.isFlashFlagExtend = true;
// // }
// // }
// // }
// // if (binaryAlarmData[i] == 0)
// // {
// // sai.IsSaveAlarm[i] = false;
// // }
// // if (sai.IsSaveAlarm[i] == false && binaryAlarmData[i] == 1)
// // {
// // sai.IsSaveAlarm[i] = true;
// // //数据保存
// // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i);
// // if (alarmInfo != null)
// // {
// // Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog();
// // alarmLogData.Equip_Code = alarmInfo.Equip_Code;
// // alarmLogData.Alarm_ID = alarmInfo.Alarm_ID;
// // alarmLogData.Alarm_OccurTime = DateTime.Now.ToString();
// // alarmLogData.Alarm_ClearTime = String.Empty;
// // alarmLogData.Alarm_Status = 1;
// // alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper();
// // Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData);
// // Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName);
// // Global.PublicVar.Instance.isFlashFlag = true;
// // Global.PublicVar.Instance.isFlashFlagExtend = true;
// // }
// // }
// // }
// //}
//
// #endregion
//
// try
// {
// foreach (Entity.AlarmInfo info in _alarmInfoList)
// {
// string address = $"DB{info.AlarmBlock}.DBX{info.AlarmWord}.{info.AlarmBit}";
// // OperateResult result = plcBusiness.readBoolValue(address);
// // ICSharpCode.Core.LoggingService.Debug(string.Format("{0}读取{1}", address, result.IsSuccess == true ? $"成功;读取结果:{result.Content}" : "失败"));
// // if (result.IsSuccess == true)
// // {
// // if (result.Content)
// // {
// // AlarmLogicalProcessing(_alarmBlockWordList, info);
// // }
// // }
// // AlarmLight(result.Content); //控制报警灯 True红灯;False绿灯
// }
//
// #region 触发事件
//
// // if (OnAlarmSave != null && Global.PublicVar.Instance.isFlashFlag)
// // {
// // OnAlarmSave(sender, System.EventArgs.Empty);
// // }
// // if (OnAlarmSaveExtend != null && Global.PublicVar.Instance.isFlashFlagExtend)
// // {
// // OnAlarmSaveExtend(senderExtend, System.EventArgs.Empty);
// // }
//
// #endregion
// }
// catch (Exception ex)
// {
// ICSharpCode.Core.LoggingService.Error(String.Format("AlarmSaveHelper逻辑异常:{0}", ex.Message), ex);
// }
// }
//
// ///
// /// 报警逻辑处理
// ///
// ///
// ///
// private void AlarmLogicalProcessing(List _alarmBlockWordList, Entity.AlarmInfo info)
// {
// if(_alarmBlockWordList != null)
// {
// foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList)
// {
// if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock && sai.AlarmBit == info.AlarmBit) //匹配数据块
// {
// sai.AlarmData = 1; //对起始字偏移,为当前字的报警值
//
// Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, Convert.ToInt32(sai.AlarmBit));
// if (alarmInfo != null)
// {
// UpdateAlarmLogData(alarmInfo); //更新报警状态
// InsertAlarmLogData(alarmInfo); //保存报警信息
// }
// }
// }
// }
// }
//
// ///
// /// 更新报警状态
// ///
// ///
// private void UpdateAlarmLogData(Entity.PmtAlarmInfo alarmInfo)
// {
// if (alarmInfo != null)
// {
// Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID, DateTime.Now.ToString());
// //清除显示的报警列表信息
// if (Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName))
// {
// Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName);
// Global.PublicVar.Instance.isFlashFlag = true;
// Global.PublicVar.Instance.isFlashFlagExtend = true;
// }
// }
// }
//
// ///
// /// 保存报警信息
// ///
// ///
// private void InsertAlarmLogData(Entity.PmtAlarmInfo alarmInfo)
// {
// if (alarmInfo != null)
// {
// //保存报警信息
// Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog();
// alarmLogData.Equip_Code = alarmInfo.Equip_Code;
// alarmLogData.Alarm_ID = alarmInfo.Alarm_ID;
// alarmLogData.Alarm_OccurTime = DateTime.Now.ToString();
// alarmLogData.Alarm_ClearTime = String.Empty;
// alarmLogData.Alarm_Status = 1;
// alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper();
//
// Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData);
// Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName);
// Global.PublicVar.Instance.isFlashFlag = true;
// Global.PublicVar.Instance.isFlashFlagExtend = true;
// }
//
// }
//
// ///
// /// 报警灯控制
// ///
// /// 是否报警
// private void AlarmLight(bool flag)
// {
// // if(flag)
// // {
// // //打开报警灯:FIRST 关闭绿灯 SECOND 打开红灯
// // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.Off);
// // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.On);
// // }
// // else
// // {
// // // 关闭报警灯:FIRST 打开红灯 SECOND 关闭绿灯
// // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.Off);
// // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.On);
// // }
// }
// }
// }