TispRecordRepository.cs 67 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050
  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 TispRecordRepository : RepositoryBase<TISP_Record, Guid>, ITispRecordRepository
  13. {
  14. public TispRecordRepository(InspectionDbContext dbContext) : base(dbContext)
  15. {
  16. }
  17. public Task<IEnumerable<TispRecordDetailViewModel>> GetRecordsConditionAsync(TispRecordSearchModel searchModel)
  18. {
  19. if (searchModel.End != DateTime.MinValue)
  20. {
  21. TimeSpan timeToAdd = new TimeSpan(0, 23, 59, 59);
  22. searchModel.End = searchModel.End + timeToAdd;
  23. }
  24. MySqlConnector.MySqlParameter[] parameters = new[] {
  25. //new MySqlConnector.MySqlParameter("start", searchModel.Start),
  26. //new MySqlConnector.MySqlParameter("end", searchModel.End),
  27. new MySqlConnector.MySqlParameter("DevStoreCode", searchModel.C_DevStoreCode),
  28. new MySqlConnector.MySqlParameter("spotCode", searchModel.C_SpotID),
  29. new MySqlConnector.MySqlParameter("userCode", searchModel.C_UserID),
  30. new MySqlConnector.MySqlParameter("areaCode", searchModel.C_AreaCode),
  31. new MySqlConnector.MySqlParameter("StoreCode", searchModel.C_StoreCode),
  32. new MySqlConnector.MySqlParameter("Start", searchModel.Start),
  33. new MySqlConnector.MySqlParameter("End", searchModel.End)};
  34. //SELECT A.*,B.C_GPS,B.C_Name,B.C_Number,B.C_Position,B.C_QRCode,B.C_Remark FROM TISP_Record A LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code
  35. //string sql = "SELECT A.*,B.C_GPS,B.C_Name,B.C_Number,B.C_Position,B.C_QRCode,B.C_Remark,B.C_ImageUrl, D.C_Name AS C_CreateByName,E.C_Name AS C_LastUpdatedByName FROM TISP_Record 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 TSYS_User E ON E.C_UserID = A.C_LastUpdatedBy LEFT JOIN TISP_SpotRoute F ON F.C_SpotCode = A.C_SpotCode WHERE 1=1 AND A.D_CreateOn between @start and @end";
  36. string sql = @"SELECT A.*,B.C_GPS,B.C_Name,B.C_Number,B.C_Position,B.C_QRCode,B.C_Remark,B.C_ImageUrl, D.C_Name AS C_CreateByName,E.C_Name AS C_LastUpdatedByName
  37. FROM TISP_Record A
  38. LEFT JOIN TISP_Spot B ON A.C_SpotCode = B.C_Code
  39. LEFT JOIN TSYS_User D ON D.C_UserID = A.C_CreateBy
  40. LEFT JOIN TSYS_User E ON E.C_UserID = A.C_LastUpdatedBy
  41. LEFT JOIN TDEV_DevSpot P ON P.C_SpotCode = B.C_Code
  42. WHERE 1=1";
  43. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  44. {
  45. sql += " AND P.C_DevStoreCode = @DevStoreCode";
  46. }
  47. if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
  48. {
  49. sql += " AND B.C_StoreCode = @StoreCode";
  50. }
  51. if (!string.IsNullOrEmpty(searchModel.C_SpotID))
  52. {
  53. sql += " AND A.C_SpotCode = @spotCode";
  54. }
  55. //if (searchModel.Abnormal)
  56. //{
  57. // sql += " AND A.C_LastUpdatedBy IS NOT NULL";
  58. //}
  59. if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  60. {
  61. sql += " AND A.C_AreaCode = @areaCode";
  62. }
  63. if (searchModel.Start != DateTime.MinValue && searchModel.End != DateTime.MinValue)
  64. {
  65. sql += " AND A.D_CreateOn BETWEEN @Start AND @End";
  66. }
  67. sql += " ORDER BY A.D_CreateOn DESC";
  68. IEnumerable<TispRecordDetailViewModel> spotlist = EntityFrameworkCoreExtensions.GetList<TispRecordDetailViewModel>(DbContext.Database, sql, parameters);
  69. searchModel.TotalCount = spotlist.First() != null ? spotlist.ToList().Count : 0;
  70. return Task.FromResult(searchModel.IsPagination ? spotlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : spotlist);
  71. }
  72. public Task<TispRecordViewModel> GetRecordAsync(Guid id)
  73. {
  74. //string sql = "SELECT B.*,A.*,C.*,D.*,E.* FROM TISP_RecordItem B LEFT JOIN TISP_Record A ON A.C_ID = B.C_SpotContentCode LEFT JOIN TISP_RecordImage C ON B.C_ID = C.C_RecordItemCode LEFT JOIN TISP_Spot D ON D.C_Code = A.C_SpotCode LEFT JOIN TISP_Content E ON E.C_ID = B.C_SpotContentCode";
  75. //var contentlist = EntityFrameworkCoreExtensions.GetList<TispRecordViewModel>(DbContext.Database, sql, null, pageSize, pageIndex);
  76. //var q = from b in contentlist
  77. // group b by b.C_SpotID into g
  78. // select new TispSpotUsersViewModel
  79. // {
  80. // C_SpotID = g.Key,
  81. // SpotUserList = (from c in g select new SpotUser { C_UserID = c.C_UserID, C_UserName = c.C_UserName, }).ToList<SpotUser>(),
  82. // C_GPS = g.FirstOrDefault<TispSpotsUsersViewModel>().C_GPS,
  83. // C_SpotName = g.FirstOrDefault<TispSpotsUsersViewModel>().C_SpotName,
  84. // C_Number = g.FirstOrDefault<TispSpotsUsersViewModel>().C_Number,
  85. // C_Position = g.FirstOrDefault<TispSpotsUsersViewModel>().C_Position,
  86. // C_QRCode = g.FirstOrDefault<TispSpotsUsersViewModel>().C_QRCode,
  87. // C_Remark = g.FirstOrDefault<TispSpotsUsersViewModel>().C_Remark
  88. // };
  89. //return Task.FromResult(q);
  90. return null;
  91. }
  92. public Task<IEnumerable<AllSpotRecordWithDevViewModel>> GetAllSpotRecordAsync(AllSpotRecordSearchModel searchModel)
  93. {
  94. MySqlConnector.MySqlParameter[] parameters = new[] {
  95. new MySqlConnector.MySqlParameter("StoreCode", searchModel.C_StoreCode),
  96. new MySqlConnector.MySqlParameter("DevStoreCode", searchModel.C_DevStoreCode),
  97. new MySqlConnector.MySqlParameter("AreaCode", searchModel.C_AreaCode) };
  98. string sql;
  99. // if (!searchModel.bMapShow)
  100. // {
  101. // //sql = "SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM TISP_Spot A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) order by D_CreateOn desc limit 1) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy";
  102. // //if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  103. // //{
  104. // // sql += " AND A.C_AreaCode = @AreaCode";
  105. // //}
  106. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  107. //FROM TISP_Spot A
  108. //LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  109. //FROM TISP_Spot A
  110. //LEFT JOIN (SELECT * FROM(
  111. //SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,D.C_Code AS DevDataConfigCode, C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  112. //LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  113. //INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  114. //INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  115. //WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ORDER BY C.D_CreateOn desc
  116. //)A GROUP BY A.DevDataConfigCode) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  117. //LEFT JOIN (SELECT * FROM(SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ORDER BY D_CreateOn DESC)A GROUP BY A.C_SpotCode) B ON A.C_Code = B.C_SpotCode
  118. //LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy ";
  119. // }
  120. // else
  121. // {
  122. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM TISP_Spot A LEFT JOIN ( SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '1' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U0
  123. //UNION
  124. //SELECT * FROM TISP_Record WHERE C_Status = '2' OR C_Status = '3'
  125. //) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE A.C_Status ='1' GROUP BY A.C_Code ORDER BY RecordDateTime desc";
  126. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM TISP_Spot A LEFT JOIN ( SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '1' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U0
  127. //UNION
  128. //SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '2' OR C_Status = '3' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U2
  129. //) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE A.C_Status ='1' AND A.C_StoreCode =@StoreCode GROUP BY A.C_Code ORDER BY RecordDateTime desc";
  130. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName,K.C_DeviceCode,K.C_ConfigCode,K.C_Value,K.D_CreateOn
  131. //FROM TISP_Spot A
  132. //LEFT JOIN (SELECT * from TDEV_DevData where D_CreateOn = (SELECT max(D_CreateOn) FROM TDEV_DevData) AND C_ConfigCode = 'DDC00001') K ON K.C_DeviceCode = A.C_Code
  133. //LEFT JOIN ( SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '1' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U0
  134. //UNION
  135. //SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '2' OR C_Status = '3' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U2
  136. //) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE A.C_Status ='1' AND A.C_StoreCode =@StoreCode AND K.D_CreateOn GROUP BY A.C_Code ORDER BY RecordDateTime desc";
  137. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName,K.*
  138. //FROM TISP_Spot A
  139. //LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  140. //FROM TISP_Spot A
  141. //LEFT JOIN (SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  142. //LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  143. //INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  144. //INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  145. //WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY D.C_Code ORDER BY C.D_CreateOn desc) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  146. //LEFT JOIN ( SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '1' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U0
  147. //UNION
  148. //SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '2' OR C_Status = '3' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U2
  149. //) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE A.C_Status ='1' AND A.C_StoreCode =@StoreCode ";
  150. // if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  151. // {
  152. // sql += " AND A.C_AreaCode = @AreaCode";
  153. // }
  154. // sql += " GROUP BY A.C_Code ORDER BY RecordDateTime desc";
  155. // sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName,K.*
  156. //FROM TISP_Spot A
  157. //LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  158. //FROM TISP_Spot A
  159. //LEFT JOIN (SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  160. //LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  161. //INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  162. //INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  163. //WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY D.C_Code ORDER BY C.D_CreateOn desc) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  164. //LEFT JOIN ( SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '1' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U0
  165. //UNION
  166. //SELECT * FROM (SELECT * FROM TISP_Record WHERE C_Status = '2' OR C_Status = '3' AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C_SpotCode ORDER BY D_CreateOn desc) U2
  167. //) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE A.C_Status ='1' GROUP BY A.C_Code ORDER BY RecordDateTime desc";
  168. // }
  169. sql = @"SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  170. FROM TISP_Spot A
  171. LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  172. FROM TISP_Spot A
  173. LEFT JOIN (SELECT * FROM(
  174. SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,D.C_Code AS DevDataConfigCode, C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  175. LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  176. INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  177. INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  178. WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ORDER BY C.D_CreateOn desc
  179. )A GROUP BY A.DevDataConfigCode) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  180. LEFT JOIN (SELECT A.*
  181. FROM TISP_Record A, (
  182. SELECT C_SpotCode, max( D_CreateOn ) max_dateline
  183. FROM TISP_Record R
  184. WHERE DATE_FORMAT(R.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) || R.C_Status = '2' || R.C_Status = '3' GROUP BY R.C_SpotCode
  185. )B WHERE A.C_SpotCode = B.C_SpotCode AND A.D_CreateOn = B.max_dateline) B ON A.C_Code = B.C_SpotCode
  186. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE C_StoreCode = @StoreCode
  187. ";
  188. sql = @"
  189. SELECT P.C_DevStoreCode,A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName,D.C_Status AS DevOspStatus
  190. FROM TISP_Spot A
  191. LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  192. FROM TISP_Spot A
  193. LEFT JOIN (SELECT * FROM(
  194. SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,D.C_Code AS DevDataConfigCode, C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  195. LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  196. INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  197. INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  198. WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ORDER BY C.D_CreateOn desc
  199. )A GROUP BY A.DevDataConfigCode) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  200. LEFT JOIN (SELECT A.*
  201. FROM TISP_Record A, (
  202. SELECT C_SpotCode, max( D_CreateOn ) max_dateline
  203. FROM TISP_Record R
  204. WHERE DATE_FORMAT(R.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) || R.C_Status = '2' || R.C_Status = '3' GROUP BY R.C_SpotCode
  205. )B WHERE A.C_SpotCode = B.C_SpotCode AND A.D_CreateOn = B.max_dateline) B ON A.C_Code = B.C_SpotCode
  206. LEFT JOIN (SELECT A.*
  207. FROM TMTN_DevOps A, (
  208. SELECT C_SpotCode, max( D_CreateOn ) max_dateline
  209. FROM TMTN_DevOps R
  210. WHERE DATE_FORMAT(R.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) || R.C_Status = '1' || R.C_Status = '2'| R.C_Status = '3' || R.C_Status = '4' GROUP BY R.C_SpotCode
  211. )C WHERE A.C_SpotCode = C.C_SpotCode AND A.D_CreateOn = C.max_dateline) D ON A.C_Code = D.C_SpotCode
  212. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy
  213. LEFT JOIN TDEV_DevSpot P ON P.C_SpotCode = A.C_Code
  214. WHERE 1=1
  215. ";
  216. sql = @"
  217. SELECT * from
  218. (
  219. SELECT A.* ,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName,D.C_Status AS DevOspStatus
  220. FROM TISP_Spot A
  221. LEFT JOIN (SELECT C_SpotCode, ProductMapX,ProductMapY,DevDataConfigName,DevDataValue,DevDataTime,DevName,DevMachineCode
  222. FROM TISP_Spot A
  223. LEFT JOIN (SELECT * FROM(
  224. SELECT A.C_SpotCode,A.F_Map_X AS ProductMapX ,A.F_Map_Y AS ProductMapY,D.C_Name AS DevDataConfigName,D.C_Code AS DevDataConfigCode, C.C_Value AS DevDataValue,C.D_CreateOn AS DevDataTime,B.C_Name AS DevName,B.C_MachineCode AS DevMachineCode FROM TPRD_Product A
  225. LEFT JOIN TDEV_Device B ON B.C_Code = A.C_DeviceCode
  226. INNER JOIN TDEV_DevData C ON C.C_DeviceCode = B.C_Code
  227. INNER JOIN TDEV_DevDataConfig D ON D.C_Code = C.C_ConfigCode
  228. WHERE B.C_Status = '1' AND DATE_FORMAT(C.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ORDER BY C.D_CreateOn desc
  229. )A GROUP BY A.DevDataConfigCode) K ON K.C_SpotCode = A.C_Code) K ON K.C_SpotCode = A.C_Code
  230. LEFT JOIN (SELECT A.*
  231. FROM TISP_Record A, (
  232. SELECT C_SpotCode, max( D_CreateOn ) max_dateline
  233. FROM TISP_Record R
  234. WHERE DATE_FORMAT(R.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) || R.C_Status = '2' || R.C_Status = '3' GROUP BY R.C_SpotCode
  235. )B WHERE A.C_SpotCode = B.C_SpotCode AND A.D_CreateOn = B.max_dateline) B ON A.C_Code = B.C_SpotCode
  236. LEFT JOIN (SELECT A.*
  237. FROM TMTN_DevOps A, (
  238. SELECT C_SpotCode, max( D_CreateOn ) max_dateline
  239. FROM TMTN_DevOps R
  240. WHERE DATE_FORMAT(R.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) || R.C_Status = '1' || R.C_Status = '2'| R.C_Status = '3' || R.C_Status = '4' GROUP BY R.C_SpotCode
  241. )C WHERE A.C_SpotCode = C.C_SpotCode AND A.D_CreateOn = C.max_dateline) D ON A.C_Code = D.C_SpotCode
  242. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy
  243. )AA INNER JOIN TDEV_DevSpot P ON P.C_SpotCode = AA.C_Code
  244. WHERE 1=1";
  245. if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
  246. {
  247. sql += " AND AA.C_StoreCode = @StoreCode";
  248. }
  249. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  250. {
  251. sql += " AND P.C_DevStoreCode = @DevStoreCode";
  252. }
  253. if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  254. {
  255. sql += " AND AA.C_AreaCode = @AreaCode";
  256. }
  257. IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  258. if (!searchModel.IsPagination)
  259. {
  260. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  261. }
  262. else
  263. {
  264. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters, searchModel.PageSize, searchModel.PageIndex);
  265. }
  266. //IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  267. //if (!searchModel.IsPagination)
  268. //{
  269. // if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  270. // {
  271. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, null).Where(c => c.C_StoreCode == searchModel.C_StoreCode && c.C_AreaCode == searchModel.C_AreaCode);
  272. // }
  273. // else
  274. // {
  275. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, null).Where(c => c.C_StoreCode == searchModel.C_StoreCode);
  276. // }
  277. //}
  278. //else
  279. //{
  280. // if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  281. // {
  282. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, null, searchModel.PageSize, searchModel.PageIndex).Where(c => c.C_StoreCode == searchModel.C_StoreCode && c.C_AreaCode == searchModel.C_AreaCode);
  283. // }
  284. // else
  285. // {
  286. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, null, searchModel.PageSize, searchModel.PageIndex).Where(c => c.C_StoreCode == searchModel.C_StoreCode);
  287. // }
  288. //}
  289. if (null == spotRecordlist || null == spotRecordlist.First() || !spotRecordlist.Any())
  290. {
  291. IEnumerable<AllSpotRecordWithDevViewModel> recordItemDetail = null;
  292. return Task.FromResult(recordItemDetail);
  293. }
  294. var q = from b in spotRecordlist
  295. group b by b.C_Code into g
  296. select new AllSpotRecordWithDevViewModel
  297. {
  298. C_Code = g.First().C_Code,
  299. C_StoreCode = g.First().C_StoreCode,
  300. C_AreaCode = g.First().C_AreaCode,
  301. F_Map_X = g.First().F_Map_X,
  302. F_Map_Y = g.First().F_Map_Y,
  303. C_Number = g.First().C_Number,
  304. C_Name = g.First().C_Name,
  305. C_Position = g.First().C_Position,
  306. C_QRCode = g.First().C_QRCode,
  307. C_GPS = g.First().C_GPS,
  308. C_Remark = g.First().C_Remark,
  309. C_ImageUrl = g.First().C_ImageUrl,
  310. C_CreateBy = g.First().C_CreateBy,
  311. D_CreateOn = g.First().D_CreateOn,
  312. C_LastUpdatedBy = g.First().C_LastUpdatedBy,
  313. D_LastUpdatedOn = g.First().D_LastUpdatedOn,
  314. C_Status = g.First().C_Status,
  315. RecordCode = g.First().RecordCode,
  316. RecordDateTime = g.First().RecordDateTime,
  317. RecordStatus = g.First().RecordStatus,
  318. RecordUserName = g.First().RecordUserName,
  319. ProductDevs = (from c in g select new ProductDev {
  320. ProductMapX = c.ProductMapX,
  321. ProductMapY = c.ProductMapY,
  322. DevDataConfigName = c.DevDataConfigName,
  323. DevDataValue = c.DevDataValue,
  324. DevDataTime = c.DevDataTime,
  325. DevName = c.DevName,
  326. DevMachineCode = c.DevMachineCode,
  327. }),
  328. DevOspStatus = g.First().DevOspStatus,
  329. };
  330. return Task.FromResult(q);
  331. }
  332. public Task<IEnumerable<AllSpotRecordViewModel>> GetUserSpotRecordAsync(UserSpotRecordSearchModel searchModel)
  333. {
  334. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("userId", searchModel.userId) , new MySqlConnector.MySqlParameter("StoreCode", searchModel.C_StoreCode) };
  335. //string sql = "SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) order by D_CreateOn desc limit 1) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy";
  336. string sql = "SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) AND C_CreateBy = @userId order by D_CreateOn desc limit 1) B LEFT JOIN (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId AND A1.C_StoreCode =@StoreCode) A ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy";
  337. IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  338. if (!searchModel.IsPagination)
  339. {
  340. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  341. }
  342. else
  343. {
  344. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters, searchModel.PageSize, searchModel.PageIndex);
  345. }
  346. return Task.FromResult(spotRecordlist);
  347. }
  348. public Task<int> GetUserTodaySpotRecordCountAsync(Guid id, string storeCode)
  349. {
  350. MySqlConnector.MySqlParameter[] parameters = new[] {
  351. new MySqlConnector.MySqlParameter("userId", id),
  352. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  353. string sql = "SELECT COUNT(*) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL) AA GROUP BY C_Code) BB";
  354. object result = EntityFrameworkCoreExtensions.SqlQuery(DbContext.Database, sql, parameters).Rows[0][0];
  355. return Task.FromResult(int.Parse(result.ToString()));
  356. }
  357. //public Task<int> GetAllTodaySpotRecordCountAsync()
  358. //{
  359. //}
  360. public Task<int> GetUserTodayNotSpotRecordCountAsync(Guid id, string storeCode)
  361. {
  362. MySqlConnector.MySqlParameter[] parameters = new[] {
  363. new MySqlConnector.MySqlParameter("userId", id),
  364. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  365. string sql = "SELECT Count(*) - COUNT(RecordCode) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB";
  366. object result = EntityFrameworkCoreExtensions.SqlQuery(DbContext.Database, sql, parameters).Rows[0][0];
  367. return Task.FromResult(Convert.ToInt32(result));
  368. }
  369. public Task<int> GetAllTodayNotSpotRecordCountAsync()
  370. {
  371. //string sql = "SELECT COUNT(*) - (SELECT count(DISTINCT C_SpotCode ) FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) From TISP_Spot";
  372. string sql = "SELECT count(C_Code) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  373. object result = EntityFrameworkCoreExtensions.SqlQuery(DbContext.Database, sql, null).Rows[0][0];
  374. return Task.FromResult(int.Parse(result.ToString()));
  375. }
  376. //public Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodaySpotRecordsAsync(Guid id, string storeCode)
  377. //{
  378. // MySqlConnector.MySqlParameter[] parameters = new[] {
  379. // new MySqlConnector.MySqlParameter("userId", id),
  380. // new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  381. // string sql = string.Empty;
  382. // //string sql = "SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) order by D_CreateOn desc limit 1) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL";
  383. // if (id == Guid.Empty)
  384. // {
  385. // sql = "SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT * FROM TISP_Spot) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL order by A.D_CreateOn desc) AA GROUP BY C_Code ORDER BY D_CreateOn DESC";
  386. // }
  387. // else
  388. // {
  389. // sql = "SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL order by A.D_CreateOn desc) AA GROUP BY C_Code ORDER BY D_CreateOn DESC";
  390. // }
  391. // IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  392. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  393. // return Task.FromResult(spotRecordlist);
  394. //}
  395. /// <summary>
  396. /// 管理员获取所有信息
  397. /// </summary>
  398. /// <returns></returns>
  399. public Task<IEnumerable<AllSpotRecordViewModel>> GetUsersTodaySpotRecordsAsync()
  400. {
  401. //MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("userId", id) };
  402. string sql = "SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL order by A.D_CreateOn desc ";
  403. IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  404. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, null);
  405. return Task.FromResult(spotRecordlist);
  406. }
  407. //public Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodayNotSpotRecordsAsync(Guid id, string storeCode)
  408. //{
  409. // MySqlConnector.MySqlParameter[] parameters = new[] {
  410. // new MySqlConnector.MySqlParameter("userId", id),
  411. // new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  412. // string sql = string.Empty;
  413. // if (id == Guid.Empty)
  414. // {
  415. // sql = "SELECT * FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  416. // }
  417. // else
  418. // {
  419. // sql = "SELECT * FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  420. // }
  421. // IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  422. // spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  423. // return Task.FromResult(spotRecordlist);
  424. //}
  425. public Task<IEnumerable<TispRecord30DaysStatistics>> GetRecords30DaysStatisticsAsync()
  426. {
  427. //string sql = "select date_format(D_CreateOn,'%Y%m%d') as SpecificDay, SUM(if(C_Status='1',1,0)) AS Normal, SUM(if(C_Status='2',1,0)) AS Abnormal, count(C_ID) as Total from TISP_Record WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= D_CreateOn GROUP BY DATE_FORMAT(D_CreateOn, '%Y%m%d')";
  428. string sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='1',1,0)) AS Normal, SUM(if(C_Status='2',1,0)) AS Abnormal, count(C_ID) as Total from(
  429. SELECT
  430. DATE_SUB(CURDATE(), INTERVAL 31 day) AS click_date UNION ALL
  431. SELECT
  432. DATE_SUB(CURDATE(), INTERVAL 30 day) AS click_date UNION ALL
  433. SELECT
  434. DATE_SUB(CURDATE(), INTERVAL 29 day) AS click_date UNION ALL
  435. SELECT
  436. DATE_SUB(CURDATE(), INTERVAL 28 day) AS click_date UNION ALL
  437. SELECT
  438. DATE_SUB(CURDATE(), INTERVAL 27 day) AS click_date UNION ALL
  439. SELECT
  440. DATE_SUB(CURDATE(), INTERVAL 26 day) AS click_date UNION ALL
  441. SELECT
  442. DATE_SUB(CURDATE(), INTERVAL 25 day) AS click_date UNION ALL
  443. SELECT
  444. DATE_SUB(CURDATE(), INTERVAL 24 day) AS click_date UNION ALL
  445. SELECT
  446. DATE_SUB(CURDATE(), INTERVAL 23 day) AS click_date UNION ALL
  447. SELECT
  448. DATE_SUB(CURDATE(), INTERVAL 22 day) AS click_date UNION ALL
  449. SELECT
  450. DATE_SUB(CURDATE(), INTERVAL 21 day) AS click_date UNION ALL
  451. SELECT
  452. DATE_SUB(CURDATE(), INTERVAL 20 day) AS click_date UNION ALL
  453. SELECT
  454. DATE_SUB(CURDATE(), INTERVAL 19 day) AS click_date UNION ALL
  455. SELECT
  456. DATE_SUB(CURDATE(), INTERVAL 18 day) AS click_date UNION ALL
  457. SELECT
  458. DATE_SUB(CURDATE(), INTERVAL 17 day) AS click_date UNION ALL
  459. SELECT
  460. DATE_SUB(CURDATE(), INTERVAL 16 day) AS click_date UNION ALL
  461. SELECT
  462. DATE_SUB(CURDATE(), INTERVAL 15 day) AS click_date UNION ALL
  463. SELECT
  464. DATE_SUB(CURDATE(), INTERVAL 14 day) AS click_date UNION ALL
  465. SELECT
  466. DATE_SUB(CURDATE(), INTERVAL 13 day) AS click_date UNION ALL
  467. SELECT
  468. DATE_SUB(CURDATE(), INTERVAL 12 day) AS click_date UNION ALL
  469. SELECT
  470. DATE_SUB(CURDATE(), INTERVAL 11 day) AS click_date UNION ALL
  471. SELECT
  472. DATE_SUB(CURDATE(), INTERVAL 10 day) AS click_date UNION ALL
  473. SELECT
  474. DATE_SUB(CURDATE(), INTERVAL 9 day) AS click_date UNION ALL
  475. SELECT
  476. DATE_SUB(CURDATE(), INTERVAL 8 day) AS click_date UNION ALL
  477. SELECT
  478. DATE_SUB(CURDATE(), INTERVAL 7 day) AS click_date UNION ALL
  479. SELECT
  480. DATE_SUB(CURDATE(), INTERVAL 6 day) AS click_date UNION ALL
  481. SELECT
  482. DATE_SUB(CURDATE(), INTERVAL 5 day) AS click_date UNION ALL
  483. SELECT
  484. DATE_SUB(CURDATE(), INTERVAL 4 day) AS click_date UNION ALL
  485. SELECT
  486. DATE_SUB(CURDATE(), INTERVAL 3 day) AS click_date UNION ALL
  487. SELECT
  488. DATE_SUB(CURDATE(), INTERVAL 2 day) AS click_date UNION ALL
  489. SELECT
  490. DATE_SUB(CURDATE(), INTERVAL 1 day) AS click_date UNION ALL
  491. SELECT
  492. DATE_SUB(CURDATE(), INTERVAL 0 day) AS click_date
  493. ) A LEFT JOIN TISP_Record B ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')";
  494. sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='1',1,0)) AS Normal, SUM(if(C_Status='2',1,0)) AS Abnormal, count(C_ID) as Total from(
  495. SELECT
  496. DATE_SUB(CURDATE(), INTERVAL 31 day) AS click_date UNION ALL
  497. SELECT
  498. DATE_SUB(CURDATE(), INTERVAL 30 day) AS click_date UNION ALL
  499. SELECT
  500. DATE_SUB(CURDATE(), INTERVAL 29 day) AS click_date UNION ALL
  501. SELECT
  502. DATE_SUB(CURDATE(), INTERVAL 28 day) AS click_date UNION ALL
  503. SELECT
  504. DATE_SUB(CURDATE(), INTERVAL 27 day) AS click_date UNION ALL
  505. SELECT
  506. DATE_SUB(CURDATE(), INTERVAL 26 day) AS click_date UNION ALL
  507. SELECT
  508. DATE_SUB(CURDATE(), INTERVAL 25 day) AS click_date UNION ALL
  509. SELECT
  510. DATE_SUB(CURDATE(), INTERVAL 24 day) AS click_date UNION ALL
  511. SELECT
  512. DATE_SUB(CURDATE(), INTERVAL 23 day) AS click_date UNION ALL
  513. SELECT
  514. DATE_SUB(CURDATE(), INTERVAL 22 day) AS click_date UNION ALL
  515. SELECT
  516. DATE_SUB(CURDATE(), INTERVAL 21 day) AS click_date UNION ALL
  517. SELECT
  518. DATE_SUB(CURDATE(), INTERVAL 20 day) AS click_date UNION ALL
  519. SELECT
  520. DATE_SUB(CURDATE(), INTERVAL 19 day) AS click_date UNION ALL
  521. SELECT
  522. DATE_SUB(CURDATE(), INTERVAL 18 day) AS click_date UNION ALL
  523. SELECT
  524. DATE_SUB(CURDATE(), INTERVAL 17 day) AS click_date UNION ALL
  525. SELECT
  526. DATE_SUB(CURDATE(), INTERVAL 16 day) AS click_date UNION ALL
  527. SELECT
  528. DATE_SUB(CURDATE(), INTERVAL 15 day) AS click_date UNION ALL
  529. SELECT
  530. DATE_SUB(CURDATE(), INTERVAL 14 day) AS click_date UNION ALL
  531. SELECT
  532. DATE_SUB(CURDATE(), INTERVAL 13 day) AS click_date UNION ALL
  533. SELECT
  534. DATE_SUB(CURDATE(), INTERVAL 12 day) AS click_date UNION ALL
  535. SELECT
  536. DATE_SUB(CURDATE(), INTERVAL 11 day) AS click_date UNION ALL
  537. SELECT
  538. DATE_SUB(CURDATE(), INTERVAL 10 day) AS click_date UNION ALL
  539. SELECT
  540. DATE_SUB(CURDATE(), INTERVAL 9 day) AS click_date UNION ALL
  541. SELECT
  542. DATE_SUB(CURDATE(), INTERVAL 8 day) AS click_date UNION ALL
  543. SELECT
  544. DATE_SUB(CURDATE(), INTERVAL 7 day) AS click_date UNION ALL
  545. SELECT
  546. DATE_SUB(CURDATE(), INTERVAL 6 day) AS click_date UNION ALL
  547. SELECT
  548. DATE_SUB(CURDATE(), INTERVAL 5 day) AS click_date UNION ALL
  549. SELECT
  550. DATE_SUB(CURDATE(), INTERVAL 4 day) AS click_date UNION ALL
  551. SELECT
  552. DATE_SUB(CURDATE(), INTERVAL 3 day) AS click_date UNION ALL
  553. SELECT
  554. DATE_SUB(CURDATE(), INTERVAL 2 day) AS click_date UNION ALL
  555. SELECT
  556. DATE_SUB(CURDATE(), INTERVAL 1 day) AS click_date UNION ALL
  557. SELECT
  558. DATE_SUB(CURDATE(), INTERVAL 0 day) AS click_date
  559. ) A LEFT JOIN (
  560. SELECT B.* FROM TISP_Spot A
  561. INNER JOIN TISP_Record B ON B.C_SpotCode = A.C_Code WHERE A.C_StoreCode = '51031240-4c88-43e1-a18b-63bc03e70a8c' AND A.C_Status = '1'
  562. ) B ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')";
  563. IEnumerable<TispRecord30DaysStatistics> recordlist;
  564. recordlist = EntityFrameworkCoreExtensions.GetList<TispRecord30DaysStatistics>(DbContext.Database, sql, null);
  565. return Task.FromResult(recordlist);
  566. }
  567. public Task<IEnumerable<AlarmRecovery7DaysStatistics>> GetAlarmRecovery7DaysStatisticsAsync()
  568. {
  569. string sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='0',1,0)) AS Alarm, SUM(if(C_Status='2',1,0)) AS Recovery From(
  570. SELECT
  571. DATE_SUB(CURDATE(), INTERVAL 7 DAY) AS click_date UNION ALL
  572. SELECT
  573. DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS click_date UNION ALL
  574. SELECT
  575. DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS click_date UNION ALL
  576. SELECT
  577. DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS click_date UNION ALL
  578. SELECT
  579. DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS click_date UNION ALL
  580. SELECT
  581. DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS click_date UNION ALL
  582. SELECT
  583. DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS click_date UNION ALL
  584. SELECT
  585. DATE_SUB(CURDATE(), INTERVAL 0 DAY) AS click_date
  586. ) A LEFT JOIN TISP_RecordItem B ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')";
  587. IEnumerable<AlarmRecovery7DaysStatistics> recordlist;
  588. recordlist = EntityFrameworkCoreExtensions.GetList<AlarmRecovery7DaysStatistics>(DbContext.Database, sql, null);
  589. return Task.FromResult(recordlist);
  590. }
  591. public Task<TodaySpotStatistics> GetTodaySpotStatisticsAsync()
  592. {
  593. string sql = "SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Abnormal FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d')";
  594. TodaySpotStatistics record;
  595. record = EntityFrameworkCoreExtensions.SqlQuery<TodaySpotStatistics>(DbContext.Database, sql, null).FirstOrDefault();
  596. return Task.FromResult(record);
  597. }
  598. public Task<TodaySpotContentStatistics> GetTodaySpotContentStatisticsAsync()
  599. {
  600. string sql = "SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,CASE WHEN ISNULL(SUM(if(C_Status='0',1,0))) THEN 0 ELSE SUM(if(C_Status='0',1,0)) END AS Abnormal ,CASE WHEN ISNULL(SUM(if(C_Status='3',1,0))) THEN 0 ELSE SUM(if(C_Status='3',1,0)) END AS ConfirmAbnormal ,CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Recovery FROM TISP_RecordItem WHERE DATE_FORMAT(D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d')";
  601. TodaySpotContentStatistics record;
  602. record = EntityFrameworkCoreExtensions.SqlQuery<TodaySpotContentStatistics>(DbContext.Database, sql, null).FirstOrDefault();
  603. return Task.FromResult(record);
  604. }
  605. public Task<IEnumerable<Record12MonthStatistics>> GetRecord12MonthStatisticsAsync()
  606. {
  607. string sql = @"SELECT date_format(click_date,'%Y%m') AS SpecificMonth, SUM(if(ISNULL(C_Status) ,0,1)) AS RecordCount from(
  608. SELECT
  609. DATE_SUB(CURDATE(), INTERVAL 12 month) AS click_date UNION ALL
  610. SELECT
  611. DATE_SUB(CURDATE(), INTERVAL 11 month) AS click_date UNION ALL
  612. SELECT
  613. DATE_SUB(CURDATE(), INTERVAL 10 month) AS click_date UNION ALL
  614. SELECT
  615. DATE_SUB(CURDATE(), INTERVAL 9 month) AS click_date UNION ALL
  616. SELECT
  617. DATE_SUB(CURDATE(), INTERVAL 8 month) AS click_date UNION ALL
  618. SELECT
  619. DATE_SUB(CURDATE(), INTERVAL 7 month) AS click_date UNION ALL
  620. SELECT
  621. DATE_SUB(CURDATE(), INTERVAL 6 month) AS click_date UNION ALL
  622. SELECT
  623. DATE_SUB(CURDATE(), INTERVAL 5 month) AS click_date UNION ALL
  624. SELECT
  625. DATE_SUB(CURDATE(), INTERVAL 4 month) AS click_date UNION ALL
  626. SELECT
  627. DATE_SUB(CURDATE(), INTERVAL 3 month) AS click_date UNION ALL
  628. SELECT
  629. DATE_SUB(CURDATE(), INTERVAL 2 month) AS click_date UNION ALL
  630. SELECT
  631. DATE_SUB(CURDATE(), INTERVAL 1 month) AS click_date UNION ALL
  632. SELECT
  633. DATE_SUB(CURDATE(), INTERVAL 0 month) AS click_date
  634. ) A LEFT JOIN TISP_Record B ON DATE_FORMAT(A.click_date, '%Y-%m') = DATE_FORMAT(B.D_CreateOn, '%Y-%m') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m')";
  635. IEnumerable<Record12MonthStatistics> recordlist;
  636. recordlist = EntityFrameworkCoreExtensions.GetList<Record12MonthStatistics>(DbContext.Database, sql, null);
  637. return Task.FromResult(recordlist);
  638. }
  639. public Task<int> GetAllTodaySpotRecordCountAsync(string storeCode)
  640. {
  641. MySqlConnector.MySqlParameter[] parameters = new[] {
  642. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  643. string sql = "SELECT count(DISTINCT B.C_SpotCode ) FROM TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) ";
  644. object result = EntityFrameworkCoreExtensions.SqlQuery(DbContext.Database, sql, parameters).Rows[0][0];
  645. return Task.FromResult(int.Parse(result.ToString()));
  646. }
  647. public Task<int> GetAllTodayNotSpotRecordCountAsync(string storeCode)
  648. {
  649. MySqlConnector.MySqlParameter[] parameters = new[] {
  650. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  651. string sql = "SELECT count(C_Code) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A LEFT JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  652. sql = @"SELECT count(C_Code) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  653. FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A
  654. INNER JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode
  655. WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode
  656. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  657. sql = @"SELECT count(C_Code) FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  658. FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A
  659. INNER JOIN (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode
  660. WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) GROUP BY C.C_Code,B.C_Status) B ON A.C_Code = B.C_SpotCode
  661. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL";
  662. object result = EntityFrameworkCoreExtensions.SqlQuery(DbContext.Database, sql, parameters).Rows[0][0];
  663. return Task.FromResult(int.Parse(result.ToString()));
  664. }
  665. public Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodaySpotRecordsAsync(Guid id, string storeCode)
  666. {
  667. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("userId", id), new MySqlConnector.MySqlParameter("storeCode", storeCode) };
  668. string sql = string.Empty;
  669. //string sql = "SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY) order by D_CreateOn desc limit 1) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL";
  670. if (id == Guid.Empty)
  671. {
  672. sql = "SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT * FROM TISP_Spot) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL order by A.D_CreateOn desc) AA WHERE C_StoreCode = @storeCode GROUP BY C_Code ORDER BY D_CreateOn DESC";
  673. sql = @"SELECT * FROM (
  674. SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  675. FROM (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B
  676. LEFT JOIN (SELECT * FROM TISP_Spot WHERE C_StoreCode = @storeCode AND C_Status = '1') A
  677. ON A.C_Code = B.C_SpotCode
  678. LEFT JOIN TSYS_User C
  679. ON C.C_UserID = B.C_CreateBy
  680. order by B.D_CreateOn desc) AA
  681. GROUP BY C_Code ORDER BY RecordDateTime DESC";
  682. sql = @"
  683. SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  684. FROM (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B
  685. LEFT JOIN (SELECT * FROM TISP_Spot WHERE C_StoreCode = @storeCode AND C_Status = '1') A
  686. ON A.C_Code = B.C_SpotCode
  687. LEFT JOIN TSYS_User C
  688. ON C.C_UserID = B.C_CreateBy
  689. order by B.D_CreateOn desc";
  690. }
  691. else
  692. {
  693. sql = "SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy WHERE B.C_ID IS NOT NULL order by A.D_CreateOn desc) AA WHERE C_StoreCode = @storeCode GROUP BY C_Code ORDER BY D_CreateOn DESC";
  694. sql = @"SELECT * FROM (
  695. SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  696. FROM (SELECT * FROM TISP_Record WHERE C_CreateBy = @userId AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B
  697. LEFT JOIN (SELECT * FROM TISP_Spot WHERE C_StoreCode = @storeCode AND C_Status = '1') A
  698. ON A.C_Code = B.C_SpotCode
  699. LEFT JOIN TSYS_User C
  700. ON C.C_UserID = B.C_CreateBy
  701. order by B.D_CreateOn desc) AA
  702. GROUP BY C_Code ORDER BY RecordDateTime DESC";
  703. sql = @"
  704. SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName
  705. FROM (SELECT * FROM TISP_Record WHERE C_CreateBy = @userId AND DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B
  706. INNER JOIN (SELECT * FROM TISP_Spot WHERE C_StoreCode = @storeCode AND C_Status = '1') A
  707. ON A.C_Code = B.C_SpotCode
  708. LEFT JOIN TSYS_User C
  709. ON C.C_UserID = B.C_CreateBy
  710. order by B.D_CreateOn desc";
  711. }
  712. IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  713. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  714. return Task.FromResult(spotRecordlist);
  715. }
  716. public Task<IEnumerable<AllSpotRecordViewModel>> GetUserTodayNotSpotRecordsAsync(Guid id, string storeCode)
  717. {
  718. MySqlConnector.MySqlParameter[] parameters = new[] {
  719. new MySqlConnector.MySqlParameter("userId", id),
  720. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  721. string sql = string.Empty;
  722. if (id == Guid.Empty)
  723. {
  724. sql = "SELECT * FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL AND C_StoreCode = @storeCode";
  725. sql = @"SELECT * FROM
  726. (SELECT * FROM
  727. (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM
  728. (SELECT p.* FROM TISP_SpotContent c LEFT JOIN TISP_Spot p on (p.C_Code=c.C_SpotCode) WHERE p.C_StoreCode =@storeCode AND p.C_Status = '1') A
  729. LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode
  730. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL ";
  731. }
  732. else
  733. {
  734. sql = "SELECT * FROM (SELECT * FROM (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId) A LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL AND C_StoreCode = @storeCode";
  735. sql = @"SELECT * FROM
  736. (SELECT * FROM
  737. (SELECT A.*,B.C_ID AS RecordCode,B.D_CreateOn AS RecordDateTime,B.C_Status AS RecordStatus,C.C_Name AS RecordUserName FROM
  738. (SELECT A1.* FROM TISP_SpotUser A0,TISP_Spot A1 WHERE A0.C_SpotCode = A1.C_Code AND A0.C_UserCode = @userId AND A1.C_StoreCode = @storeCode AND A1.C_Status = '1') A
  739. LEFT JOIN (SELECT * FROM TISP_Record WHERE DATE_FORMAT(D_CreateOn,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL 0 DAY)) B ON A.C_Code = B.C_SpotCode
  740. LEFT JOIN TSYS_User C ON C.C_UserID = B.C_CreateBy) AA GROUP BY C_Code) BB WHERE RecordCode IS NULL ";
  741. }
  742. IEnumerable<AllSpotRecordViewModel> spotRecordlist;
  743. spotRecordlist = EntityFrameworkCoreExtensions.GetList<AllSpotRecordViewModel>(DbContext.Database, sql, parameters);
  744. return Task.FromResult(spotRecordlist);
  745. }
  746. public Task<IEnumerable<TispRecord30DaysStatistics>> GetRecords30DaysStatisticsAsync(string storeCode)
  747. {
  748. MySqlConnector.MySqlParameter[] parameters = new[] {
  749. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  750. string sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='1',1,0)) AS Normal, SUM(if(C_Status='2',1,0)) AS Abnormal, count(C_ID) as Total from(
  751. SELECT
  752. DATE_SUB(CURDATE(), INTERVAL 31 day) AS click_date UNION ALL
  753. SELECT
  754. DATE_SUB(CURDATE(), INTERVAL 30 day) AS click_date UNION ALL
  755. SELECT
  756. DATE_SUB(CURDATE(), INTERVAL 29 day) AS click_date UNION ALL
  757. SELECT
  758. DATE_SUB(CURDATE(), INTERVAL 28 day) AS click_date UNION ALL
  759. SELECT
  760. DATE_SUB(CURDATE(), INTERVAL 27 day) AS click_date UNION ALL
  761. SELECT
  762. DATE_SUB(CURDATE(), INTERVAL 26 day) AS click_date UNION ALL
  763. SELECT
  764. DATE_SUB(CURDATE(), INTERVAL 25 day) AS click_date UNION ALL
  765. SELECT
  766. DATE_SUB(CURDATE(), INTERVAL 24 day) AS click_date UNION ALL
  767. SELECT
  768. DATE_SUB(CURDATE(), INTERVAL 23 day) AS click_date UNION ALL
  769. SELECT
  770. DATE_SUB(CURDATE(), INTERVAL 22 day) AS click_date UNION ALL
  771. SELECT
  772. DATE_SUB(CURDATE(), INTERVAL 21 day) AS click_date UNION ALL
  773. SELECT
  774. DATE_SUB(CURDATE(), INTERVAL 20 day) AS click_date UNION ALL
  775. SELECT
  776. DATE_SUB(CURDATE(), INTERVAL 19 day) AS click_date UNION ALL
  777. SELECT
  778. DATE_SUB(CURDATE(), INTERVAL 18 day) AS click_date UNION ALL
  779. SELECT
  780. DATE_SUB(CURDATE(), INTERVAL 17 day) AS click_date UNION ALL
  781. SELECT
  782. DATE_SUB(CURDATE(), INTERVAL 16 day) AS click_date UNION ALL
  783. SELECT
  784. DATE_SUB(CURDATE(), INTERVAL 15 day) AS click_date UNION ALL
  785. SELECT
  786. DATE_SUB(CURDATE(), INTERVAL 14 day) AS click_date UNION ALL
  787. SELECT
  788. DATE_SUB(CURDATE(), INTERVAL 13 day) AS click_date UNION ALL
  789. SELECT
  790. DATE_SUB(CURDATE(), INTERVAL 12 day) AS click_date UNION ALL
  791. SELECT
  792. DATE_SUB(CURDATE(), INTERVAL 11 day) AS click_date UNION ALL
  793. SELECT
  794. DATE_SUB(CURDATE(), INTERVAL 10 day) AS click_date UNION ALL
  795. SELECT
  796. DATE_SUB(CURDATE(), INTERVAL 9 day) AS click_date UNION ALL
  797. SELECT
  798. DATE_SUB(CURDATE(), INTERVAL 8 day) AS click_date UNION ALL
  799. SELECT
  800. DATE_SUB(CURDATE(), INTERVAL 7 day) AS click_date UNION ALL
  801. SELECT
  802. DATE_SUB(CURDATE(), INTERVAL 6 day) AS click_date UNION ALL
  803. SELECT
  804. DATE_SUB(CURDATE(), INTERVAL 5 day) AS click_date UNION ALL
  805. SELECT
  806. DATE_SUB(CURDATE(), INTERVAL 4 day) AS click_date UNION ALL
  807. SELECT
  808. DATE_SUB(CURDATE(), INTERVAL 3 day) AS click_date UNION ALL
  809. SELECT
  810. DATE_SUB(CURDATE(), INTERVAL 2 day) AS click_date UNION ALL
  811. SELECT
  812. DATE_SUB(CURDATE(), INTERVAL 1 day) AS click_date UNION ALL
  813. SELECT
  814. DATE_SUB(CURDATE(), INTERVAL 0 day) AS click_date
  815. ) A LEFT JOIN (SELECT B.D_CreateOn,B.C_Status,B.C_ID from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode) B
  816. ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')
  817. ";
  818. sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='1',1,0)) AS Normal, SUM(if(C_Status='2',1,0)) AS Abnormal, count(C_ID) as Total from(
  819. SELECT
  820. DATE_SUB(CURDATE(), INTERVAL 31 day) AS click_date UNION ALL
  821. SELECT
  822. DATE_SUB(CURDATE(), INTERVAL 30 day) AS click_date UNION ALL
  823. SELECT
  824. DATE_SUB(CURDATE(), INTERVAL 29 day) AS click_date UNION ALL
  825. SELECT
  826. DATE_SUB(CURDATE(), INTERVAL 28 day) AS click_date UNION ALL
  827. SELECT
  828. DATE_SUB(CURDATE(), INTERVAL 27 day) AS click_date UNION ALL
  829. SELECT
  830. DATE_SUB(CURDATE(), INTERVAL 26 day) AS click_date UNION ALL
  831. SELECT
  832. DATE_SUB(CURDATE(), INTERVAL 25 day) AS click_date UNION ALL
  833. SELECT
  834. DATE_SUB(CURDATE(), INTERVAL 24 day) AS click_date UNION ALL
  835. SELECT
  836. DATE_SUB(CURDATE(), INTERVAL 23 day) AS click_date UNION ALL
  837. SELECT
  838. DATE_SUB(CURDATE(), INTERVAL 22 day) AS click_date UNION ALL
  839. SELECT
  840. DATE_SUB(CURDATE(), INTERVAL 21 day) AS click_date UNION ALL
  841. SELECT
  842. DATE_SUB(CURDATE(), INTERVAL 20 day) AS click_date UNION ALL
  843. SELECT
  844. DATE_SUB(CURDATE(), INTERVAL 19 day) AS click_date UNION ALL
  845. SELECT
  846. DATE_SUB(CURDATE(), INTERVAL 18 day) AS click_date UNION ALL
  847. SELECT
  848. DATE_SUB(CURDATE(), INTERVAL 17 day) AS click_date UNION ALL
  849. SELECT
  850. DATE_SUB(CURDATE(), INTERVAL 16 day) AS click_date UNION ALL
  851. SELECT
  852. DATE_SUB(CURDATE(), INTERVAL 15 day) AS click_date UNION ALL
  853. SELECT
  854. DATE_SUB(CURDATE(), INTERVAL 14 day) AS click_date UNION ALL
  855. SELECT
  856. DATE_SUB(CURDATE(), INTERVAL 13 day) AS click_date UNION ALL
  857. SELECT
  858. DATE_SUB(CURDATE(), INTERVAL 12 day) AS click_date UNION ALL
  859. SELECT
  860. DATE_SUB(CURDATE(), INTERVAL 11 day) AS click_date UNION ALL
  861. SELECT
  862. DATE_SUB(CURDATE(), INTERVAL 10 day) AS click_date UNION ALL
  863. SELECT
  864. DATE_SUB(CURDATE(), INTERVAL 9 day) AS click_date UNION ALL
  865. SELECT
  866. DATE_SUB(CURDATE(), INTERVAL 8 day) AS click_date UNION ALL
  867. SELECT
  868. DATE_SUB(CURDATE(), INTERVAL 7 day) AS click_date UNION ALL
  869. SELECT
  870. DATE_SUB(CURDATE(), INTERVAL 6 day) AS click_date UNION ALL
  871. SELECT
  872. DATE_SUB(CURDATE(), INTERVAL 5 day) AS click_date UNION ALL
  873. SELECT
  874. DATE_SUB(CURDATE(), INTERVAL 4 day) AS click_date UNION ALL
  875. SELECT
  876. DATE_SUB(CURDATE(), INTERVAL 3 day) AS click_date UNION ALL
  877. SELECT
  878. DATE_SUB(CURDATE(), INTERVAL 2 day) AS click_date UNION ALL
  879. SELECT
  880. DATE_SUB(CURDATE(), INTERVAL 1 day) AS click_date UNION ALL
  881. SELECT
  882. DATE_SUB(CURDATE(), INTERVAL 0 day) AS click_date
  883. ) A LEFT JOIN (
  884. SELECT B.* FROM TISP_Spot A
  885. INNER JOIN TISP_Record B ON B.C_SpotCode = A.C_Code WHERE A.C_StoreCode = @storeCode AND A.C_Status = '1'
  886. ) B ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')";
  887. IEnumerable<TispRecord30DaysStatistics> recordlist;
  888. recordlist = EntityFrameworkCoreExtensions.GetList<TispRecord30DaysStatistics>(DbContext.Database, sql, parameters);
  889. return Task.FromResult(recordlist);
  890. }
  891. public Task<IEnumerable<AlarmRecovery7DaysStatistics>> GetAlarmRecovery7DaysStatisticsAsync(string storeCode)
  892. {
  893. MySqlConnector.MySqlParameter[] parameters = new[] {
  894. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  895. string sql = @"SELECT date_format(click_date,'%Y%m%d') AS SpecificDay, SUM(if(C_Status='0',1,0)) AS Alarm, SUM(if(C_Status='2',1,0)) AS Recovery From(
  896. SELECT
  897. DATE_SUB(CURDATE(), INTERVAL 7 DAY) AS click_date UNION ALL
  898. SELECT
  899. DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS click_date UNION ALL
  900. SELECT
  901. DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS click_date UNION ALL
  902. SELECT
  903. DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS click_date UNION ALL
  904. SELECT
  905. DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS click_date UNION ALL
  906. SELECT
  907. DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS click_date UNION ALL
  908. SELECT
  909. DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS click_date UNION ALL
  910. SELECT
  911. DATE_SUB(CURDATE(), INTERVAL 0 DAY) AS click_date
  912. ) A LEFT JOIN (SELECT A.D_CreateOn,A.C_Status FROM TISP_RecordItem A LEFT JOIN TISP_Record B ON B.C_ID = A.C_RecordCode LEFT JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode = @storeCode AND C.C_Status = '1' ) B
  913. ON DATE_FORMAT(A.click_date, '%Y-%m-%d') = DATE_FORMAT(B.D_CreateOn, '%Y-%m-%d') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m-%d')";
  914. IEnumerable<AlarmRecovery7DaysStatistics> recordlist;
  915. recordlist = EntityFrameworkCoreExtensions.GetList<AlarmRecovery7DaysStatistics>(DbContext.Database, sql, parameters);
  916. return Task.FromResult(recordlist);
  917. }
  918. public Task<TodaySpotStatistics> GetTodaySpotStatisticsAsync(string storeCode)
  919. {
  920. MySqlConnector.MySqlParameter[] parameters = new[] {
  921. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  922. string sql = "SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Abnormal FROM (SELECT B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1') A WHERE DATE_FORMAT(D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d')";
  923. sql = @"SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,
  924. CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Abnormal
  925. FROM (SELECT C.C_Code, B.* from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode
  926. WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1' AND DATE_FORMAT(B.D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d') GROUP BY C.C_Code, B.C_Status) A
  927. ";
  928. TodaySpotStatistics record;
  929. record = EntityFrameworkCoreExtensions.SqlQuery<TodaySpotStatistics>(DbContext.Database, sql, parameters).FirstOrDefault();
  930. return Task.FromResult(record);
  931. }
  932. public Task<TodaySpotContentStatistics> GetTodaySpotContentStatisticsAsync(string storeCode)
  933. {
  934. MySqlConnector.MySqlParameter[] parameters = new[] {
  935. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  936. string sql = "SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,CASE WHEN ISNULL(SUM(if(C_Status='0',1,0))) THEN 0 ELSE SUM(if(C_Status='0',1,0)) END AS Abnormal ,CASE WHEN ISNULL(SUM(if(C_Status='3',1,0))) THEN 0 ELSE SUM(if(C_Status='3',1,0)) END AS ConfirmAbnormal ,CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Recovery FROM (SELECT A.D_CreateOn,A.C_Status FROM TISP_RecordItem A LEFT JOIN TISP_Record B ON B.C_ID = A.C_RecordCode LEFT JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1')A WHERE DATE_FORMAT(D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d')";
  937. sql = @"SELECT CASE WHEN ISNULL(SUM(if(C_Status='1',1,0))) THEN 0 ELSE SUM(if(C_Status='1',1,0)) END AS Normal,
  938. CASE WHEN ISNULL(SUM(if(C_Status='0',1,0))) THEN 0 ELSE SUM(if(C_Status='0',1,0)) END AS Abnormal ,
  939. CASE WHEN ISNULL(SUM(if(C_Status='3',1,0))) THEN 0 ELSE SUM(if(C_Status='3',1,0)) END AS ConfirmAbnormal ,
  940. CASE WHEN ISNULL(SUM(if(C_Status='2',1,0))) THEN 0 ELSE SUM(if(C_Status='2',1,0)) END AS Recovery
  941. FROM (
  942. SELECT A.D_CreateOn,A.C_Status FROM TISP_RecordItem A LEFT JOIN TISP_Record B ON B.C_ID = A.C_RecordCode
  943. LEFT JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1'
  944. AND DATE_FORMAT(A.D_CreateOn, '%Y%m%d') = DATE_FORMAT(CURDATE(), '%Y%m%d')
  945. )A
  946. ";
  947. TodaySpotContentStatistics record;
  948. record = EntityFrameworkCoreExtensions.SqlQuery<TodaySpotContentStatistics>(DbContext.Database, sql, parameters).FirstOrDefault();
  949. return Task.FromResult(record);
  950. }
  951. public Task<IEnumerable<Record12MonthStatistics>> GetRecord12MonthStatisticsAsync(string storeCode)
  952. {
  953. MySqlConnector.MySqlParameter[] parameters = new[] {
  954. new MySqlConnector.MySqlParameter("storeCode", storeCode)};
  955. string sql = @"SELECT date_format(click_date,'%m') AS SpecificMonth, SUM(if(ISNULL(C_Status) ,0,1)) AS RecordCount from(
  956. SELECT
  957. DATE_SUB(CURDATE(), INTERVAL 12 month) AS click_date UNION ALL
  958. SELECT
  959. DATE_SUB(CURDATE(), INTERVAL 11 month) AS click_date UNION ALL
  960. SELECT
  961. DATE_SUB(CURDATE(), INTERVAL 10 month) AS click_date UNION ALL
  962. SELECT
  963. DATE_SUB(CURDATE(), INTERVAL 9 month) AS click_date UNION ALL
  964. SELECT
  965. DATE_SUB(CURDATE(), INTERVAL 8 month) AS click_date UNION ALL
  966. SELECT
  967. DATE_SUB(CURDATE(), INTERVAL 7 month) AS click_date UNION ALL
  968. SELECT
  969. DATE_SUB(CURDATE(), INTERVAL 6 month) AS click_date UNION ALL
  970. SELECT
  971. DATE_SUB(CURDATE(), INTERVAL 5 month) AS click_date UNION ALL
  972. SELECT
  973. DATE_SUB(CURDATE(), INTERVAL 4 month) AS click_date UNION ALL
  974. SELECT
  975. DATE_SUB(CURDATE(), INTERVAL 3 month) AS click_date UNION ALL
  976. SELECT
  977. DATE_SUB(CURDATE(), INTERVAL 2 month) AS click_date UNION ALL
  978. SELECT
  979. DATE_SUB(CURDATE(), INTERVAL 1 month) AS click_date UNION ALL
  980. SELECT
  981. DATE_SUB(CURDATE(), INTERVAL 0 month) AS click_date
  982. ) A LEFT JOIN (SELECT B.D_CreateOn,B.C_Status,B.C_ID from TISP_Record B INNER JOIN TISP_Spot C ON C.C_Code = B.C_SpotCode WHERE C.C_StoreCode =@storeCode AND C.C_Status = '1') B ON DATE_FORMAT(A.click_date, '%Y-%m') = DATE_FORMAT(B.D_CreateOn, '%Y-%m') GROUP BY DATE_FORMAT(A.click_date, '%Y-%m')";
  983. IEnumerable<Record12MonthStatistics> recordlist;
  984. recordlist = EntityFrameworkCoreExtensions.GetList<Record12MonthStatistics>(DbContext.Database, sql, parameters);
  985. return Task.FromResult(recordlist);
  986. }
  987. }
  988. }