using MES.Service.DB; using MES.Service.Modes; using SqlSugar; namespace MES.Service.service; public class MessageCenterManager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 public (List item, int TotalCount) GetPushFailedPage( MessageCenter query) { var totalCount = IsShow(query); //计算分页参数 var startRow = (query.PageIndex - 1) * query.Limit + 1; var endRow = query.PageIndex * query.Limit; var sql = string.Format( "SELECT * FROM (SELECT \"ID\",\"TABLE_NAME\",\"URL\",\"METHOD\",\"DATA\",\"RESULT\",\"RESULT_DATA\",\"STATUS\",\"CREATE_BY\",\"CREATE_DATE\",\"TITLE\",\"PAGE_NAME\",\"DEAL_WITH\",\"PID\",\"SEQ\",\"ROUTE\",\"CONTENT_TYPE\",\"IS_MESSAGE\",\"UPDATE_BY\",\"UPDATE_DATE\", ROW_NUMBER() OVER (ORDER BY DEAL_WITH) AS RowIndex\n FROM (SELECT \"ID\",\"TABLE_NAME\",\"URL\",\"METHOD\",\"DATA\",\"RESULT\",\"RESULT_DATA\",\"STATUS\",\"CREATE_BY\",\"CREATE_DATE\",\"TITLE\",\"PAGE_NAME\",\"DEAL_WITH\",\"PID\",\"SEQ\",\"ROUTE\",\"CONTENT_TYPE\",\"IS_MESSAGE\",\"UPDATE_BY\",\"UPDATE_DATE\" FROM MESSAGE_CENTER WHERE RESULT = 0 AND SEQ = 1 AND TITLE IS NOT NULL ORDER BY CREATE_DATE DESC)) T WHERE RowIndex BETWEEN {0} AND {1} ", startRow, endRow); var messageCenters = Db.Ado.SqlQuery(sql); return (messageCenters, totalCount); } //查看是否有未处理的消息 public int IsShow(MessageCenter query) { return Context.Queryable() .Where(it => it.Result == 0 && it.Status == 1 && it.Seq == 1 && it.Title != null) .WhereIF(query.isShow == 1, it => it.DealWith == 0) .Count(); } //将消息设置为已读的 public int UpdateRead(MessageCenter query) { return Db.Updateable() .SetColumns(s => s.DealWith == 1) .SetColumns(s => s.UpdateBy == query.UpdateBy) .SetColumns(s => s.UpdateDate == DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) .Where(s => s.Id == query.Id) .ExecuteCommand(); } public int save(MessageCenter entity) { entity.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); entity.Method = "POST"; return Db.Insertable(entity).ExecuteReturnIdentity(); } public bool SetError(MessageCenter entity) { entity.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); entity.Method = "POST"; entity.Result = 0; entity.DealWith = 0; entity.Status = 1; return base.Insert(entity); } //获取所有没有成功的请求 public List ErrorMsg() { return Context.Queryable() .GroupBy(a => new { a.TableName, a.Pid, a.Title, a.PageName }) .Where(a => a.DealWith == 0 && a.Status == 0 && a.Result == 0 && a.Title == null) .Select(a => new MessageCenter { TableName = a.TableName, Pid = a.Pid, Title = a.Title, PageName = a.PageName, Count = SqlFunc.AggregateCount(a.Id) }).ToList(); } //根据几种情况更新 保持页面id是固定的 //前台重新发送 public int ResetUpdate(MessageCenter entity) { return UseTransaction(db => { return db.Updateable() .SetColumns(a => a.Data == entity.Data) .SetColumns(a => a.Result == entity.Result) .SetColumns(a => a.ResultData == entity.ResultData) .SetColumns(a => a.Status == entity.Status) .SetColumns(a => a.DealWith == entity.DealWith) .SetColumnsIF(!string.IsNullOrEmpty(entity.UpdateBy), a => a.UpdateBy == entity.UpdateBy) .SetColumnsIF(!string.IsNullOrEmpty(entity.UpdateDate), a => a.UpdateDate == entity.UpdateDate) .Where(a => a.Id == entity.Id) .ExecuteCommand(); }); } }