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/ProtocolDetailConfigService.cs

269 lines
10 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 ProductionSystem_Log;
using ProductionSystem_Model.DbModel.Para;
using ProductionSystem_Model.DbModel.Protocol;
using ProductionSystem_Model.DbModel.System;
using ProductionSystem_Model.Enum;
using ProductionSystem_Model.ViewModel;
using ProductionSystem_Model.ViewModel.Response.Protocol;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
namespace ProductionSystem_Service
{
public class ProtocolDetailConfigService : DbContext
{
/// <summary>
/// 查询所有CAN/LIN协议配置明细表
/// </summary>
/// <returns></returns>
public ISugarQueryable<T_Protocol_Detail_Config> QueryProtocolDetailConfigs()
{
try
{
return db.Queryable<T_Protocol_Detail_Config>();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigs时异常");
return null;
}
}
/// <summary>
/// 查询有效CAN/LIN协议配置明细表
/// </summary>
/// <returns></returns>
public ISugarQueryable<T_Protocol_Detail_Config> QueryActiveProtocolDetailConfigs()
{
try
{
return db.Queryable<T_Protocol_Detail_Config>().Where(m => m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigs时异常");
return null;
}
}
/// <summary>
/// 根据Id查询CAN/LIN协议配置明细表
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T_Protocol_Detail_Config QueryProtocolDetailConfigById(string id)
{
try
{
return db.Queryable<T_Protocol_Detail_Config>().First(m => m.Id == id);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigById时异常");
return null;
}
}
/// <summary>
/// 根据通讯协议编码查询有效CAN/LIN协议配置明细表
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public List<T_Protocol_Detail_Config> QueryActiveProtocolDetailConfigByProtocolConfigCode(string protocolConfigCode)
{
try
{
return db.Queryable<T_Protocol_Detail_Config>().Where(m => m.ProtocolConfigCode == protocolConfigCode).OrderBy(m => m.SortIndex).ToList();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigByProtocolConfigCode时异常");
return null;
}
}
/// <summary>
/// 根据通讯协议编码查询通讯配置明细信息及配置的值用于报文分析
/// </summary>
/// <param name="protocolConfigCode">通讯协议编码</param>
/// <param name="paraCategoryCode">工序编码</param>
/// <returns></returns>
public List<ProtocolDetailInfo> QueryActiveProtocolInfoByProtocolConfigCode(string protocolConfigCode, string paraCategoryCode, string productType)
{
try
{
return db.Queryable<T_Protocol_Detail_Config>()
.LeftJoin<T_Protocol_Detail_Para>((a, b) => a.MsgCode == b.MsgCode && b.ParaCategoryCode == paraCategoryCode && a.IsActive && b.IsActive)
.LeftJoin<T_ParaConfig>((a, b, c) => b.ParaCategoryCode == c.ParaCategory && b.ParaCode == c.ParaCode && c.ProductType == productType && c.IsActive)
.Where((a, b, c) => a.ProtocolConfigCode == protocolConfigCode)
.Select((a, b, c) => new ProtocolDetailInfo
{
ProductType = c.ProductType,
ParaCategoryCode = b.ParaCategoryCode,
ProtocolConfigCode = a.ProtocolConfigCode,
MsgType = a.MsgType,
MsgId = a.MsgId,
MsgCode = a.MsgCode,
MsgName = a.MsgName,
ReadRate = a.ReadRate,
StartBit = a.StartBit,
MsgLen = a.MsgLen,
ResolvePrecision = a.ResolvePrecision,
Offset = a.Offset,
ParaCode = b.ParaCode,
target_val = c.TargetVal,
Formula = a.Formula,
WriteVal = a.WriteVal,
SortIndex = a.SortIndex,
MsgSortIndex = a.MsgSortIndex,
ReciveMsgFormat = a.ReciveMsgFormat,
Msg=a.Msg,
IsActive=a.IsActive
}).OrderBy(a => a.SortIndex).ToList();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolInfoByProtocolConfigCode时异常");
return null;
}
}
/// <summary>
/// 根据报文编码查询有效CAN/LIN协议配置明细表
/// </summary>
/// <param name="msgCode">明细报文编码</param>
/// <returns></returns>
public T_Protocol_Detail_Config QueryActiveProtocolDetailConfigByCode(string msgCode)
{
try
{
return db.Queryable<T_Protocol_Detail_Config>().First(m => m.MsgCode == msgCode && m.IsActive);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigByCode时异常");
return null;
}
}
/// <summary>
/// 查询表中最大的排序索引
/// </summary>
/// <returns></returns>
public int QueryProtocolDetailConfigMaxSortIndex()
{
try
{
return db.Queryable<T_Protocol_Detail_Config>().Max(m => m.SortIndex);
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigMaxSortIndex时异常");
return 0;
}
}
/// <summary>
/// 新增CAN/LIN协议配置明细表
/// </summary>
/// <param name="t_Protocol_Detail_Config"></param>
/// <returns></returns>
public int AddProtocolDetailConfig(T_Protocol_Detail_Config t_Protocol_Detail_Config)
{
try
{
return db.Insertable(t_Protocol_Detail_Config).ExecuteCommand();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下AddProtocolDetailConfig时异常");
return -1;
}
}
/// <summary>
/// 新增CAN/LIN协议配置明细表
/// </summary>
/// <param name="t_Protocol_Detail_Config"></param>
/// <returns></returns>
public int AddProtocolDetailConfigs(List<T_Protocol_Detail_Config> t_Protocol_Detail_Configs)
{
try
{
return db.Insertable(t_Protocol_Detail_Configs).ExecuteCommand();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下AddProtocolDetailConfigs时异常");
return -1;
}
}
/// <summary>
/// 修改CAN/LIN协议配置明细表
/// </summary>
/// <param name="t_Protocol_Detail_Config"></param>
/// <returns></returns>
public int UpdateProtocolDetailConfig(T_Protocol_Detail_Config t_Protocol_Detail_Config)
{
try
{
return db.Updateable(t_Protocol_Detail_Config).ExecuteCommand();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下UpdateProtocolDetailConfig时异常");
return -1;
}
}
/// <summary>
/// 根据Id更新通讯协议明细表的状态
/// </summary>
/// <param name="ids"></param>
/// <param name="isActive"></param>
/// <returns></returns>
public (bool isOk, string msg) UpdateProtocolDetailConfigStatus(string id, bool? isActive = true)
{
try
{
var row = db.Updateable<T_Protocol_Detail_Config>()
.SetColumns(c => c.IsActive == isActive)
.SetColumns(c => c.UpdatedTime == DateTime.Now)
.SetColumns(c => c.UpdatedBy == CurrentUser.UserName)
.Where(m => m.Id == id)
.ExecuteCommand();
return (row > 0, row > 0 ? "操作成功!" : "操作失败!");
}
catch (Exception ex)
{
var errorMsg = $"执行ProtocolDetailConfigService下UpdateProtocolDetailConfigStatus时异常{ex.Message}";
LogHelper.Error(ex, errorMsg);
return (false, errorMsg);
}
}
/// <summary>
/// 根据报文编码物理删除CAN/LIN协议配置明细表
/// </summary>
/// <param name="msgCode"></param>
/// <param name="msgType"></param>
/// <returns></returns>
public int DoDelProtocolDetailConfigByMsgCode(string msgCode, string msgType)
{
try
{
return db.Deleteable<T_Protocol_Detail_Config>().Where(m => m.MsgCode == msgCode && m.MsgType == msgType).ExecuteCommand();
}
catch (Exception ex)
{
LogHelper.Error(ex, "执行ProtocolDetailConfigService下DoDelProtocolDetailConfigByMsgCode时异常");
return -1;
}
}
}
}