TmtnAlarmOrderRepository.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using Ropin.Inspection.Model;
  2. using Ropin.Inspection.Model.Entities;
  3. using Ropin.Inspection.Model.SearchModel.MTN;
  4. using Ropin.Inspection.Model.ViewModel.DEV;
  5. using Ropin.Inspection.Model.ViewModel.MTN;
  6. using Ropin.Inspection.Repository.MTN.Interface;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace Ropin.Inspection.Repository.MTN
  13. {
  14. /// <summary>
  15. /// 报警工单
  16. /// </summary>
  17. public class TmtnAlarmOrderRepository : RepositoryBase<TMTN_AlarmOrder, string>, ITmtnAlarmOrderRepository
  18. {
  19. public TmtnAlarmOrderRepository(InspectionDbContext DbContext) : base(DbContext)
  20. {
  21. }
  22. public Task<IEnumerable<AlarmOrderViewModel>> GetAlarmOrderList(AlarmOrderSearchModel searchModel)
  23. {
  24. MySqlConnector.MySqlParameter[] parameters = new[] {
  25. new MySqlConnector.MySqlParameter("Status", searchModel.C_Status),
  26. new MySqlConnector.MySqlParameter("id", searchModel.C_ID),
  27. new MySqlConnector.MySqlParameter("storeCode", searchModel.C_StoreCode),
  28. new MySqlConnector.MySqlParameter("devCode", searchModel.C_DevCode),
  29. new MySqlConnector.MySqlParameter("name", "%"+searchModel.C_Name+"%"),
  30. new MySqlConnector.MySqlParameter("beginTme", searchModel.BeginTime?.ToString("yyyy-MM-dd")),
  31. new MySqlConnector.MySqlParameter("endTime ", searchModel.EndTime?.ToString("yyyy-MM-dd"))
  32. };
  33. StringBuilder sql = new StringBuilder();
  34. sql.Append(@" select * from (
  35. select a.*,m.C_Content,m.C_DevStoreCode,m.C_MsgTypeCode,d.C_Name as C_DevName,d.C_StoreCode,u.C_Name as C_ExamineName,c.C_Name as C_CreateName
  36. from TMTN_AlarmOrder a
  37. LEFT JOIN TMTN_PushMsgResult p on (a.C_PushMsgResultCode=p.C_ID)
  38. LEFT JOIN TSYS_Message m on (a.C_MessageCode=m.C_ID)
  39. LEFT JOIN TDEV_DevStore d on (m.C_DevStoreCode=d.C_ID)
  40. LEFT JOIN TSYS_User u on (a.C_ExamineBy=u.C_UserID)
  41. LEFT JOIN TSYS_User c on (a.C_CreateBy=c.C_UserID)
  42. ) tab
  43. ");
  44. if (!string.IsNullOrEmpty(searchModel.C_Status))
  45. {
  46. if (searchModel.C_Status.Contains(","))
  47. {
  48. sql.Append($" where C_Status in ('{searchModel.C_Status.Replace(",","','")}') ");
  49. }
  50. else
  51. {
  52. sql.Append(" where C_Status=@Status ");
  53. }
  54. }
  55. else
  56. {
  57. sql.Append(" where C_Status!='0' ");
  58. }
  59. if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
  60. {
  61. sql.Append(" and C_StoreCode=@storeCode ");
  62. }
  63. if (!string.IsNullOrEmpty(searchModel.C_DevCode))
  64. {
  65. sql.Append(" and C_DevStoreCode=@devCode ");
  66. }
  67. if (!string.IsNullOrEmpty(searchModel.C_ID))
  68. {
  69. sql.Append(" and C_ID=@id ");
  70. }
  71. if (!string.IsNullOrEmpty(searchModel.C_Name))
  72. {
  73. sql.Append(" and C_Name like @name ");
  74. }
  75. if (searchModel.BeginTime!=null&&searchModel.BeginTime!=DateTime.MinValue)
  76. {
  77. sql.Append(" and DATE_FORMAT(D_CreateOn, '%Y-%m-%d')>=@beginTme ");
  78. }
  79. if (searchModel.EndTime != null && searchModel.EndTime != DateTime.MinValue)
  80. {
  81. sql.Append(" and DATE_FORMAT(D_CreateOn, '%Y-%m-%d')<=@endTime ");
  82. }
  83. sql.Append(" order by D_CreateOn desc ");
  84. IEnumerable<AlarmOrderViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<AlarmOrderViewModel>(DbContext.Database, sql.ToString(), parameters);
  85. searchModel.TotalCount = recordItemlist.First() != null ? recordItemlist.ToList().Count : 0;
  86. if (searchModel.TotalCount == 0)
  87. {
  88. recordItemlist=new List<AlarmOrderViewModel>();
  89. }
  90. return Task.FromResult(searchModel.IsPagination ? recordItemlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : recordItemlist);
  91. }
  92. public Task<RepairStatistics> GetAlarmOrderStatisticsAsync(string storeCode)
  93. {
  94. MySqlConnector.MySqlParameter[] parameters = new[] {
  95. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  96. string sql = "";
  97. sql = @"SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Approval,
  98. CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Confirm ,
  99. CASE WHEN ISNULL(SUM(if(C_Status='3',1,0))) THEN 0 ELSE SUM(if(C_Status='3',1,0)) END AS RepairOn ,
  100. CASE WHEN ISNULL(SUM(if(C_Status='4',1,0))) THEN 0 ELSE SUM(if(C_Status='4',1,0)) END AS Complete,
  101. CASE WHEN ISNULL(SUM(if(C_Status='5',1,0))) THEN 0 ELSE SUM(if(C_Status='5',1,0)) END AS Cancel,
  102. CASE WHEN ISNULL(SUM(if(C_Status='6',1,0))) THEN 0 ELSE SUM(if(C_Status='6',1,0)) END AS RepairRework,
  103. CASE WHEN ISNULL(SUM(if(C_Status='7',1,0))) THEN 0 ELSE SUM(if(C_Status='7',1,0)) END AS RepairCompleted
  104. FROM (
  105. SELECT A.D_CreateOn,A.C_Status FROM TMTN_AlarmOrder A
  106. LEFT JOIN TMTN_PushMsgResult p on (A.C_PushMsgResultCode=p.C_ID)
  107. LEFT JOIN TSYS_Message m on (A.C_MessageCode=m.C_ID)
  108. LEFT JOIN TDEV_DevStore d on (m.C_DevStoreCode=d.C_ID)
  109. WHERE d.C_Status != '0'
  110. AND d.C_StoreCode =@storeCode
  111. AND A.D_CreateOn >= date_sub(NOW(),INTERVAL 6 MONTH)
  112. )D
  113. ";
  114. RepairStatistics record;
  115. record = EntityFrameworkCoreExtensions.SqlQuery<RepairStatistics>(DbContext.Database, sql, parameters).FirstOrDefault();
  116. return Task.FromResult(record);
  117. }
  118. }
  119. /// <summary>
  120. /// 报警处理记录
  121. /// </summary>
  122. public class TmtnAlarmOrderRecordRepository : RepositoryBase<TMTN_AlarmHandleRecord, string>, ITmtnAlarmOrderRecordRepository
  123. {
  124. public TmtnAlarmOrderRecordRepository(InspectionDbContext DbContext) : base(DbContext)
  125. {
  126. }
  127. public Task<IEnumerable<AlarmOrderRecordViewModel>> GetAlarmOrderRecordList(AlarmOrderSearchModel searchModel)
  128. {
  129. MySqlConnector.MySqlParameter[] parameters = new[] {
  130. new MySqlConnector.MySqlParameter("id", searchModel.C_ID),
  131. new MySqlConnector.MySqlParameter("PushMsgResultCode", searchModel.C_PushMsgResultCode),
  132. new MySqlConnector.MySqlParameter("messageCode", searchModel.C_MessageCode)
  133. };
  134. string sql = @"select a.*,o.C_Name as C_AlarmOrderName,u.C_Name as C_CreateName
  135. from TMTN_AlarmHandleRecord a
  136. LEFT JOIN TMTN_AlarmOrder o on (a.C_AlarmOrderCode=o.C_ID)
  137. LEFT JOIN TSYS_User u on (a.C_CreateBy=u.C_UserID) where C_AlarmOrderCode=@id order by a.D_CreateOn asc";
  138. if (!string.IsNullOrEmpty(searchModel.C_PushMsgResultCode))
  139. {
  140. sql = @"select a.*,o.C_Name as C_AlarmOrderName,u.C_Name as C_CreateName
  141. from TMTN_AlarmHandleRecord a
  142. LEFT JOIN TMTN_AlarmOrder o on (a.C_AlarmOrderCode=o.C_ID)
  143. LEFT JOIN TSYS_User u on (a.C_CreateBy=u.C_UserID)
  144. where o.C_PushMsgResultCode=@PushMsgResultCode order by a.D_CreateOn asc";
  145. }
  146. if (!string.IsNullOrEmpty(searchModel.C_MessageCode))
  147. {
  148. sql = @"select a.*,o.C_Name as C_AlarmOrderName,u.C_Name as C_CreateName
  149. from TMTN_AlarmHandleRecord a
  150. LEFT JOIN TMTN_AlarmOrder o on (a.C_AlarmOrderCode=o.C_ID)
  151. LEFT JOIN TSYS_User u on (a.C_CreateBy=u.C_UserID)
  152. where o.C_MessageCode=@messageCode order by a.D_CreateOn asc";
  153. }
  154. IEnumerable<AlarmOrderRecordViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<AlarmOrderRecordViewModel>(DbContext.Database, sql, parameters);
  155. return Task.FromResult(recordItemlist);
  156. }
  157. }
  158. /// <summary>
  159. /// 报警处理记录附件
  160. /// </summary>
  161. public class TmtnAlarmOrderRecordAppRepository : RepositoryBase<TMTN_AlarmHandleRecordApp, string>, ITmtnAlarmOrderRecordAppRepository
  162. {
  163. public TmtnAlarmOrderRecordAppRepository(InspectionDbContext DbContext) : base(DbContext)
  164. {
  165. }
  166. }
  167. }