123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- using Microsoft.Extensions.Primitives;
- using Newtonsoft.Json;
- using Ropin.Inspection.Model;
- using Ropin.Inspection.Model.Entities;
- using Ropin.Inspection.Model.ViewModel.DEV;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Ropin.Inspection.Repository
- {
- public class TmtnPushMsgResultRepository : RepositoryBase<TMTN_PushMsgResult, string>, ITmtnPushMsgResultRepository
- {
- public TmtnPushMsgResultRepository(InspectionDbContext DbContext) : base(DbContext)
- {
- }
- public Task<bool> UpdateStatus(string msgCode, string Status,string userId)
- {
- MySqlConnector.MySqlParameter[] parameters = new[] {
- new MySqlConnector.MySqlParameter("msgCode", msgCode),
- new MySqlConnector.MySqlParameter("status", Status),
- new MySqlConnector.MySqlParameter("userId", userId)
- };
- string sql = $" UPDATE TMTN_PushMsgResult SET C_Status = @status WHERE (C_MessageCode =@msgCode) AND (C_PushMsgToCode=@userId); ";
- int iResult = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, sql, parameters);
- bool result = iResult > 0;
- return Task.FromResult(result);
- }
- public Task<IEnumerable<TMTN_PushMsgResultModel>> GetConditionAsync(TmtnPushMsgResultSearchModel searchModel)
- {
- MySqlConnector.MySqlParameter[] parameters = new[] {
- new MySqlConnector.MySqlParameter("PushMsgToCode", searchModel.C_PushMsgToCode),
- new MySqlConnector.MySqlParameter("MsgTypeCode", searchModel.C_MsgTypeCode),
- new MySqlConnector.MySqlParameter("status", searchModel.C_Status),
- new MySqlConnector.MySqlParameter("generationType", searchModel.I_GenerationType),
- new MySqlConnector.MySqlParameter("name", "%"+searchModel.C_Content+"%"),
- new MySqlConnector.MySqlParameter("DevStoreCode", searchModel.C_DevStoreCode),
- new MySqlConnector.MySqlParameter("StoreCode", searchModel.C_StoreCode),
- new MySqlConnector.MySqlParameter("Id ", searchModel.C_ID?.ToString()),
- new MySqlConnector.MySqlParameter("start ", searchModel.D_Start?.ToString("yyyy-MM-dd")),
- new MySqlConnector.MySqlParameter("end ", searchModel.D_End?.ToString("yyyy-MM-dd"))
- };
- StringBuilder sql = new StringBuilder();
- sql.Append(@"select * from (
- select p.*,d.C_StoreCode,b.C_Name as C_MsgTypeName ,m.I_GenerationType,m.I_MsgStatus,
- (select COUNT(1) from TMTN_AlarmShadowRecord where C_PushMsgResultCode=p.C_ID) as IsVideo
- from TMTN_PushMsgResult p
- LEFT JOIN TDEV_DevStore d on (p.C_DevStoreCode=d.C_ID)
- LEFT JOIN TBDM_CodeDetail b on (b.C_Code=p.C_MsgTypeCode)
- LEFT JOIN TSYS_Message m on (p.C_MessageCode=m.C_ID)
- )tab where 1=1");
- if (!string.IsNullOrEmpty(searchModel.C_PushMsgToCode))
- {
- sql.Append(" AND C_PushMsgToCode=@PushMsgToCode ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_Status))
- {
- sql.Append(" and C_Status=@status ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_MsgTypeCode))
- {
- sql.Append($" and (C_MsgTypeCode=@MsgTypeCode or C_Content like '%\"C_MsgTypeCode\":\"{searchModel.C_MsgTypeCode}\"%') ");
- }
- if (searchModel.MsgTypeList!=null&&searchModel.MsgTypeList.Count>0)
- {
- StringBuilder contsql= new StringBuilder();
- foreach (var item in searchModel.MsgTypeList)
- {
- contsql.Append($" C_Content like '%\"C_MsgTypeCode\":\"{item}\"%' or ");
- }
- sql.Append($" and ({contsql.ToString()} C_MsgTypeCode in ('{String.Join("','", searchModel.MsgTypeList)}') ) ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_ID))
- {
- sql.Append(" and C_ID = @Id ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_Content))
- {
- sql.Append(" and C_Content like @name ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
- {
- sql.Append(" and C_DevStoreCode=@DevStoreCode");
- }
- if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
- {
- sql.Append(" and C_StoreCode=@StoreCode");
- }
- if (searchModel.I_GenerationType!=null)
- {
- sql.Append(" and I_GenerationType=@generationType ");
- }
- if (searchModel.MsgStatus != null&& searchModel.MsgStatus.Count>0)
- {
- string msgStarus=string.Join(",", searchModel.MsgStatus);
- sql.Append($" and I_MsgStatus in ({msgStarus}) ");
- }
- if (searchModel.D_Start != null && searchModel.D_End != null)
- {
- sql.Append(" and date_format(D_CreateOn,'%Y-%m-%d') BETWEEN @start AND @end ");
- }
- //sql.Append(" group by C_PushMsgToCode,C_Content,C_DevStoreCode ");
- sql.Append(" order by D_CreateOn desc ");
- IEnumerable<TMTN_PushMsgResultModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<TMTN_PushMsgResultModel>(DbContext.Database, sql.ToString(), parameters);
- return Task.FromResult(recordItemlist);
- }
- /// <summary>
- /// 消息报警天数计量
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- public Task<DevAlarmCount> GetPushMsgResultContentAsync(TmtnPushMsgResultSearchModel searchModel)
- {
- MySqlConnector.MySqlParameter[] parameters = new[] {
- new MySqlConnector.MySqlParameter("MsgTypeCode", searchModel.C_MsgTypeCode),
- new MySqlConnector.MySqlParameter("name", "%"+searchModel.C_Content+"%"),
- new MySqlConnector.MySqlParameter("DevStoreCode", searchModel.C_DevStoreCode),
- new MySqlConnector.MySqlParameter("start ", searchModel.D_Start),
- };
- StringBuilder sql = new StringBuilder();
- sql.Append($"select C_Content,D_CreateOn from TMTN_PushMsgResult where C_Content like '%\"C_MsgTypeCode\":\"MSG_TYPE_011\",\"Subject\":\"设备开启关闭报警\"%' ");
- if (!string.IsNullOrEmpty(searchModel.C_Content))
- {
- sql.Append(" and C_Content like @name ");
- }
- if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
- {
- sql.Append(" and C_DevStoreCode=@DevStoreCode");
- }
- if (searchModel.D_Start != null)
- {
- sql.Append(" and D_CreateOn> @start ");
- }
- sql.Append(" order by D_CreateOn asc ");
- IEnumerable<TMTN_PushMsgResultModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<TMTN_PushMsgResultModel>(DbContext.Database, sql.ToString(), parameters);
- DateTime? time1=null, time2 = null;
- int day = 0; int Hour = 0;int minutes=0;
- int dayTotal = 0; int HourTotal = 0; int minutesTotal = 0;
- int dayStop = 0; int HourStop = 0; int minutesStop = 0;
- int dayStopTotal = 0; int HourStopTotal = 0; int minutesStopTotal = 0;
- string FistTime=null,LastTime=null;
- foreach (var item in recordItemlist)
- {
- var msgMode= JsonConvert.DeserializeObject<TpushMsgModel>(item.C_Content);
- if (msgMode.Msg== "开启")
- {
- time1 = string.IsNullOrEmpty(msgMode.CreateOn)?null:Convert.ToDateTime(msgMode.CreateOn);
- if (time2!=null&& time1!=null)
- {
- int dateCompare = DateTime.Compare(time1.Value, time2.Value);
- if (dateCompare > 0)//time2小于time1
- {
- TimeSpan diff = (time1.Value).Subtract(time2.Value);
- dayStop = diff.Days;
- HourStop= diff.Hours;
- minutesStop= diff.Minutes;
- minutesStopTotal = minutesStopTotal + minutesStop;
- if (minutesStopTotal>=60)
- {
- HourStopTotal++;
- minutesStopTotal = minutesStopTotal - 60;
- }
- HourStopTotal = HourStopTotal + HourStop;
- if (HourStopTotal>=24)
- {
- dayStopTotal++;
- HourStopTotal = HourStopTotal - 24;
- }
- dayStopTotal = dayStopTotal + dayStop;
- }
- }
- time2 = null;
- if (FistTime==null)
- {
- FistTime = msgMode.CreateOn;
- }
- }
- else if (msgMode.Msg == "关闭"&& time1!=null)
- {
- LastTime = msgMode.CreateOn;
- time2 = string.IsNullOrEmpty(msgMode.CreateOn) ? null : Convert.ToDateTime(msgMode.CreateOn);
- TimeSpan timeDiff = (time2.Value).Subtract(time1.Value);
- day = timeDiff.Days;
- Hour=timeDiff.Hours;
- minutes=timeDiff.Minutes;
- minutesTotal = minutesTotal + minutes;
- if (minutesTotal>=60)
- {
- HourTotal++;
- minutesTotal = minutesTotal - 60;
- }
- HourTotal = HourTotal + Hour;
- if (HourTotal>=24)
- {
- dayTotal++;
- HourTotal = HourTotal - 24;
- }
- dayTotal = dayTotal + day;
- }
- }
- DevAlarmCount alarmCount = new DevAlarmCount();
- alarmCount.FiratOnDate = FistTime;
- alarmCount.LastOffDate = LastTime;
- alarmCount.nowTime = day + "." + Hour + "." + minutes;
- alarmCount.TotalTime = dayTotal + "." + HourTotal + "." + minutesTotal;
- alarmCount.nowSpotTime = dayStop + "." + HourStop + "." + minutesStop;
- alarmCount.TotalSpotTime = dayStopTotal + "." + HourStopTotal + "." + minutesStopTotal;
- return Task.FromResult(alarmCount);
- }
- }
- }
|