StatesManager.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Threading.Tasks;
  7. using System.Web.Mvc;
  8. using Abp.Dependency;
  9. using Abp.Domain.Repositories;
  10. using Abp.Runtime.Caching;
  11. using WeApp.BaseInfo;
  12. using IwbZero;
  13. namespace WeApp.CommonManager.States
  14. {
  15. public class StatesManager : IStatesManager, ISingletonDependency
  16. {
  17. private ICacheManager CacheManager { get; set; }
  18. private IRepository<SysState> Repository { get; set; }
  19. public StatesManager(
  20. ICacheManager cacheManage,
  21. IRepository<SysState> repository)
  22. {
  23. CacheManager = cacheManage;
  24. Repository = repository;
  25. }
  26. #region GetSelectList
  27. #region CodeFilter
  28. public async Task<List<SelectListItem>> GetSelectListAsync(QueryStateDisplayValue input, params string[] codeFilter)
  29. {
  30. return await GetSelectListAsync(input.TableName, input.ColumnName, codeFilter);
  31. }
  32. public async Task<List<SelectListItem>> GetSelectListAsync(string tableName, string columnName, params string[] codeFilter)
  33. {
  34. var sList = new List<SelectListItem>();
  35. var list = await GetStateListAsync(tableName, columnName, codeFilter);
  36. foreach (var l in list)
  37. {
  38. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  39. }
  40. return sList;
  41. }
  42. public async Task<string> GetSelectListStrAsync(QueryStateDisplayValue input, params string[] codeFilter)
  43. {
  44. return await GetSelectListStrAsync(input.TableName, input.ColumnName, codeFilter);
  45. }
  46. public async Task<string> GetSelectListStrAsync(string tableName, string columnName, params string[] codeFilter)
  47. {
  48. var options = "";
  49. var list = await GetStateListAsync(tableName, columnName, codeFilter);
  50. foreach (var l in list)
  51. {
  52. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  53. }
  54. return options;
  55. }
  56. #endregion
  57. #region CodeFilterReversal
  58. public async Task<List<SelectListItem>> GetSelectListReversalAsync(QueryStateDisplayValue input, params string[] codeFilter)
  59. {
  60. return await GetSelectListReversalAsync(input.TableName, input.ColumnName, codeFilter);
  61. }
  62. public async Task<List<SelectListItem>> GetSelectListReversalAsync(string tableName, string columnName, params string[] codeFilter)
  63. {
  64. var sList = new List<SelectListItem>();
  65. var list = await GetStateListReversalAsync(tableName, columnName, codeFilter);
  66. foreach (var l in list)
  67. {
  68. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  69. }
  70. return sList;
  71. }
  72. public async Task<string> GetSelectListStrsReversalAsync(QueryStateDisplayValue input, params string[] codeFilter)
  73. {
  74. return await GetSelectListStrsReversalAsync(input.TableName, input.ColumnName, codeFilter);
  75. }
  76. public async Task<string> GetSelectListStrsReversalAsync(string tableName, string columnName, params string[] codeFilter)
  77. {
  78. var options = "";
  79. var list = await GetStateListReversalAsync(tableName, columnName, codeFilter);
  80. foreach (var l in list)
  81. {
  82. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  83. }
  84. return options;
  85. }
  86. #endregion
  87. #region Exp
  88. public async Task<List<SelectListItem>> GetSelectListAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  89. {
  90. return await GetSelectListAsync(input.TableName, input.ColumnName, exp);
  91. }
  92. public async Task<List<SelectListItem>> GetSelectListAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  93. {
  94. var sList = new List<SelectListItem>();
  95. var list = await GetStateListAsync(tableName, columnName, exp);
  96. foreach (var l in list)
  97. {
  98. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  99. }
  100. return sList;
  101. }
  102. public async Task<string> GetSelectListStrAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  103. {
  104. return await GetSelectListStrAsync(input.TableName, input.ColumnName, exp);
  105. }
  106. public async Task<string> GetSelectListStrAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  107. {
  108. var options = "";
  109. var list = await GetStateListAsync(tableName, columnName, exp);
  110. foreach (var l in list)
  111. {
  112. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  113. }
  114. return options;
  115. }
  116. #endregion
  117. #region StateDisplayDto
  118. public async Task<List<StateDisplayDto>> GetStateListAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  119. {
  120. return await GetStateListAsync(input.TableName, input.ColumnName, exp);
  121. }
  122. public async Task<List<StateDisplayDto>> GetStateListAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  123. {
  124. var list = Repository.GetAll().Where(a => a.TableName == tableName && a.ColumnName == columnName);
  125. if (exp != null)
  126. {
  127. list = list.Where(exp);
  128. }
  129. var dtoList = await list.Select(a => new StateDisplayDto()
  130. {
  131. CodeValue = a.CodeValue,
  132. DisplayValue = a.DisplayValue
  133. }).ToListAsync();
  134. return dtoList;
  135. }
  136. public async Task<List<StateDisplayDto>> GetStateListAsync(string tableName, string columnName, params string[] codeFilter)
  137. {
  138. var list = await Repository.GetAllListAsync(a => a.TableName == tableName && a.ColumnName == columnName);
  139. if (codeFilter.Any())
  140. {
  141. foreach (var code in codeFilter)
  142. {
  143. list = list.Where(a => a.CodeValue == code).ToList();
  144. }
  145. }
  146. var dtos = list.Select(a => new StateDisplayDto()
  147. {
  148. CodeValue = a.CodeValue,
  149. DisplayValue = a.DisplayValue
  150. }).ToList();
  151. return dtos;
  152. }
  153. public async Task<List<StateDisplayDto>> GetStateListReversalAsync(string tableName, string columnName, params string[] codeFilter)
  154. {
  155. var list = await Repository.GetAllListAsync(a => a.TableName == tableName && a.ColumnName == columnName);
  156. if (codeFilter.Any())
  157. {
  158. foreach (var code in codeFilter)
  159. {
  160. list = list.Where(a => a.CodeValue != code).ToList();
  161. }
  162. }
  163. var dtos = list.Select(a => new StateDisplayDto()
  164. {
  165. CodeValue = a.CodeValue,
  166. DisplayValue = a.DisplayValue
  167. }).ToList();
  168. return dtos;
  169. }
  170. #endregion
  171. #endregion
  172. #region GetDisplayValue
  173. public async Task<string> GetDisplayValueAsync(QueryStateDisplayValue input)
  174. {
  175. return await GetDisplayValueAsync(input.TableName, input.ColumnName, input.CodeValue);
  176. }
  177. public async Task<string> GetDisplayValueAsync(string tableName, string columnName, string codeValue)
  178. {
  179. return await CacheManager.GetCache(IwbZeroConsts.SysStateCache).GetAsync(
  180. tableName + "." + columnName + "." + codeValue, () => DisplayValueAsync(tableName, columnName, codeValue));
  181. }
  182. private async Task<string> DisplayValueAsync(string tableName, string columnName, string codeValue)
  183. {
  184. var state = await Repository.FirstOrDefaultAsync(a =>
  185. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  186. return state?.DisplayValue;
  187. }
  188. public string GetDisplayValue(QueryStateDisplayValue input)
  189. {
  190. return GetDisplayValue(input.TableName, input.ColumnName, input.CodeValue);
  191. }
  192. public string GetDisplayValue(string tableName, string columnName, string codeValue)
  193. {
  194. return CacheManager.GetCache(IwbZeroConsts.SysStateCache).Get(
  195. tableName + "." + columnName + "." + codeValue, () => DisplayValue(tableName, columnName, codeValue));
  196. }
  197. private string DisplayValue(string tableName, string columnName, string codeValue)
  198. {
  199. var state = Repository.FirstOrDefault(a =>
  200. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  201. return state?.DisplayValue;
  202. }
  203. #endregion
  204. }
  205. }