You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

612 lines
25 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ICSharpCode.Core;
using Mesnac.Codd.Session;
using Mesnac.Action.ChemicalWeighing.Entity;
using DevExpress.Office.Utils;
using Mesnac.Action.ChemicalWeighing.Entity.PptPlan;
namespace Mesnac.Action.ChemicalWeighing.Alarm
{
/// <summary>
/// 报警管理辅助类
/// </summary>
public class AlarmHelper
{
#region 报警参数
#region 判断报警代码是否存在
/// <summary>
/// 判断报警代码是否存在
/// </summary>
/// <param name="alarmPLC">要判断的报警PLC</param>
/// <param name="alarmcode">要判断的报警代码</param>
/// <returns>如果存在返回true否则返回false</returns>
public static bool IsExistsAlarmCode(string alarmcode)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select count(Alarm_ID) from Pmt_Alarm where Alarm_ID = @AlarmCode";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@AlarmCode", alarmcode);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
#endregion
#region 判断报警名称是否存在
/// <summary>
/// 判断报警名称是否存在
/// </summary>
/// <param name="alarmPLC">要判断的报警PLC</param>
/// <param name="alarmName">要判断的报警名称</param>
/// <returns>如果存在返回true否则返回false</returns>
public static bool IsExistsAlarmName(string alarmPLC, string alarmName)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select count(Alarm_ID) from Pmt_Alarm where Alarm_PLC = @AlarmPLC and Alarm_Cn_Info = @AlarmName";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@AlarmPLC", alarmPLC);
dbHelper.AddParameter("@AlarmName", alarmName);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
#endregion
#region 判断报警数据块是否存在
/// <summary>
/// 判断报警数据块是否存在
/// </summary>
/// <param name="alarmblock">要判断的报警数据块</param>
/// <returns>如果存在返回true否则返回false</returns>
public static bool IsExistsAlarmBlock(string alarmblock)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select count(Alarm_ID) from Pmt_Alarm where Alarm_Block = @AlarmBlock";
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@AlarmBlock", alarmblock);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
#endregion
#region 判断对应的报警地址和位是否存在
/// <summary>
/// 判断对应的报警地址和位是否存在
/// </summary>
/// <param name="alarmAddress">报警地址</param>
/// <param name="alarmBit">报警位</param>
/// <returns>存在返回true否则返回false</returns>
public static bool IsExistsAlarmAddressAndBit(string alarmAddress, string alarmBit)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select count(Alarm_ID) from Pmt_Alarm where Alarm_Alias = @Alarm_Alias";
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@AlarmAddress", alarmAddress);
dbHelper.AddParameter("@AlarmBit", alarmBit);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
#endregion
#region 判断对应的报警参数是否存在
/// <summary>
/// 判断对应的报警参数是否存在
/// </summary>
/// <param name="alarmPLC">报警PLC</param>
/// <param name="alarmBlock">报警地址块</param>
/// <param name="alarmAddress">报警地址字</param>
/// <param name="alarmBit">报警地址位</param>
/// <returns>存在返回true不存在返回false</returns>
public static bool IsExists(int ID,string alarmPLC, string alarmBlock, string alarm_Alias)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select count(ID) from Pmt_Alarm where ID<>@ID and Alarm_PLC = @AlarmPLC and Alarm_Block = @AlarmBlock and Alarm_Alias = @Alarm_Alias";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@ID", ID);
dbHelper.AddParameter("@AlarmPLC", alarmPLC);
dbHelper.AddParameter("@AlarmBlock", alarmBlock);
dbHelper.AddParameter("@Alarm_Alias", alarm_Alias);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
#endregion
#region 根据报警参数数据块、报警参数地址字和报警参数数据位查询报警参数
/// <summary>
/// 根据报警参数数据块、报警参数地址字和报警参数数据位查询报警参数
/// </summary>
/// <param name="alarmBlock">报警参数PLC</param>
/// <param name="alarmBlock">报警参数数据块</param>
/// <param name="alarmAddress">报警参数地址字</param>
/// <param name="alarmBit">报警参数位</param>
/// <returns>返回对应的报警参数数据行</returns>
public static DataRow GetAlarmInfoDataRow(string alarmPLC, string alarmBlock, int Alarm_Alias)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select * from Pmt_Alarm where Alarm_PLC = @AlarmPLC and Alarm_Alias = @Alarm_Alias";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@AlarmPLC", alarmPLC);
dbHelper.AddParameter("@AlarmBlock", alarmBlock);
dbHelper.AddParameter("@Alarm_Alias", Alarm_Alias);
DataTable dt = dbHelper.ToDataTable();
if (dt != null && dt.Rows.Count > 0)
{
return dt.Rows[0];
}
return null;
}
/// <summary>
/// 根据报警参数数据块、报警参数地址字和报警参数数据位查询报警参数
/// </summary>
/// <param name="alarmPLC">报警参数PLC</param>
/// <param name="alarmBlock">报警参数数据块</param>
/// <param name="alarmAddress">报警参数地址字</param>
/// <param name="alarmBit">报警参数位</param>
/// <returns>返回对应的报警参数实体</returns>
public static Entity.PmtAlarmInfo GetAlarmInfoEntity(string alarmPLC, string alarmBlock, int Alarm_Alias)
{
DataRow dr = GetAlarmInfoDataRow(alarmPLC, alarmBlock, Alarm_Alias);
Entity.PmtAlarmInfo entity = ConvertDataRowToPmtAlarmInfo(dr);
return entity;
}
public static Entity.PmtAlarmInfo GetAlarmInfoEntity(string ID)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select * from Pmt_Alarm where ID = @ID";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@ID", ID);
DataTable dt = dbHelper.ToDataTable();
if (dt != null && dt.Rows.Count > 0)
{
return ConvertDataRowToPmtAlarmInfo(dt.Rows[0]);
}
return null;
}
#endregion
#region 查询所有报警参数
/// <summary>
/// 查询所有报警参数
/// </summary>
/// <returns>返回报警参数数据表</returns>
public static DataTable GetPmtAlarmInfoTable()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select * from Pmt_Alarm order by Alarm_PLC, Alarm_Block, Alarm_Alias";
DataTable dt = dbHelper.GetDataTableBySql(sqlstr);
return dt;
}
/// <summary>
/// 查询所有报警参数
/// </summary>
/// <returns>返回报警参数实体类列表</returns>
public static List<Entity.PmtAlarmInfo> GetPmtAlarmInfoList()
{
List<Entity.PmtAlarmInfo> lst = new List<Entity.PmtAlarmInfo>();
DataTable dt = GetPmtAlarmInfoTable();
if (dt != null)
{
foreach(DataRow dr in dt.Rows)
{
Entity.PmtAlarmInfo entity = ConvertDataRowToPmtAlarmInfo(dr);
lst.Add(entity);
}
}
return lst;
}
#endregion
#region 分类查询
/// <summary>
/// 分类查询
/// </summary>
/// <returns>返回分类查询数据表</returns>
public static DataTable GetBlockStartLengthTable()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = "select Alarm_PLC, Alarm_Block, MIN(Alarm_Word) as Start, (MAX(Alarm_Word) - MIN(Alarm_Word) + 1) as Length from Pmt_Alarm group by Alarm_PLC, Alarm_Block";
DataTable dt = dbHelper.GetDataTableBySql(sqlstr);
return dt;
}
/// <summary>
/// 分类查询
/// </summary>
/// <returns>返回分类查询实体列表</returns>
public static List<Entity.AlarmInfo> GetBlockStartLengthList()
{
List<Entity.AlarmInfo> list = new List<AlarmInfo>();
DataTable dt = GetBlockStartLengthTable();
if (dt != null)
{
foreach(DataRow dr in dt.Rows)
{
Entity.AlarmInfo entity = ConvertDataRowToAlarmInfo(dr);
list.Add(entity);
}
}
return list;
}
#endregion
#region 把数据行转换为报警参数实体对象
/// <summary>
/// 把数据行转换为报警参数实体对象
/// </summary>
/// <param name="dr">报警参数数据行</param>
/// <returns>返回对应的报警参数实体对象</returns>
public static Entity.PmtAlarmInfo ConvertDataRowToPmtAlarmInfo(DataRow dr)
{
if (dr != null)
{
Entity.PmtAlarmInfo entity = new Entity.PmtAlarmInfo();
entity.ID = Mesnac.Basic.DataProcessor.RowValue(dr, "ID", 0);
entity.Equip_Code = Mesnac.Basic.DataProcessor.RowValue(dr, "Equip_Code", String.Empty);
entity.Alarm_ID = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_ID", 0);
entity.AlarmPLC = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_PLC", String.Empty);
entity.AlarmBlock = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Block", String.Empty);
entity.AlarmAlias = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Alias", String.Empty);
entity.Alarm_Cn_Info = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Cn_Info", String.Empty);
return entity;
}
return null;
}
/// <summary>
/// 把数据行转换为报警参数扩展实体对象
/// </summary>
/// <param name="dr">数据行</param>
/// <returns>返回对应的报警参数实体对象</returns>
public static Entity.AlarmInfo ConvertDataRowToAlarmInfo(DataRow dr)
{
if (dr != null)
{
Entity.AlarmInfo entity = new AlarmInfo();
entity.AlarmPLC = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_PLC", String.Empty);
entity.AlarmBlock = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Block", String.Empty);
entity.Start = Mesnac.Basic.DataProcessor.RowValue(dr, "Start", 0);
entity.Length = Mesnac.Basic.DataProcessor.RowValue(dr, "Length", 0);
return entity;
}
return null;
}
#endregion
#endregion
#region 报警记录
#region 查询报警记录
/// <summary>
/// 查询报警记录
/// </summary>
/// <param name="alarmData">报警记录实体数据</param>
public static DataTable QueryAlarmLogData()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = @"select * from LR_Alarmlog where Alarm_Status=1";
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
return table;
}
return null;
}
/// <summary>
/// 查询报警记录
/// </summary>
/// <param name="alarmData">报警记录实体数据</param>
public static List<SimpleAlarmInfo> QueryAlarmLog()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
List<SimpleAlarmInfo> list = new List<SimpleAlarmInfo>();
string sqlstr = @"select a.Alarm_PLC,a.Alarm_Block,a.Alarm_Alias,a.Alarm_Cn_Info,l.Alarm_OccurTime from Pmt_Alarm a inner join LR_Alarmlog l on a.Alarm_ID=l.Alarm_ID where Alarm_Status=1";
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
SimpleAlarmInfo entity = new SimpleAlarmInfo();
foreach (DataRow row in table.Rows)
{
entity = ConvertDataRowToAlarm(row);
list.Add(entity);
}
}
return null;
}
public static DataTable QueryAlarmLogDataTable()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = @"select ROW_NUMBER() over(order by a.Alarm_ID) Alarm_ID,a.Alarm_PLC,a.Alarm_Block,a.Alarm_Alias,a.Alarm_Cn_Info,l.Alarm_OccurTime from Pmt_Alarm a inner join LR_Alarmlog l on a.Alarm_ID=l.Alarm_ID where Alarm_Status=1";
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
return table;
}
return null;
}
public static bool IsExist(int ID)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
SimpleAlarmInfo entity = new SimpleAlarmInfo();
string sqlstr = @"select a.Alarm_PLC,a.Alarm_Block,a.Alarm_Alias,a.Alarm_Cn_Info,l.Alarm_OccurTime from Pmt_Alarm a inner join LR_Alarmlog l on a.Alarm_ID=l.Alarm_ID where a.Alarm_ID=@ID";
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@ID", ID);
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
foreach (DataRow row in table.Rows)
{
entity = ConvertDataRowToAlarm(row);
break;
}
return true;
}
return false;
}
private static SimpleAlarmInfo ConvertDataRowToAlarm(DataRow dr)
{
if (dr != null)
{
SimpleAlarmInfo alarm = new SimpleAlarmInfo();
alarm.Alarm_ID = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_ID",0);
alarm.AlramPLC = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_PLC", String.Empty);
alarm.AlarmBlock = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Block", String.Empty);
alarm.Alarm_Alias = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Alias", String.Empty);
alarm.Alarm_Cn = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Cn_Info", String.Empty);
return alarm;
}
else
{
return null;
}
}
#endregion
#region 添加报警记录
/// <summary>
/// 添加报警记录
/// </summary>
/// <param name="alarmData">报警记录实体数据</param>
public static void InsertAlarmLogData(Entity.LR_Alarmlog alarmData)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = @"insert into LR_Alarmlog(Equip_Code,Alarm_ID,Alarm_OccurTime,Alarm_ClearTime,Alarm_Status,Alarm_GUID)
values(@Equip_Code,@Alarm_ID,@Alarm_OccurTime,@Alarm_ClearTime,@Alarm_Status,@Alarm_GUID)";
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@Equip_Code", alarmData.Equip_Code);
dbHelper.AddParameter("@Alarm_ID", alarmData.Alarm_ID);
dbHelper.AddParameter("@Alarm_OccurTime", alarmData.Alarm_OccurTime);
dbHelper.AddParameter("@Alarm_ClearTime", alarmData.Alarm_ClearTime);
dbHelper.AddParameter("@Alarm_Status", alarmData.Alarm_Status);
dbHelper.AddParameter("@Alarm_GUID", alarmData.Alarm_GUID);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 更新报警记录
/// <summary>
/// 更新报警记录
/// </summary>
/// <param name="alarmID">报警记录ID</param>
/// <param name="clearTime">报警清除时间</param>
public static void UpdateAlarmLogData(int alarmID,string clearTime)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = @"update LR_Alarmlog set Alarm_Status = 0,Alarm_ClearTime = @Alarm_ClearTime where ID = @Alarm_ID";
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@Alarm_ID", alarmID);
dbHelper.AddParameter("@Alarm_ClearTime", clearTime);
dbHelper.ExecuteNonQuery();
}
#endregion
#endregion
#region 更新报警设置
/// <summary>
/// 更新报警记录
/// </summary>
/// <param name="alarmID">报警记录ID</param>
/// <param name="clearTime">报警清除时间</param>
public static void UpdateAlarmData(PmtAlarmInfo alarm)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
string sqlstr = @"update Pmt_Alarm set Alarm_PLC = @Alarm_PLC,Alarm_Block = @Alarm_Block,Alarm_Alias=@Alarm_Alias,Alarm_Cn_Info=@Alarm_Cn_Info where ID = @ID";
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.AddParameter("@Alarm_PLC", alarm.AlarmPLC);
dbHelper.AddParameter("@Alarm_Block", alarm.AlarmBlock);
dbHelper.AddParameter("@Alarm_Alias", alarm.AlarmAlias);
dbHelper.AddParameter("@Alarm_Cn_Info", alarm.Alarm_Cn_Info);
dbHelper.AddParameter("@ID", alarm.ID);
dbHelper.ExecuteNonQuery();
}
#endregion
}
}