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.
ProductionSystem/ProductionSystem_Service/ProtocolConfigService.cs

262 lines
9.4 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 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
{
/// <summary>
/// 分页查询CAN/LIN协议配置
/// </summary>
/// <param name="v"></param>
/// <param name="totalCount"></param>
/// <returns></returns>
public List<ProtocolVM> GetProtocolPageList(QueryProtocolVM queryProtocolVM, out int totalCount)
{
totalCount = 0;
try
{
var list = db.Queryable<T_Protocol_Config>()
.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;
}
}
/// <summary>
/// 查询所有CAN/LIN协议配置
/// </summary>
/// <returns></returns>
public ISugarQueryable<T_Protocol_Config> QueryProtocolConfigs()
{
try
{
return db.Queryable<T_Protocol_Config>();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryProtocolConfigs时异常");
return null;
}
}
/// <summary>
/// 查询有效CAN/LIN协议配置
/// </summary>
/// <returns></returns>
public ISugarQueryable<T_Protocol_Config> QueryActiveProtocolConfigs()
{
try
{
return db.Queryable<T_Protocol_Config>().Where(m => m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryActiveProtocolConfigs时异常");
return null;
}
}
/// <summary>
/// 根据Id查询CAN/LIN协议配置
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T_Protocol_Config QueryProtocolConfigById(string id)
{
try
{
return db.Queryable<T_Protocol_Config>().First(m => m.Id == id);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryProtocolConfigById时异常");
return null;
}
}
/// <summary>
/// 根据编码查询有效CAN/LIN协议配置
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public T_Protocol_Config QueryActiveProtocolConfigByCode(string code)
{
try
{
return db.Queryable<T_Protocol_Config>().First(m => m.ProtocolCode == code && m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下QueryActiveProtocolConfigByCode时异常");
return null;
}
}
/// <summary>
/// 查询最大排序索引
/// </summary>
/// <returns></returns>
public int GetMaxSortIndex()
{
try
{
return db.Queryable<T_Protocol_Config>().Max(m => m.SortIndex);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolConfigService下GetMaxSortIndex时异常");
return 0;
}
}
/// <summary>
/// 新增CAN/LIN协议配置
/// </summary>
/// <param name="t_Protocol_Config"></param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 修改CAN/LIN协议配置
/// </summary>
/// <param name="t_Protocol_Config"></param>
/// <param name="oldProtocolConfigCode">旧的协议通讯编码</param>
/// <returns></returns>
public int UpdateProtocolConfig(T_Protocol_Config t_Protocol_Config, string oldProtocolConfigCode)
{
try
{
var result = db.UseTran(() =>
{
var details = db.Queryable<T_Protocol_Detail_Config>().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;
}
}
/// <summary>
/// 根据Id物理删除CAN/LIN协议配置
/// </summary>
/// <param name="id"></param>
/// <param name="protocolConfigCode"></param>
/// <returns></returns>
public (bool isok, string msg) DoDelProtocolConfigById(string id, string protocolConfigCode)
{
try
{
var result = db.UseTran(() =>
{
var delConfigRows = db.Deleteable<T_Protocol_Config>().Where(m => m.Id == id).ExecuteCommand();
var delDetailConfigRows = db.Deleteable<T_Protocol_Detail_Config>().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);
}
}
}
}