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); } } } }