TsecRecordItemRepository.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Ropin.Inspection.Model.Entities;
  2. using Ropin.Inspection.Model.SearchModel;
  3. using Ropin.Inspection.Model.ViewModel;
  4. using Ropin.Inspection.Repository.Interface;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Ropin.Inspection.Repository
  11. {
  12. public class TsecRecordItemRepository : RepositoryBase<TISP_SecurityItem, Guid>, ITsecRecordItemRepository
  13. {
  14. public TsecRecordItemRepository(InspectionDbContext dbContext) : base(dbContext)
  15. {
  16. }
  17. public Task<IEnumerable<TsecRecordItemDetailViewModel>> GetSecurityRecordItemsAsync(TsecRecordItemsSearchModel searchModel)
  18. {
  19. MySqlConnector.MySqlParameter[] parameters = new[] {
  20. new MySqlConnector.MySqlParameter("start", searchModel.Start),
  21. new MySqlConnector.MySqlParameter("end", searchModel.End),
  22. new MySqlConnector.MySqlParameter("ispUserId", searchModel.IspUserId),
  23. new MySqlConnector.MySqlParameter("secUserId ", searchModel.SecUserId),
  24. new MySqlConnector.MySqlParameter("StoreCode", searchModel.C_StoreCode),
  25. new MySqlConnector.MySqlParameter("AreaCode", searchModel.C_AreaCode)};
  26. //new MySqlConnector.MySqlParameter("organizeCode", searchModel.OrganizeCode)
  27. //SELECT A.*,B.C_InspectionContent AS InspectionContent,B.C_Remark AS InspectionRemark,B.C_Status AS InspectionStatus,G.C_Name AS SecurityCreateByName,H.C_Name AS InspectionUserName,D.C_AlarmLevel AS ContentAlarmLevel,D.C_Name AS ContentName,F.C_Name AS SpotName,F.C_ImageUrl AS SpotImage, F.C_Number AS SpotNumber From TSEC_RecordItem A LEFT JOIN TISP_RecordItem B ON B.C_ID = A.C_RecordItemCode LEFT JOIN TISP_Record C ON C.C_ID = B.C_RecordCode LEFT JOIN TISP_Content D ON B.C_ContentCode = D.C_ID LEFT JOIN TISP_RecordImage E ON E.C_RecordItemCode = B.C_ID LEFT JOIN TISP_Spot F ON F.C_Code = C.C_SpotCode LEFT JOIN TSYS_User G ON G.C_UserID = A.C_CreateBy LEFT JOIN TSYS_User H ON H.C_UserID = B.C_CreateBy ORDER BY A.D_CreateOn ASC
  28. //MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("QRCode", QRCode) };
  29. //string sql = "SELECT A.*,B.C_InspectionContent AS InspectionContent,B.C_Remark AS InspectionRemark,B.C_Status AS InspectionStatus,G.C_Name AS SecurityCreateByName,H.C_Name AS InspectionUserName,D.C_AlarmLevel AS ContentAlarmLevel,D.C_Name AS ContentName,F.C_Name AS SpotName,F.C_ImageUrl AS SpotImage, F.C_Number AS SpotNumber From TSEC_RecordItem A LEFT JOIN TISP_RecordItem B ON B.C_ID = A.C_RecordItemCode LEFT JOIN TISP_Record C ON C.C_ID = B.C_RecordCode LEFT JOIN TISP_Content D ON B.C_ContentCode = D.C_ID LEFT JOIN TISP_RecordImage E ON E.C_RecordItemCode = B.C_ID LEFT JOIN TISP_Spot F ON F.C_Code = C.C_SpotCode LEFT JOIN TSYS_User G ON G.C_UserID = A.C_CreateBy LEFT JOIN TSYS_User H ON H.C_UserID = B.C_CreateBy ORDER BY A.D_CreateOn ASC";
  30. //string sql = "SELECT A.*, B.C_InspectionContent AS InspectionContent,B.C_Remark AS InspectionRemark,B.C_Status AS InspectionStatus,G.C_Name AS SecurityCreateByName,H.C_Name AS InspectionUserName,D.C_AlarmLevel AS ContentAlarmLevel,D.C_Name AS ContentName,F.C_Name AS SpotName,F.C_ImageUrl AS SpotImage, F.C_Number AS SpotNumber From TISP_RecordItem B LEFT JOIN (SELECT A0.* From (SELECT * From TSEC_RecordItem ORDER BY TSEC_RecordItem.D_CreateOn DESC) A0 GROUP BY A0.C_ID) A ON B.C_ID = A.C_RecordItemCode LEFT JOIN TISP_Record C ON C.C_ID = B.C_RecordCode LEFT JOIN TISP_Content D ON B.C_ContentCode = D.C_ID LEFT JOIN TISP_RecordImage E ON E.C_RecordItemCode = B.C_ID LEFT JOIN TISP_Spot F ON F.C_Code = C.C_SpotCode LEFT JOIN TSYS_User G ON G.C_UserID = A.C_CreateBy LEFT JOIN TSYS_User H ON H.C_UserID = B.C_CreateBy WHERE A.C_ID is not NULL GROUP BY B.C_ID ORDER BY A.D_CreateOn ASC";
  31. //string sql = "SELECT A.C_ID AS RecordId, G.C_Name AS SecurityCreateByName, D.C_Name AS InspectionUserName, GROUP_CONCAT(F.C_Status SEPARATOR ',') as C_Status,F.*, E.C_InspectionContent AS InspectionContent,E.C_Remark AS InspectionRemark,E.C_Status AS InspectionStatus,B.C_Name AS SpotName,B.C_ImageUrl AS SpotImage, B.C_Number AS SpotNumber FROM (SELECT * FROM TISP_Record GROUP BY C_SpotCode ORDER BY D_CreateOn desc) A LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code LEFT JOIN TSYS_User D ON D.C_UserID = A.C_CreateBy LEFT JOIN TISP_RecordItem E ON E.C_RecordCode = A.C_ID LEFT JOIN TSEC_RecordItem F ON F.C_RecordItemCode = E.C_ID LEFT JOIN TSYS_User G ON G.C_UserID = F.C_CreateBy WHERE F.C_ID IS NOT NULL GROUP BY A.C_ID ORDER BY A.D_CreateOn DESC";
  32. string sql = "SELECT A.C_ID AS RecordId,A.D_CreateOn AS InspectionTime, G.C_Name AS SecurityCreateByName, D.C_Name AS InspectionUserName, GROUP_CONCAT(F.C_Status SEPARATOR ',') as C_Status,F.*, E.C_InspectionContent AS InspectionContent,E.C_Remark AS InspectionRemark,E.C_Status AS InspectionStatus,B.C_Name AS SpotName,B.C_ImageUrl AS SpotImage, B.C_Number AS SpotNumber FROM (SELECT A.* FROM TISP_Record A,(SELECT C_SpotCode, max(D_CreateOn) maxTime FROM TISP_Record GROUP BY C_SpotCode) B WHERE A.C_SpotCode = B.C_SpotCode AND A.D_CreateOn = B.maxTime) A LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code LEFT JOIN TSYS_User D ON D.C_UserID = A.C_CreateBy LEFT JOIN TISP_RecordItem E ON E.C_RecordCode = A.C_ID LEFT JOIN TISP_SecurityItem F ON F.C_RecordItemCode = E.C_ID LEFT JOIN TSYS_User G ON G.C_UserID = F.C_CreateBy WHERE F.C_ID IS NOT NULL";
  33. sql = @"SELECT A.C_ID AS RecordId,A.D_CreateOn AS InspectionTime, G.C_Name AS SecurityCreateByName, D.C_Name AS InspectionUserName, GROUP_CONCAT(F.C_Status SEPARATOR ',') as C_Status,F.*, E.C_InspectionContent AS InspectionContent,E.C_Remark AS InspectionRemark,E.C_Status AS InspectionStatus,B.C_Name AS SpotName,B.C_ImageUrl AS SpotImage, B.C_Number AS SpotNumber
  34. FROM (SELECT A.* FROM TISP_Record A,(SELECT C_SpotCode, max(D_CreateOn) maxTime
  35. FROM TISP_Record GROUP BY C_SpotCode) B WHERE A.C_SpotCode = B.C_SpotCode AND A.D_CreateOn = B.maxTime) A
  36. LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code LEFT JOIN TSYS_User D ON D.C_UserID = A.C_CreateBy
  37. LEFT JOIN TISP_RecordItem E ON E.C_RecordCode = A.C_ID
  38. LEFT JOIN TISP_SecurityItem F ON F.C_RecordItemCode = E.C_ID
  39. LEFT JOIN TSYS_User G ON G.C_UserID = F.C_CreateBy
  40. WHERE B.C_StoreCode = @StoreCode ";
  41. sql = @"SELECT A.C_ID AS RecordId,A.D_CreateOn AS InspectionTime, G.C_Name AS SecurityCreateByName, D.C_Name AS InspectionUserName, GROUP_CONCAT(F.C_Status SEPARATOR ',') as C_Status,F.*, E.C_InspectionContent AS InspectionContent,E.C_Remark AS InspectionRemark,E.C_Status AS InspectionStatus,B.C_Name AS SpotName,B.C_ImageUrl AS SpotImage, B.C_Number AS SpotNumber
  42. FROM TISP_Record A
  43. LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code LEFT JOIN TSYS_User D ON D.C_UserID = A.C_CreateBy
  44. LEFT JOIN TISP_RecordItem E ON E.C_RecordCode = A.C_ID
  45. INNER JOIN TISP_SecurityItem F ON F.C_RecordItemCode = E.C_ID
  46. LEFT JOIN TSYS_User G ON G.C_UserID = F.C_CreateBy
  47. WHERE B.C_StoreCode = @StoreCode ";
  48. if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  49. {
  50. sql += " AND B.C_AreaCode =@AreaCode ";
  51. }
  52. if (!string.IsNullOrEmpty(searchModel.IspUserId))
  53. {
  54. sql += " AND A.C_CreateBy =@ispUserId ";
  55. }
  56. if (!string.IsNullOrEmpty(searchModel.SecUserId))
  57. {
  58. sql += " AND E.C_CreateBy =@secUserId ";
  59. }
  60. if (searchModel.Start != Convert.ToDateTime("0001-01-01 00:00:00") && searchModel.End != Convert.ToDateTime("0001-01-01 00:00:00"))
  61. {
  62. sql += " AND A.D_CreateOn BETWEEN @start and @end";
  63. }
  64. //sql += " AND B.G_OrganizeCode = @organizeCode";
  65. sql += " GROUP BY A.C_ID ORDER BY A.D_CreateOn DESC";
  66. IEnumerable<TsecRecordItemDetailViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<TsecRecordItemDetailViewModel>(DbContext.Database, sql, parameters);
  67. searchModel.TotalCount = recordItemlist.First() != null ? recordItemlist.ToList().Count : 0;
  68. return Task.FromResult(searchModel.IsPagination ? recordItemlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : recordItemlist);
  69. }
  70. public Task<IEnumerable<TsecRecordItemWithImagesViewModel>> GetSecurityRecordItemByIdAsync(Guid recordId)
  71. {
  72. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("recordId", recordId) };
  73. //string sql = "SELECT A.*,B.C_ImageURL,B.C_ID AS C_RecordImageId,B.C_Status AS RecordImageStatus From TSEC_RecordItem A LEFT JOIN TSEC_RecordImage B ON B.C_SecurityRecordCode = A.C_ID WHERE A.C_RecordItemCode =@recordId";
  74. //string sql = "SELECT A.*,B.C_ImageURL,B.C_ID AS C_RecordImageId,B.C_Status AS RecordImageStatus From (SELECT * From TSEC_RecordItem ORDER BY D_CreateOn DESC LIMIT 1) A LEFT JOIN TSEC_RecordImage B ON B.C_SecurityRecordCode = A.C_ID WHERE A.C_RecordItemCode =@recordId";
  75. //string sql = "SELECT MAX(A.D_CreateOn), A.*,B.C_ImageURL,B.C_ID AS C_RecordImageId,B.C_Status AS RecordImageStatus From TSEC_RecordItem A LEFT JOIN TSEC_RecordImage B ON B.C_SecurityRecordCode = A.C_ID WHERE A.C_RecordItemCode =@recordId";
  76. string sql = "SELECT A.*,B.C_ImageURL,B.C_ID AS C_RecordImageId,B.C_Status AS RecordImageStatus From TISP_SecurityItem A LEFT JOIN TISP_SecurityImage B ON B.C_SecurityRecordCode = A.C_ID INNER JOIN (SELECT * From TISP_SecurityItem WHERE C_RecordItemCode =@recordId ORDER BY D_CreateOn DESC LIMIT 1 )C ON C.D_CreateOn = A.D_CreateOn";
  77. sql = @"SELECT A.*,B.C_ImageURL,B.C_ID AS C_RecordImageId,B.C_Status AS RecordImageStatus FROM
  78. (
  79. (SELECT * From TISP_SecurityItem WHERE C_RecordItemCode =@recordId ORDER BY D_CreateOn DESC LIMIT 1 ) A
  80. LEFT JOIN TISP_SecurityImage B ON B.C_SecurityRecordCode = A.C_ID
  81. ) ";
  82. IEnumerable<TsecRecordItemWithImageViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<TsecRecordItemWithImageViewModel>(DbContext.Database, sql, parameters);
  83. if (null == recordItemlist || recordItemlist.First() == null)
  84. {
  85. IEnumerable<TsecRecordItemWithImagesViewModel> recordItemDetail = null;
  86. return Task.FromResult(recordItemDetail);
  87. }
  88. var q = from b in recordItemlist
  89. group b by b.C_ID into g
  90. select new TsecRecordItemWithImagesViewModel
  91. {
  92. //C_ID = g.Key,
  93. C_SecurityContent = g.First().C_SecurityContent,
  94. C_Remark = g.First().C_Remark,
  95. C_Status = g.First().C_Status,
  96. C_CreateBy = g.First().C_CreateBy,
  97. D_CreateOn = g.First().D_CreateOn,
  98. C_LastUpdatedBy = g.First().C_LastUpdatedBy,
  99. D_LastUpdatedOn = g.First().D_LastUpdatedOn,
  100. RecordImageList = (from c in g select new RecordImage { C_RecordImageId = c.C_RecordImageId, C_ImageURL = c.C_ImageURL, RecordImageStatus = c.RecordImageStatus }).ToList<RecordImage>(),
  101. };
  102. return Task.FromResult(q);
  103. }
  104. }
  105. }