SysDictDataService.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Infrastructure.Attribute;
  2. using ZR.Common;
  3. using ZR.Model;
  4. using ZR.Model.System;
  5. using ZR.Model.System.Dto;
  6. namespace ZR.ServiceCore.Services
  7. {
  8. /// <summary>
  9. /// 字典数据类
  10. /// </summary>
  11. [AppService(ServiceType = typeof(ISysDictDataService), ServiceLifetime = LifeTime.Transient)]
  12. public class SysDictDataService : BaseService<SysDictData>, ISysDictDataService
  13. {
  14. /// <summary>
  15. /// 查询字典数据
  16. /// </summary>
  17. /// <param name="dictData"></param>
  18. /// <param name="pagerInfo"></param>
  19. /// <returns></returns>
  20. public PagedInfo<SysDictData> SelectDictDataList(SysDictData dictData, PagerInfo pagerInfo)
  21. {
  22. //return SysDictDataRepository.SelectDictDataList(dictData, pagerInfo);
  23. var exp = Expressionable.Create<SysDictData>();
  24. exp.AndIF(!string.IsNullOrEmpty(dictData.DictLabel), it => it.DictLabel.Contains(dictData.DictLabel));
  25. exp.AndIF(!string.IsNullOrEmpty(dictData.Status), it => it.Status == dictData.Status);
  26. exp.AndIF(!string.IsNullOrEmpty(dictData.DictType), it => it.DictType == dictData.DictType);
  27. return GetPages(exp.ToExpression(), pagerInfo);
  28. }
  29. /// <summary>
  30. /// 根据字典类型查询
  31. /// </summary>
  32. /// <param name="dictType"></param>
  33. /// <returns></returns>
  34. public List<SysDictData> SelectDictDataByType(string dictType)
  35. {
  36. string CK = $"SelectDictDataByType_{dictType}";
  37. var list = Queryable()
  38. .WithCache(CK, 60 * 10)
  39. .Where(f => f.Status == "0" && f.DictType == dictType)
  40. .OrderBy(it => it.DictSort)
  41. .ToList();
  42. return list;
  43. }
  44. public List<SysDictDataDto> SelectDictDataByTypes(string[] dictTypes)
  45. {
  46. //string CK = $"SelectDictDataByTypes_{dictTypes}";
  47. var list = Queryable()
  48. //.WithCache(CK, 60 * 30)
  49. .Where(f => f.Status == "0" && dictTypes.Contains(f.DictType))
  50. .OrderBy(it => it.DictSort)
  51. .Select((it) => new SysDictDataDto()
  52. {
  53. Label = it.DictLabel,
  54. Value = it.DictValue
  55. }, true)
  56. .ToList();
  57. return list;
  58. }
  59. /// <summary>
  60. /// 根据字典数据ID查询信息
  61. /// </summary>
  62. /// <param name="dictCode"></param>
  63. /// <returns></returns>
  64. public SysDictData SelectDictDataById(long dictCode)
  65. {
  66. string CK = $"SelectDictDataByCode_{dictCode}";
  67. if (CacheHelper.GetCache(CK) is not SysDictData list)
  68. {
  69. list = GetFirst(f => f.DictCode == dictCode);
  70. CacheHelper.SetCache(CK, list, 5);
  71. }
  72. return list;
  73. }
  74. /// <summary>
  75. /// 插入数据
  76. /// </summary>
  77. /// <param name="dict"></param>
  78. /// <returns></returns>
  79. public long InsertDictData(SysDictData dict)
  80. {
  81. return Insertable(dict).ExecuteReturnBigIdentity();
  82. }
  83. /// <summary>
  84. /// 修改数据
  85. /// </summary>
  86. /// <param name="dict"></param>
  87. /// <returns></returns>
  88. public long UpdateDictData(SysDictData dict)
  89. {
  90. var result = Update(w => w.DictCode == dict.DictCode, it => new SysDictData()
  91. {
  92. Remark = dict.Remark,
  93. Update_time = DateTime.Now,
  94. DictSort = dict.DictSort,
  95. DictLabel = dict.DictLabel,
  96. DictValue = dict.DictValue,
  97. Status = dict.Status,
  98. CssClass = dict.CssClass,
  99. ListClass = dict.ListClass,
  100. LangKey = dict.LangKey,
  101. Extend1 = dict.Extend1,
  102. Extend2 = dict.Extend2,
  103. });
  104. CacheHelper.Remove($"SelectDictDataByCode_{dict.DictCode}");
  105. return result;
  106. }
  107. /// <summary>
  108. /// 更改状态
  109. /// </summary>
  110. /// <param name="data"></param>
  111. /// <returns></returns>
  112. public int UpdateStatus(SysDictData data)
  113. {
  114. return Update(data, it => new { it.Status }, f => f.DictCode == data.DictCode);
  115. }
  116. /// <summary>
  117. /// 批量删除字典数据信息
  118. /// </summary>
  119. /// <param name="dictCodes"></param>
  120. /// <returns></returns>
  121. public int DeleteDictDataByIds(long[] dictCodes)
  122. {
  123. return Delete(dictCodes);
  124. }
  125. /// <summary>
  126. /// 同步修改字典类型
  127. /// </summary>
  128. /// <param name="old_dictType">旧字典类型</param>
  129. /// <param name="new_dictType">新字典类型</param>
  130. /// <returns></returns>
  131. public int UpdateDictDataType(string old_dictType, string new_dictType)
  132. {
  133. //只更新DictType字段根据where条件
  134. return Context.Updateable<SysDictData>()
  135. .SetColumns(t => new SysDictData() { DictType = new_dictType })
  136. .Where(f => f.DictType == old_dictType)
  137. .ExecuteCommand();
  138. }
  139. /// <summary>
  140. /// 根据字典类型查询自定义sql
  141. /// </summary>
  142. /// <param name="sysDictType"></param>
  143. /// <returns></returns>
  144. public List<SysDictDataDto> SelectDictDataByCustomSql(SysDictType sysDictType)
  145. {
  146. return Context.Ado.SqlQuery<SysDictDataDto>(sysDictType?.CustomSql).ToList();
  147. }
  148. }
  149. }