天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1466 lines
51 KiB

using System;
using System.Collections.Generic;
using QMAPP.BLL;
using QMAPP.BLL.Sys;
using QMAPP.DAL.Sys;
using QMAPP.Entity;
using QMAPP.Entity.Sys;
using QMAPP.FJC.BLL.Dict;
using QMAPP.FJC.DAL.EquipMentAlarmManage;
using QMAPP.FJC.Entity;
using QMAPP.FJC.Entity.WarnManage;
using QMFrameWork.Data;
using QMFrameWork.Log;
using QMFrameWork.Mail;
namespace QMAPP.FJC.BLL.WarnManage
{
/// <summary>
/// 模块编号:M6-3
/// 作 用:自动报警维护
/// 作 者:张敬贺
/// 编写日期:2015年06月19日
///</summary>
public class WarnManageBLL : BaseBLL
{
#region 报警信息维护
#region 报警信息获取信息
/// <summary>
/// 报警信息获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>信息</returns>
public DataResult<WarnInfo> WarnInfoGet(WarnInfo model)
{
DataResult<WarnInfo> result = new DataResult<WarnInfo>();
try
{
result.Result = new WarnManageDAL().WarnInfoGet(model);
result.IsSuccess = true;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "获取报警记录异常!"
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = "获取报警记录异常";
}
return result;
}
#endregion
#region 报警信息获取列表
/// <summary>
/// 报警信息获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataResult<DataPage> GetWarnInfoList(WarnInfo condition, DataPage page)
{
DataResult<DataPage> result = new DataResult<DataPage>();
try
{
//获取信息列表
DataPage dataPage = new WarnManageDAL().GetWarnInfoList(condition, page);
#region 转换工序类别显示类型
List<WarnInfo> list = dataPage.Result as List<WarnInfo>;
//处理字典信息
DictManageBLL dictWARNTYPE = new DictManageBLL(DictKind.WARNTYPE);
DictManageBLL dictISDONE = new DictManageBLL(DictKind.ISDONE);
DictManageBLL dictISDEAL = new DictManageBLL(DictKind.ISDEAL);
DictManageBLL dictCREATETYPE = new DictManageBLL(DictKind.CREATETYPE);
foreach (var info in list)
{
//替换报警类别显示值
info.WARNTYPE = dictWARNTYPE.GetDictValue(info.WARNTYPE);
//替换是否完成显示值
info.ISDONE = dictISDONE.GetDictValue(info.ISDONE);
//替换是否发送显示值
info.ISDEAL = dictISDEAL.GetDictValue(info.ISDEAL);
//替换生成方式显示值
info.CREATETYPE = dictCREATETYPE.GetDictValue(info.CREATETYPE);
}
#endregion
result.IsSuccess = true;
result.Result = dataPage;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "报警记录获取列表异常!"
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = "报警记录获取列表异常!";
}
return result;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <returns>全部集合</returns>
public List<WarnInfo> GetAllWarnInfoList(WarnInfo condition)
{
try
{
//获取信息列表
List<WarnInfo> list = new WarnManageDAL().GetWarnInfoList(condition);
return list;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "报警记录获取列表异常!"
});
throw ex;
}
}
#endregion
#region 报警信息插入信息
/// <summary>
/// 报警信息插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public DataResult WarnInfoInsert(WarnInfo model)
{
DataResult result = new DataResult();
WarnManageDAL ppDAL = new WarnManageDAL();
try
{
result.IsSuccess = true;
//基本信息
model.PID = Guid.NewGuid().ToString();
model.CREATETYPE = QMAPP.FJC.Entity.EnumGeter.CREATETYPE.people.GetHashCode().ToString();
model.CREATEUSER = this.LoginUser.UserID;
model.CREATEDATE = DateTime.Now;
model.UPDATEUSER = model.CREATEUSER;
model.UPDATEDATE = model.CREATEDATE;
int temp = ppDAL.WarnInfoInsert(model);
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = "报警记录插入失败!";
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "报警记录插入异常!"
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = "报警记录插入异常";
}
return result;
}
#endregion
#region 报警信息更新信息
/// <summary>
/// 报警信息更新信息
/// </summary>
/// <param name=""></param>
/// <returns>更新行数</returns>
public DataResult WarnInfoUpdate(WarnInfo model)
{
DataResult result = new DataResult();
result.IsSuccess = true;
try
{
WarnInfo info = new WarnManageDAL().WarnInfoGet(model);
//基本信息
info.CREATETYPE = model.CREATETYPE;
info.WARNCODE = model.WARNCODE;
info.WARNTYPE = model.WARNTYPE;
info.WARNDESCRIBE = model.WARNDESCRIBE;
info.MEMO = model.MEMO;
info.UPDATEUSER = this.LoginUser.UserID;
int temp = new WarnManageDAL().WarnInfoUpdate(info);
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = "报警记录更新失败!";
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "生产记录更新异常!"
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = "生产记录更新异常";
}
return result;
}
#endregion
#region 报警信息删除
/// <summary>
/// 删除信息
/// </summary>
/// <param name=""></param>
/// <returns>删除个数</returns>
public DataResult WarnInfoDelete(string strs)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int count = 0;
string[] list = strs.Split(":".ToCharArray());
try
{
foreach (string str in list)
{
count += this.DeleteWarnInfoInfo(new WarnInfo { PID = str });
}
if (count != list.Length)
{
result.IsSuccess = false;
result.Msg = "报警信息部分删除!";
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "报警记录删除异常!"
});
result.IsSuccess = false;
result.Msg = "报警记录删除异常!";
result.Ex = ex;
}
return result;
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="">信息</param>
/// <returns>删除个数</returns>
public int DeleteWarnInfoInfo(WarnInfo model)
{
int count = 0;
try
{
count = new WarnManageDAL().WarnInfoDelete(model);
return count;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#endregion
#region 报警类别维护
#region 报警类别获取信息
/// <summary>
/// 报警类别获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>信息</returns>
public DataResult<WarnType> WarnTypeGet(WarnType model)
{
DataResult<WarnType> result = new DataResult<WarnType>();
try
{
result.Result = new WarnManageDAL().WarnTypeGet(model);
result.IsSuccess = true;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeGetError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnTypeGetError;
}
return result;
}
#endregion
#region 报警类别获取列表
/// <summary>
/// 报警类别获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataResult<DataPage> GetWarnTypeList(WarnType condition, DataPage page)
{
DataResult<DataPage> result = new DataResult<DataPage>();
try
{
#region 获取报警与报警通知人关联列表 用于处理相应标记位
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
warnTypeWithInformer.INID = condition.WarnInformerId;
List<WarnTypeWithInformer> wtwList = new WarnManageDAL().GetWarnTypeWithInformerList(warnTypeWithInformer);
#endregion
//获取信息列表
DataPage dataPage = new WarnManageDAL().GetWarnTypeList(condition, page);
#region 转换工序类别显示类型
List<WarnType> list = dataPage.Result as List<WarnType>;
//处理字典信息
DictManageBLL dictWARNTYPE = new DictManageBLL(DictKind.WARNTYPE);
foreach (var info in list)
{
//替换报警类别显示值
info.WARNTYPE = dictWARNTYPE.GetDictValue(info.WARNTYPE);
//如果报警通知人为空,默认为是添加编辑人,添加时所有通知人与报警类别关联标记不做操作
if (!string.IsNullOrEmpty(warnTypeWithInformer.INID))
{
foreach (var item in wtwList)
{
if (info.PID == item.WTID && condition.WarnInformerId == item.INID)
{
info.IsTypeWithInformer = true;
}
}
}
}
#endregion
result.IsSuccess = true;
result.Result = dataPage;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeGetListError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnTypeGetListError;
}
return result;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <returns>全部集合</returns>
public List<WarnType> GetAllWarnTypeList(WarnType condition)
{
try
{
//获取信息列表
List<WarnType> list = new WarnManageDAL().GetWarnTypeList(condition);
return list;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeGetListError
});
throw ex;
}
}
#endregion
#region 报警类别插入信息
/// <summary>
/// 报警类别插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public DataResult WarnTypeInsert(WarnType model)
{
DataResult result = new DataResult();
WarnManageDAL ppDAL = new WarnManageDAL();
try
{
result.IsSuccess = true;
//基本信息
model.PID = Guid.NewGuid().ToString();
model.CREATEUSER = this.LoginUser.UserID;
model.CREATEDATE = DateTime.Now;
model.UPDATEUSER = model.CREATEUSER;
model.UPDATEDATE = model.CREATEDATE;
//判断报警代码是否存在
if (ExistsWarnType(model) == true)
{
result.IsSuccess = false;
result.Msg = "报警代码重复";
return result;
}
int temp = ppDAL.WarnTypeInsert(model);
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnTypeInsertFail;
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeInsertError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnTypeInsertError;
}
return result;
}
#endregion
#region 报警类别更新信息
/// <summary>
/// 报警类别更新信息
/// </summary>
/// <param name=""></param>
/// <returns>更新行数</returns>
public DataResult WarnTypeUpdate(WarnType model)
{
DataResult result = new DataResult();
result.IsSuccess = true;
try
{
WarnType info = new WarnManageDAL().WarnTypeGet(model);
//基本信息
info.WARNTYPE = model.WARNTYPE;
info.WARNCODE = model.WARNCODE;
info.WARNDESCRIBE = model.WARNDESCRIBE;
info.UPDATEUSER = this.LoginUser.UserID;
//判断报警代码是否存在
if (ExistsWarnType(info) == true)
{
result.IsSuccess = false;
result.Msg = "报警代码重复";
return result;
}
int temp = new WarnManageDAL().WarnTypeUpdate(info);
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnTypeUpdateFail;
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeUpdateError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnTypeUpdateError;
}
return result;
}
#endregion
#region 报警类别删除
/// <summary>
/// 报警类别删除信息
/// </summary>
/// <param name=""></param>
/// <returns>删除个数</returns>
public DataResult WarnTypeDelete(string strs)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int count = 0;
string[] list = strs.Split(":".ToCharArray());
WarnManageDAL dal = new WarnManageDAL();
try
{
foreach (string str in list)
{
#region 校验报警类别是否有对应的报警信息存在,如果存在不允许删除该报警类别
List<WarnInfo> warnInfoList = new List<WarnInfo>();
//获取要删除的报警类别的报警类别信息
WarnType typeInfo = dal.WarnTypeGet(new WarnType { PID = str });
WarnInfo warnInfo = new WarnInfo();
warnInfo.WARNCODE = typeInfo.WARNCODE;
//根据报警代码获取报警信息
warnInfoList = dal.GetWarnInfoList(warnInfo);
if (warnInfoList.Count > 0)
{
result.IsSuccess = false;
result.Msg = "报警代码:"+typeInfo.WARNCODE+",有对应的报警信息存在,不能被删除!";
return result;
}
#endregion
#region 如果报警类别不存在对应的报警信息,删除对应报警通知人在报警类别与报警通知人关联表中的关联信息
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
warnTypeWithInformer.WTID = str;
dal.WarnTypeWithInformerDelete(warnTypeWithInformer);
#endregion
count += this.DeleteWarnTypeInfo(new WarnType { PID = str });
}
if (count != list.Length)
{
result.IsSuccess = false;
result.Msg = Resource.WarnTypePartDelete;
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnTypeDeleteError
});
result.IsSuccess = false;
result.Msg = Resource.WarnTypeDeleteError;
result.Ex = ex;
}
return result;
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="">信息</param>
/// <returns>删除个数</returns>
public int DeleteWarnTypeInfo(WarnType model)
{
int count = 0;
try
{
count = new WarnManageDAL().WarnTypeDelete(model);
return count;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 报警类别重复校验
/// <summary>
/// 报警类别重复校验
/// </summary>
/// <param name="info"></param>
/// <returns>true:已存在;fasel:不存在。</returns>
public bool ExistsWarnType(WarnType model)
{
try
{
return new WarnManageDAL().ExistsWarnType(model);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#endregion
#region 报警通知人信息维护
#region 报警通知人信息获取信息
/// <summary>
/// 报警通知人信息获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>信息</returns>
public DataResult<WarnInformer> WarnInformerGet(WarnInformer model)
{
DataResult<WarnInformer> result = new DataResult<WarnInformer>();
try
{
result.Result = new WarnManageDAL().WarnInformerGet(model);
result.IsSuccess = true;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerGetError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnInformerGetError;
}
return result;
}
#endregion
#region 报警通知人信息获取列表
/// <summary>
/// 报警通知人信息获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataResult<DataPage> GetWarnInformerList(WarnInformer condition, DataPage page)
{
DataResult<DataPage> result = new DataResult<DataPage>();
try
{
//获取信息列表
DataPage dataPage = new WarnManageDAL().GetWarnInformerList(condition, page);
#region 转换工序类别显示类型
List<WarnInformer> list = dataPage.Result as List<WarnInformer>;
//处理字典信息
DictManageBLL dictINFOTYPE = new DictManageBLL(DictKind.INFOTYPE);
foreach (var info in list)
{
//替换报警类别显示值
info.INFOTYPE = dictINFOTYPE.GetDictValue(info.INFOTYPE);
}
#endregion
result.IsSuccess = true;
result.Result = dataPage;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerGetListError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnInformerGetListError;
}
return result;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <returns>全部集合</returns>
public List<WarnInformer> GetAllWarnInformerList(WarnInformer condition)
{
try
{
//获取信息列表
List<WarnInformer> list = new WarnManageDAL().GetWarnInformerList(condition);
return list;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "生产记录获取列表异常!"
});
throw ex;
}
}
#endregion
#region 报警通知人信息插入信息
/// <summary>
/// 报警通知人信息插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public DataResult WarnInformerInsert(WarnInformer model)
{
DataResult result = new DataResult();
WarnManageDAL ppDAL = new WarnManageDAL();
int temp = 0;
result.IsSuccess = true;
//基本信息
model.PID = Guid.NewGuid().ToString();
model.CREATEUSER = this.LoginUser.UserID;
model.CREATEDATE = DateTime.Now;
model.UPDATEUSER = model.CREATEUSER;
model.UPDATEDATE = model.CREATEDATE;
//判断报警通知人邮箱和电话是否重复
if (ExistsWarnInformer(model) == true)
{
result.IsSuccess = false;
result.Msg = "报警通知人邮箱或电话重复";
return result;
}
#region 中间表信息
List<WarnTypeWithInformer> informerList = new List<WarnTypeWithInformer>();
string[] strs = model.WarnTypeIds.Substring(0, model.WarnTypeIds.Length - 1).Split(":".ToCharArray());
foreach (var item in strs)
{
WarnType type = ppDAL.WarnTypeGet(new WarnType() { PID = item });
model.WARNCODE += (type.WARNCODE + ",");
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
warnTypeWithInformer.PID = Guid.NewGuid().ToString();
warnTypeWithInformer.INID = model.PID;
warnTypeWithInformer.WTID = item;
warnTypeWithInformer.CREATEUSER = this.LoginUser.UserID;
warnTypeWithInformer.CREATEDATE = DateTime.Now;
warnTypeWithInformer.UPDATEUSER = warnTypeWithInformer.CREATEUSER;
warnTypeWithInformer.UPDATEDATE = warnTypeWithInformer.CREATEDATE;
informerList.Add(warnTypeWithInformer);
}
model.WARNCODE = model.WARNCODE.Substring(0, model.WARNCODE.Length - 1);
#endregion
using (IDataSession session = AppDataFactory.CreateMainSession())
{
try
{
session.OpenTs();
ppDAL.BaseSession = session;
#region 添加报警通知人
temp = ppDAL.WarnInformerInsert(model);
#endregion
#region 报警类别与报警通知人关联操作
//报警类别ID串
foreach (var item in informerList)
{
ppDAL.WarnTypeWithInformerInsert(item);
}
#endregion
session.CommitTs();
}
catch (Exception ex)
{
session.RollbackTs();
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerInsertError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnInformerInsertError;
}
}
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnInformerInsertFail;
return result;
}
return result;
}
#endregion
#region 报警通知人信息更新信息
/// <summary>
/// 报警通知人信息更新信息
/// </summary>
/// <param name=""></param>
/// <returns>更新行数</returns>
public DataResult WarnInformerUpdate(WarnInformer model)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int temp = 0;
using (IDataSession session = AppDataFactory.CreateMainSession())
{
try
{
session.OpenTs();
WarnManageDAL ppDAL = new WarnManageDAL();
WarnInformer info = ppDAL.WarnInformerGet(model);
ppDAL.BaseSession = session;
#region 更新报警通知人
//基本信息
info.INFORMNAME = model.INFORMNAME;
info.INFORMCODE = model.INFORMCODE;
info.MAIL = model.MAIL;
info.MOBILEPHONENUMBER = model.MOBILEPHONENUMBER;
info.INFOTYPE = model.INFOTYPE;
info.MEMO = model.MEMO;
info.UPDATEUSER = this.LoginUser.UserID;
//判断报警通知人邮箱和电话是否重复
if (ExistsWarnInformer(model) == true)
{
result.IsSuccess = false;
result.Msg = "报警通知人邮箱或电话重复";
return result;
}
#endregion
#region 报警类别与报警通知人关联操作
#region 先删除当前报警通知人员关联的报警类别
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
warnTypeWithInformer.INID = model.PID;
ppDAL.WarnTypeWithInformerDelete(warnTypeWithInformer);
#endregion
#region 添加新的报警类别关联关系
//报警类别ID串
string[] strs = model.WarnTypeIds.Substring(0, model.WarnTypeIds.Length - 1).Split(":".ToCharArray());
info.WARNCODE = "";
foreach (var item in strs)
{
WarnTypeWithInformer typeWithInformer = new WarnTypeWithInformer();
typeWithInformer.PID = Guid.NewGuid().ToString();
typeWithInformer.INID = model.PID;
typeWithInformer.WTID = item;
typeWithInformer.CREATEUSER = this.LoginUser.UserID;
typeWithInformer.CREATEDATE = DateTime.Now;
typeWithInformer.UPDATEUSER = typeWithInformer.CREATEUSER;
typeWithInformer.UPDATEDATE = typeWithInformer.CREATEDATE;
ppDAL.WarnTypeWithInformerInsert(typeWithInformer);
WarnType type = session.Get<WarnType>(new WarnType() { PID = item });
info.WARNCODE += (type.WARNCODE + ",");
}
#endregion
#endregion
info.WARNCODE = info.WARNCODE.Substring(0, info.WARNCODE.Length - 1);
temp = ppDAL.WarnInformerUpdate(info);
session.CommitTs();
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerUpdateError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnInformerUpdateError;
}
}
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnInformerUpdateFail;
return result;
}
return result;
}
#endregion
#region 报警通知人信息删除
/// <summary>
/// 报警通知人信息删除信息
/// </summary>
/// <param name=""></param>
/// <returns>删除个数</returns>
public DataResult WarnInformerDelete(string strs)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int count = 0;
string[] list = strs.Split(":".ToCharArray());
WarnManageDAL dal = new WarnManageDAL();
try
{
foreach (string str in list)
{
#region 删除对应报警通知人在报警类别与报警通知人关联表中的关联信息
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
warnTypeWithInformer.INID = str;
dal.WarnTypeWithInformerDelete(warnTypeWithInformer);
#endregion
count += this.DeleteWarnInformerInfo(new WarnInformer { PID = str });
}
if (count != list.Length)
{
result.IsSuccess = false;
result.Msg = Resource.WarnInformerPartDelete;
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerDeleteError
});
result.IsSuccess = false;
result.Msg = Resource.WarnInformerDeleteError;
result.Ex = ex;
}
return result;
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="">信息</param>
/// <returns>删除个数</returns>
public int DeleteWarnInformerInfo(WarnInformer model)
{
int count = 0;
try
{
count = new WarnManageDAL().WarnInformerDelete(model);
return count;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 报警通知人邮箱和电话重复校验
/// <summary>
/// 报警通知人邮箱和电话重复校验
/// </summary>
/// <param name="info"></param>
/// <returns>true:已存在;fasel:不存在。</returns>
public bool ExistsWarnInformer(WarnInformer model)
{
try
{
return new WarnManageDAL().ExistsWarnInformer(model);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#endregion
#region 关闭报警
/// <summary>
/// 关闭报警
/// </summary>
/// <param name=""></param>
/// <returns>完成计划</returns>
public DataResult WarnIsDone(string str)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int count = 0;
try
{
WarnInfo info = new WarnManageDAL().WarnInfoGet(new WarnInfo { PID = str });
//是否关闭
info.ISDONE = QMAPP.FJC.Entity.EnumGeter.ISDONE.yes.GetHashCode().ToString();
info.UPDATEUSER = this.LoginUser.UserID;
count += new WarnManageDAL().WarnInfoUpdate(info);
if (count == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnDoneFail;
return result;
}
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnDoneError
});
result.IsSuccess = false;
result.Msg = Resource.WarnDoneError;
result.Ex = ex;
}
return result;
}
#endregion
#region 发送报警
#region 发送报警页面通知人信息获取列表
/// <summary>
/// 报警通知人信息获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataResult<DataPage> GetWarnInformerListForSend(WarnInformer condition, DataPage page)
{
DataResult<DataPage> result = new DataResult<DataPage>();
WarnManageDAL wmDal = new WarnManageDAL();
List<WarnTypeWithInformer> warnTypeWithInformerList = new List<WarnTypeWithInformer>();
WarnTypeWithInformer warnTypeWithInformer = new WarnTypeWithInformer();
try
{
#region 通过报警信息获取报警代码
WarnInfo warnInfo = new WarnInfo();
warnInfo.PID = condition.WarnInfoIds;
warnInfo = wmDal.WarnInfoGet(warnInfo);
#endregion
#region 通过报警代码获取报警类别ID
WarnType warnType = new WarnType();
warnType.WARNCODE = warnInfo.WARNCODE;
warnType = wmDal.WarnTypeGetWith(warnType);
#endregion
#region 如果报警类别不为空,通过报警类别ID获取报警类别和报警通知人表中的对应报警人信息
if (warnType != null)
{
warnTypeWithInformer.WTID = warnType.PID;
warnTypeWithInformerList = wmDal.GetWarnTypeWithInformerList(warnTypeWithInformer);
}
#endregion
//获取所有报警通知人信息
DataPage dataPage = wmDal.GetWarnInformerList(condition, page);
#region 转换工序类别显示类型
List<WarnInformer> list = dataPage.Result as List<WarnInformer>;
//处理字典信息
DictManageBLL dictINFOTYPE = new DictManageBLL(DictKind.INFOTYPE);
foreach (var info in list)
{
//替换报警类别显示值
info.INFOTYPE = dictINFOTYPE.GetDictValue(info.INFOTYPE);
//如果报警类别为空,所有通知人与报警类别关联标记不做操作
if (warnType != null)
{
foreach (var item in warnTypeWithInformerList)
{
if (info.PID == item.INID)
{
info.IsTypeWithInformer = true;
}
}
}
}
#endregion
result.IsSuccess = true;
result.Result = dataPage;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnInformerGetListError
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = Resource.WarnInformerGetListError;
}
return result;
}
#endregion
#region 报警发送
/// <summary>
/// 报警发送
/// </summary>
/// <param name=""></param>
/// <returns>完成计划</returns>
public DataResult WarnIsSend(WarnDetail condition)
{
DataResult result = new DataResult();
result.IsSuccess = true;
int count = 0;
WarnManageDAL dal = new WarnManageDAL();
List<WarnInformer> warnInformerList = new List<WarnInformer>();
try
{
#region 对报警信息操作
WarnInfo info = new WarnManageDAL().WarnInfoGet(new WarnInfo { PID = condition.WPID });
if (info != null)
{
//如果报警已经关闭,不能发送
if (info.ISDONE == QMAPP.FJC.Entity.EnumGeter.ISDONE.yes.GetHashCode().ToString())
{
result.IsSuccess = false;
result.Msg = Resource.IsDoneCanNotSend;
return result;
}
//是否发送
info.ISDEAL = QMAPP.FJC.Entity.EnumGeter.ISDEAL.yes.GetHashCode().ToString();
info.UPDATEUSER = this.LoginUser.UserID;
count += new WarnManageDAL().WarnInfoUpdate(info);
}
if (count == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnSendFail;
return result;
}
#endregion
#region 报警详情操作
string[] warnInformerAerry = condition.WarnInformerIds.Substring(0, condition.WarnInformerIds.Length - 1).Split(":".ToCharArray());
foreach (var item in warnInformerAerry)
{
WarnInformer warnInformer = new WarnInformer();
warnInformer.PID = item;
warnInformer = dal.WarnInformerGet(warnInformer);
//用于发送报警邮件使用
warnInformerList.Add(warnInformer);
#region 报警详情数据整理
condition.PID = Guid.NewGuid().ToString();
condition.INID = warnInformer.PID;
condition.INFORMNAME = warnInformer.INFORMNAME;
condition.INFORMNAME = warnInformer.INFORMNAME;
condition.INFORMCODE = warnInformer.INFORMCODE;
//condition.INFOTYPE为手动创建时选中的发送方式,如果为空,发送方式以所选通知人的发送方式为准
if (string.IsNullOrEmpty(condition.INFOTYPE))
{
condition.INFOTYPE = warnInformer.INFOTYPE;
}
#region 根据发送方式为邮箱或电话赋值
if (condition.INFOTYPE == QMAPP.FJC.Entity.EnumGeter.INFOTYPE.mobilePhoneNumber.GetHashCode().ToString())
{
condition.MOBILEPHONENUMBER = warnInformer.MOBILEPHONENUMBER;
}
if (condition.INFOTYPE == QMAPP.FJC.Entity.EnumGeter.INFOTYPE.mail.GetHashCode().ToString())
{
condition.MAIL = warnInformer.MAIL;
}
if (condition.INFOTYPE == QMAPP.FJC.Entity.EnumGeter.INFOTYPE.mobilePhoneAndMail.GetHashCode().ToString())
{
condition.MAIL = warnInformer.MAIL;
condition.MOBILEPHONENUMBER = warnInformer.MOBILEPHONENUMBER;
}
#endregion
condition.CREATEUSER = this.LoginUser.UserID;
condition.CREATEDATE = DateTime.Now;
condition.UPDATEUSER = condition.CREATEUSER;
condition.UPDATEDATE = condition.CREATEDATE;
#endregion
int temp = dal.WarnDetailInsert(condition);
if (temp == 0)
{
result.IsSuccess = false;
result.Msg = Resource.WarnDetailInsertFail;
return result;
}
}
#endregion
#region 发送邮件
string sendState = SentMailToUser(warnInformerList, info);
if (sendState != "发送成功")
{
result.IsSuccess = false;
result.Msg = sendState;
}
#endregion
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = Resource.WarnSendError
});
result.IsSuccess = false;
result.Msg = Resource.WarnSendError;
result.Ex = ex;
}
return result;
}
#endregion
#region 发送邮件给处理用户
/// <summary>
/// 发送邮件给处理用户
/// </summary>
/// <returns></returns>
public string SentMailToUser(List<WarnInformer> warnInformerList, WarnInfo warnInfo)
{
try
{
OverTimeRemindDAL dal = new OverTimeRemindDAL();
NoticeManageBll bmBll = new NoticeManageBll();
SIParamSetBLL paramSetBll = new SIParamSetBLL();
//获取支持交互参数对象
SIParamSet paramSet = new SIParamSet();
if (paramSet == null)
{
return "未设置支持交互参数.";
}
paramSet.SmtpServer = System.Configuration.ConfigurationManager.AppSettings.Get("SmtpServer").ToString();
paramSet.SmtpUser = System.Configuration.ConfigurationManager.AppSettings.Get("SmtpUser").ToString();
paramSet.SmtpPassword = System.Configuration.ConfigurationManager.AppSettings.Get("SmtpPassword").ToString();
paramSet.DoMain = System.Configuration.ConfigurationManager.AppSettings.Get("DoMain").ToString();
paramSet.FromUserMail = System.Configuration.ConfigurationManager.AppSettings.Get("FromUserMail").ToString();
if (string.IsNullOrEmpty(paramSet.SmtpServer) || string.IsNullOrEmpty(paramSet.SmtpUser) || string.IsNullOrEmpty(paramSet.SmtpPassword) || string.IsNullOrEmpty(paramSet.DoMain) || string.IsNullOrEmpty(paramSet.FromUserMail))
{
return "未设置邮件服务器信息.";
}
foreach (var item in warnInformerList)
{
string sendState = SendMail(paramSet, item, warnInfo, "");
if (sendState != "发送成功")
{
return sendState;
}
}
}
catch (Exception ex)
{
return "邮件发送失败请联系管理员.";
}
return "发送成功";
}
#endregion
#region 发送邮件方法
/// <summary>
/// 发送邮件方法
/// </summary>
/// <param name="paramSet">服务器参数</param>
/// <param name="otr">对象参数</param>
private string SendMail(SIParamSet paramSet, WarnInformer warnInformer, WarnInfo warnInfo, string subject)
{
if (warnInformer == null)
{
return "没有报警通知员";
}
SmtpServerInfo ServerInfo = new SmtpServerInfo();
ServerInfo.SmtpServer = paramSet.SmtpServer;
ServerInfo.SenderUser = paramSet.SmtpUser;
ServerInfo.SenderPassword = paramSet.SmtpPassword;
ServerInfo.DoMain = paramSet.DoMain;
ServerInfo.SenderUserEmail = paramSet.FromUserMail;
string[] mailArr = null;
List<string> mailList = new List<string>();
//查找业务管理员
mailList.Add(warnInformer.MAIL);
//将业务管理员的MAIL放到数据中
if (mailList == null || mailList.Count < 0)
{
return "没有找到指定邮箱";
}
MailInfo mailInfo = new MailInfo();
#region 邮件内容
DictManageBLL dictCREATETYPE = new DictManageBLL(DictKind.CREATETYPE);
//替换生成方式显示值
warnInfo.CREATETYPE = dictCREATETYPE.GetDictValue(warnInfo.CREATETYPE);
mailInfo.Content = "报警类别:" + warnInfo.WARNTYPE + "<br/> " + "报警代码:" + warnInfo.WARNCODE + "<br/>" + "报警描述:" + warnInfo.WARNDESCRIBE + "<br/>" + "生成方式:" + warnInfo.CREATETYPE;//内容
#endregion
#region 邮件标题
if (string.IsNullOrEmpty(subject))
{
subject = "您有一个报警需要处理.";
}
mailInfo.Subject = subject;//标题
#endregion
mailArr = mailList.ToArray();
//获取需要送人员的邮件数组
//MailInfo.ToMail = new String[] { "yunfeng.wang@qmht.cn" };//收件人地址
mailInfo.ToMail = mailArr;
QMFrameWork.Mail.MailHelper mailHelper = new QMFrameWork.Mail.MailHelper();
mailHelper.SendMail(mailInfo, ServerInfo);
return "发送成功";
}
#endregion
#endregion
#region 报警详细信息获取列表
/// <summary>
/// 报警详细信息获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataResult<DataPage> GetWarnDetailList(WarnDetail condition, DataPage page)
{
DataResult<DataPage> result = new DataResult<DataPage>();
try
{
//获取信息列表
DataPage dataPage = new WarnManageDAL().GetWarnDetailList(condition, page);
#region 转换工序类别显示类型
List<WarnDetail> list = dataPage.Result as List<WarnDetail>;
//处理字典信息
DictManageBLL dictINFOTYPE = new DictManageBLL(DictKind.INFOTYPE);
foreach (var info in list)
{
//替换通知方式显示值
info.INFOTYPE = dictINFOTYPE.GetDictValue(info.INFOTYPE);
}
#endregion
result.IsSuccess = true;
result.Result = dataPage;
}
catch (Exception ex)
{
LogManager.LogHelper.Error(new LogInfo()
{
ErrorInfo = ex,
Tag = ex.StackTrace,
Info = "报警详细记录获取列表异常!"
});
result.IsSuccess = false;
result.Ex = ex;
result.Msg = "报警详细记录获取列表异常!";
}
return result;
}
#endregion
}
}