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.
lj_plc/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Alarm/AlarmHelper.cs

453 lines
19 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;
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_Word = @AlarmAddress and Alarm_Bit = @AlarmBit";
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(string alarmPLC, string alarmBlock, int alarmAddress, int 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_PLC = @AlarmPLC and Alarm_Block = @AlarmBlock and Alarm_Word = @AlarmAddress and Alarm_Bit = @AlarmBit";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@AlarmPLC", alarmPLC);
dbHelper.AddParameter("@AlarmBlock", alarmBlock);
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="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 alarmAddress, int 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 * from Pmt_Alarm where Alarm_PLC = @AlarmPLC and Alarm_Word = @AlarmAddress and Alarm_Bit = @AlarmBit";
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = sqlstr;
dbHelper.ClearParameter();
dbHelper.AddParameter("@AlarmPLC", alarmPLC);
dbHelper.AddParameter("@AlarmBlock", alarmBlock);
dbHelper.AddParameter("@AlarmAddress", alarmAddress);
dbHelper.AddParameter("@AlarmBit", alarmBit);
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 alarmAddress, int alarmBit)
{
DataRow dr = GetAlarmInfoDataRow(alarmPLC, alarmBlock, alarmAddress, alarmBit);
Entity.PmtAlarmInfo entity = ConvertDataRowToPmtAlarmInfo(dr);
return entity;
}
#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_Word, Alarm_Bit";
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.GUID = Mesnac.Basic.DataProcessor.RowValue(dr, "GUID", String.Empty);
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.AlarmAddress = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Word", 0);
entity.AlarmBit = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Bit", 0);
entity.AlarmCode = Mesnac.Basic.DataProcessor.RowValue(dr, "AlarmCode", String.Empty);
entity.AlarmName = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Cn_Info", String.Empty);
entity.AlarmPosition = Mesnac.Basic.DataProcessor.RowValue(dr, "Alarm_Other_Info", String.Empty);
entity.Remark = Mesnac.Basic.DataProcessor.RowValue(dr, "Remark", String.Empty);
entity.RecordTime = Mesnac.Basic.DataProcessor.RowValue(dr, "RecordTime", DateTime.Now);
entity.RecordUser = Mesnac.Basic.DataProcessor.RowValue(dr, "RecordUser", Mesnac.Basic.UserInfo.Instance.UserName);
entity.DataSource = Mesnac.Basic.DataProcessor.RowValue(dr, "DataSource", "0");
entity.PLCType = Mesnac.Basic.DataProcessor.RowValue(dr, "Plc_Type", 4);
entity.SaveFlag = (char)Mesnac.Basic.DataProcessor.RowValue(dr, "Save_Flag", 1);
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 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 Alarm_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
}
}