using Custom.Utils.Framework;
using ProductionSystem_Log;
using ProductionSystem_Model.DbModel.Para;
using ProductionSystem_Model.DbModel.Protocol;
using ProductionSystem_Model.Enum;
using ProductionSystem_Model.ViewModel.Request.Protocol;
using ProductionSystem_Model.ViewModel.Response.Protocol;
using SqlSugar;
using System;
using System.Collections.Generic;
namespace ProductionSystem_Service
{
public class ProtocolConfigService : DbContext
{
///
/// 分页查询CAN/LIN协议配置
///
///
///
///
public List GetProtocolPageList(QueryProtocolVM queryProtocolVM, out int totalCount)
{
totalCount = 0;
try
{
var list = db.Queryable()
.WhereIF(queryProtocolVM != null && !string.IsNullOrWhiteSpace(queryProtocolVM.KeyWord)
, a => a.ProtocolCode.Contains(queryProtocolVM.KeyWord) || a.ProtocolName.Contains(queryProtocolVM.KeyWord))
.Select((a) => new ProtocolVM
{
Id = a.Id,
SerialNumber = SqlFunc.RowNumber(SqlFunc.Desc(a.CreatedTime)),
ProtocolType = a.ProtocolType,
ProtocolCode = a.ProtocolCode,
ProtocolName = a.ProtocolName,
FrameType = a.FrameType,
MsgFormat = a.MsgFormat,
Port = a.Port,
Bps = a.Bps,
ChkBit = a.ChkBit,
DataBit = a.DataBit,
StopBit = a.StopBit,
StationNo = a.StationNo,
SortIndex = a.SortIndex,
IsActive = a.IsActive,
StrIsActive = a.IsActive ? "是" : "否",
Remark = a.Remark,
CreatedTime = a.CreatedTime,
CreatedBy = a.CreatedBy
}).ToPageList(queryProtocolVM.PageIndex, queryProtocolVM.PageSize, ref totalCount);
if (list.Count > 0)
{
for (int i = 0; i < list.Count; i++)
{
Enum.TryParse(list[i].FrameType, out FrameTypeEnum enumFrameType);
list[i].FrameTypeName = EnumHelper.GetEnumDescription(enumFrameType);
Enum.TryParse(list[i].MsgFormat, out MsgFormatEnum msgFormatEnum);
list[i].MsgFormatName = EnumHelper.GetEnumDescription(msgFormatEnum);
}
}
return list;
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下GetProtocolPageList时异常");
return null;
}
}
///
/// 查询所有CAN/LIN协议配置
///
///
public ISugarQueryable QueryProtocolConfigs()
{
try
{
return db.Queryable();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryProtocolConfigs时异常");
return null;
}
}
///
/// 查询有效CAN/LIN协议配置
///
///
public ISugarQueryable QueryActiveProtocolConfigs()
{
try
{
return db.Queryable().Where(m => m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryActiveProtocolConfigs时异常");
return null;
}
}
///
/// 根据Id查询CAN/LIN协议配置
///
///
///
public T_Protocol_Config QueryProtocolConfigById(string id)
{
try
{
return db.Queryable().First(m => m.Id == id);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryProtocolConfigById时异常");
return null;
}
}
///
/// 根据编码查询有效CAN/LIN协议配置
///
///
///
public T_Protocol_Config QueryActiveProtocolConfigByCode(string code)
{
try
{
return db.Queryable().First(m => m.ProtocolCode == code && m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryActiveProtocolConfigByCode时异常");
return null;
}
}
///
/// 查询最大排序索引
///
///
public int GetMaxSortIndex()
{
try
{
return db.Queryable().Max(m => m.SortIndex);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下GetMaxSortIndex时异常");
return 0;
}
}
///
/// 新增CAN/LIN协议配置
///
///
///
public int AddProtocolConfig(T_Protocol_Config t_Protocol_Config)
{
try
{
return db.Insertable(t_Protocol_Config).ExecuteCommand();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下AddProtocolConfig时异常");
return -1;
}
}
///
/// 修改CAN/LIN协议配置
///
///
/// 旧的协议通讯编码
///
public int UpdateProtocolConfig(T_Protocol_Config t_Protocol_Config, string oldProtocolConfigCode)
{
try
{
var result = db.UseTran(() =>
{
var details = db.Queryable().Where(m => m.ProtocolConfigCode == oldProtocolConfigCode).ToList();
if (details != null && details.Count > 0)
{
details.ForEach(m => m.ProtocolConfigCode = t_Protocol_Config.ProtocolCode);
db.Updateable(details).ExecuteCommand();
}
var updateRow = db.Updateable(t_Protocol_Config).ExecuteCommand();
if (updateRow > 0)
{
return true;
}
else
{
return false;
}
});
if (!result.Data) //返回值为false
{
return -1;
}
return 1;
}
catch (Exception ex)
{
var errorMsg = $"执行ProtocolConfigService下UpdateProtocolConfig时异常:{ex.Message}";
LogHelper.Error(ex, errorMsg);
return -1;
}
}
///
/// 根据Id物理删除CAN/LIN协议配置
///
///
///
///
public (bool isok, string msg) DoDelProtocolConfigById(string id, string protocolConfigCode)
{
try
{
var result = db.UseTran(() =>
{
var delConfigRows = db.Deleteable().Where(m => m.Id == id).ExecuteCommand();
var delDetailConfigRows = db.Deleteable().Where(m => m.ProtocolConfigCode == protocolConfigCode).ExecuteCommand();
if (delConfigRows > 0 && delDetailConfigRows >= 0)
{
return true;
}
else
{
return false;
}
});
if (!result.Data) //返回值为false
{
return (false, "操作失败!");
}
return (true, "操作成功!");
}
catch (Exception ex)
{
var errorMsg = $"执行ProtocolConfigService下DoDelProtocolConfigById时异常:{ex.Message}";
LogHelper.Error(ex, errorMsg);
return (false, errorMsg);
}
}
}
}