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 { /// /// 查询所有CAN/LIN协议配置明细表 /// /// public ISugarQueryable QueryProtocolDetailConfigs() { try { return db.Queryable(); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigs时异常"); return null; } } /// /// 查询有效CAN/LIN协议配置明细表 /// /// public ISugarQueryable QueryActiveProtocolDetailConfigs() { try { return db.Queryable().Where(m => m.IsActive); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigs时异常"); return null; } } /// /// 根据Id查询CAN/LIN协议配置明细表 /// /// /// public T_Protocol_Detail_Config QueryProtocolDetailConfigById(string id) { try { return db.Queryable().First(m => m.Id == id); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigById时异常"); return null; } } /// /// 根据通讯协议编码查询有效CAN/LIN协议配置明细表 /// /// /// public List QueryActiveProtocolDetailConfigByProtocolConfigCode(string protocolConfigCode) { try { return db.Queryable().Where(m => m.ProtocolConfigCode == protocolConfigCode).OrderBy(m => m.SortIndex).ToList(); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigByProtocolConfigCode时异常"); return null; } } /// /// 根据通讯协议编码查询通讯配置明细信息及配置的值用于报文分析 /// /// 通讯协议编码 /// 工序编码 /// public List QueryActiveProtocolInfoByProtocolConfigCode(string protocolConfigCode, string paraCategoryCode, string productType) { try { return db.Queryable() .LeftJoin((a, b) => a.MsgCode == b.MsgCode && b.ParaCategoryCode == paraCategoryCode && a.IsActive && b.IsActive) .LeftJoin((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; } } /// /// 根据报文编码查询有效CAN/LIN协议配置明细表 /// /// 明细报文编码 /// public T_Protocol_Detail_Config QueryActiveProtocolDetailConfigByCode(string msgCode) { try { return db.Queryable().First(m => m.MsgCode == msgCode && m.IsActive); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryActiveProtocolDetailConfigByCode时异常"); return null; } } /// /// 查询表中最大的排序索引 /// /// public int QueryProtocolDetailConfigMaxSortIndex() { try { return db.Queryable().Max(m => m.SortIndex); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下QueryProtocolDetailConfigMaxSortIndex时异常"); return 0; } } /// /// 新增CAN/LIN协议配置明细表 /// /// /// 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; } } /// /// 新增CAN/LIN协议配置明细表 /// /// /// public int AddProtocolDetailConfigs(List t_Protocol_Detail_Configs) { try { return db.Insertable(t_Protocol_Detail_Configs).ExecuteCommand(); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下AddProtocolDetailConfigs时异常"); return -1; } } /// /// 修改CAN/LIN协议配置明细表 /// /// /// 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; } } /// /// 根据Id更新通讯协议明细表的状态 /// /// /// /// public (bool isOk, string msg) UpdateProtocolDetailConfigStatus(string id, bool? isActive = true) { try { var row = db.Updateable() .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); } } /// /// 根据报文编码物理删除CAN/LIN协议配置明细表 /// /// /// /// public int DoDelProtocolDetailConfigByMsgCode(string msgCode, string msgType) { try { return db.Deleteable().Where(m => m.MsgCode == msgCode && m.MsgType == msgType).ExecuteCommand(); } catch (Exception ex) { LogHelper.Error(ex, "执行ProtocolDetailConfigService下DoDelProtocolDetailConfigByMsgCode时异常"); return -1; } } } }