TmtnAlarmOrderRepository.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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.*,p.C_Content,p.C_DevStoreCode,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 TDEV_DevStore d on (p.C_DevStoreCode=d.C_ID)
  39. LEFT JOIN TSYS_User u on (a.C_ExamineBy=u.C_UserID)
  40. LEFT JOIN TSYS_User c on (a.C_CreateBy=c.C_UserID)
  41. ) tab
  42. ");
  43. if (!string.IsNullOrEmpty(searchModel.C_Status))
  44. {
  45. if (searchModel.C_Status.Contains(","))
  46. {
  47. sql.Append($" where C_Status in ('{searchModel.C_Status.Replace(",","','")}') ");
  48. }
  49. else
  50. {
  51. sql.Append(" where C_Status=@Status ");
  52. }
  53. }
  54. else
  55. {
  56. sql.Append(" where C_Status!='0' ");
  57. }
  58. if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
  59. {
  60. sql.Append(" and C_StoreCode=@storeCode ");
  61. }
  62. if (!string.IsNullOrEmpty(searchModel.C_DevCode))
  63. {
  64. sql.Append(" and C_DevStoreCode=@devCode ");
  65. }
  66. if (!string.IsNullOrEmpty(searchModel.C_ID))
  67. {
  68. sql.Append(" and C_ID=@id ");
  69. }
  70. if (!string.IsNullOrEmpty(searchModel.C_Name))
  71. {
  72. sql.Append(" and C_Name like @name ");
  73. }
  74. if (searchModel.BeginTime!=null&&searchModel.BeginTime!=DateTime.MinValue)
  75. {
  76. sql.Append(" and DATE_FORMAT(D_CreateOn, '%Y-%m-%d')>=@beginTme ");
  77. }
  78. if (searchModel.EndTime != null && searchModel.EndTime != DateTime.MinValue)
  79. {
  80. sql.Append(" and DATE_FORMAT(D_CreateOn, '%Y-%m-%d')<=@endTime ");
  81. }
  82. sql.Append(" order by D_CreateOn desc ");
  83. IEnumerable<AlarmOrderViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<AlarmOrderViewModel>(DbContext.Database, sql.ToString(), parameters);
  84. searchModel.TotalCount = recordItemlist.First() != null ? recordItemlist.ToList().Count : 0;
  85. if (searchModel.TotalCount == 0)
  86. {
  87. recordItemlist=new List<AlarmOrderViewModel>();
  88. }
  89. return Task.FromResult(searchModel.IsPagination ? recordItemlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : recordItemlist);
  90. }
  91. public Task<RepairStatistics> GetAlarmOrderStatisticsAsync(string storeCode)
  92. {
  93. MySqlConnector.MySqlParameter[] parameters = new[] {
  94. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  95. string sql = "";
  96. 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,
  97. CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Confirm ,
  98. CASE WHEN ISNULL(SUM(if(C_Status='3',1,0))) THEN 0 ELSE SUM(if(C_Status='3',1,0)) END AS RepairOn ,
  99. CASE WHEN ISNULL(SUM(if(C_Status='4',1,0))) THEN 0 ELSE SUM(if(C_Status='4',1,0)) END AS Complete,
  100. CASE WHEN ISNULL(SUM(if(C_Status='5',1,0))) THEN 0 ELSE SUM(if(C_Status='5',1,0)) END AS Cancel,
  101. CASE WHEN ISNULL(SUM(if(C_Status='6',1,0))) THEN 0 ELSE SUM(if(C_Status='6',1,0)) END AS RepairRework,
  102. CASE WHEN ISNULL(SUM(if(C_Status='7',1,0))) THEN 0 ELSE SUM(if(C_Status='7',1,0)) END AS RepairCompleted
  103. FROM (
  104. SELECT A.D_CreateOn,A.C_Status FROM TMTN_AlarmOrder A
  105. LEFT JOIN TMTN_PushMsgResult p on (A.C_PushMsgResultCode=p.C_ID)
  106. LEFT JOIN TDEV_DevStore d on (p.C_DevStoreCode=d.C_ID)
  107. WHERE d.C_Status != '0'
  108. AND d.C_StoreCode =@storeCode
  109. AND A.D_CreateOn >= date_sub(NOW(),INTERVAL 6 MONTH)
  110. )D
  111. ";
  112. RepairStatistics record;
  113. record = EntityFrameworkCoreExtensions.SqlQuery<RepairStatistics>(DbContext.Database, sql, parameters).FirstOrDefault();
  114. return Task.FromResult(record);
  115. }
  116. }
  117. /// <summary>
  118. /// 报警处理记录
  119. /// </summary>
  120. public class TmtnAlarmOrderRecordRepository : RepositoryBase<TMTN_AlarmHandleRecord, string>, ITmtnAlarmOrderRecordRepository
  121. {
  122. public TmtnAlarmOrderRecordRepository(InspectionDbContext DbContext) : base(DbContext)
  123. {
  124. }
  125. public Task<IEnumerable<AlarmOrderRecordViewModel>> GetAlarmOrderRecordList(AlarmOrderSearchModel searchModel)
  126. {
  127. MySqlConnector.MySqlParameter[] parameters = new[] {
  128. new MySqlConnector.MySqlParameter("id", searchModel.C_ID),
  129. new MySqlConnector.MySqlParameter("PushMsgResultCode", searchModel.C_PushMsgResultCode)
  130. };
  131. string sql = @"select a.*,o.C_Name as C_AlarmOrderName,u.C_Name as C_CreateName
  132. from TMTN_AlarmHandleRecord a
  133. LEFT JOIN TMTN_AlarmOrder o on (a.C_AlarmOrderCode=o.C_ID)
  134. LEFT JOIN TSYS_User u on (a.C_CreateBy=u.C_UserID) where C_AlarmOrderCode=@id order by a.D_CreateOn asc";
  135. if (!string.IsNullOrEmpty(searchModel.C_PushMsgResultCode))
  136. {
  137. sql = @"select a.*,o.C_Name as C_AlarmOrderName,u.C_Name as C_CreateName
  138. from TMTN_AlarmHandleRecord a
  139. LEFT JOIN TMTN_AlarmOrder o on (a.C_AlarmOrderCode=o.C_ID)
  140. LEFT JOIN TSYS_User u on (a.C_CreateBy=u.C_UserID)
  141. where o.C_PushMsgResultCode=@PushMsgResultCode order by a.D_CreateOn asc";
  142. }
  143. IEnumerable<AlarmOrderRecordViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<AlarmOrderRecordViewModel>(DbContext.Database, sql, parameters);
  144. return Task.FromResult(recordItemlist);
  145. }
  146. }
  147. /// <summary>
  148. /// 报警处理记录附件
  149. /// </summary>
  150. public class TmtnAlarmOrderRecordAppRepository : RepositoryBase<TMTN_AlarmHandleRecordApp, string>, ITmtnAlarmOrderRecordAppRepository
  151. {
  152. public TmtnAlarmOrderRecordAppRepository(InspectionDbContext DbContext) : base(DbContext)
  153. {
  154. }
  155. }
  156. }