SysDictService.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using SqlSugar;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using ZR.Model;
  8. using ZR.Model.System;
  9. using ZR.Service.System.IService;
  10. namespace ZR.Service.System
  11. {
  12. /// <summary>
  13. /// 字典类型
  14. /// </summary>
  15. [AppService(ServiceType = typeof(ISysDictService), ServiceLifetime = LifeTime.Transient)]
  16. public class SysDictService : BaseService<SysDictType>, ISysDictService
  17. {
  18. private ISysDictDataService DictDataService;
  19. public SysDictService(ISysDictDataService dictDataRepository)
  20. {
  21. this.DictDataService = dictDataRepository;
  22. }
  23. public List<SysDictType> GetAll()
  24. {
  25. return Queryable().ToList();
  26. }
  27. /// <summary>
  28. /// 查询字段类型列表
  29. /// </summary>
  30. /// <param name="dictType">实体模型</param>
  31. /// <param name="pager"></param>
  32. /// <returns></returns>
  33. public PagedInfo<SysDictType> SelectDictTypeList(SysDictType dictType, PagerInfo pager)
  34. {
  35. var exp = Expressionable.Create<SysDictType>();
  36. exp.AndIF(!string.IsNullOrEmpty(dictType.DictName), it => it.DictName.Contains(dictType.DictName));
  37. exp.AndIF(!string.IsNullOrEmpty(dictType.Status), it => it.Status == dictType.Status);
  38. exp.AndIF(!string.IsNullOrEmpty(dictType.DictType), it => it.DictType.Contains(dictType.DictType));
  39. exp.AndIF(!string.IsNullOrEmpty(dictType.Type), it => it.Type.Equals(dictType.Type));
  40. return GetPages(exp.ToExpression(), pager, f => f.DictId, OrderByType.Desc);
  41. }
  42. /// <summary>
  43. /// 校验字典类型称是否唯一
  44. /// </summary>
  45. /// <param name="dictType">字典类型</param>
  46. /// <returns></returns>
  47. public string CheckDictTypeUnique(SysDictType dictType)
  48. {
  49. SysDictType sysDictType = GetFirst(f => f.DictType == dictType.DictType);
  50. if (sysDictType != null && sysDictType.DictId != dictType.DictId)
  51. {
  52. return UserConstants.NOT_UNIQUE;
  53. }
  54. return UserConstants.UNIQUE;
  55. }
  56. /// <summary>
  57. /// 批量删除字典数据信息
  58. /// </summary>
  59. /// <param name="dictIds"></param>
  60. /// <returns></returns>
  61. public int DeleteDictTypeByIds(long[] dictIds)
  62. {
  63. int sysCount = Count(s => s.Type == "Y" && dictIds.Contains(s.DictId));
  64. if (sysCount > 0) { throw new CustomException($"删除失败Id: 系统内置参数不能删除!"); }
  65. foreach (var dictId in dictIds)
  66. {
  67. SysDictType dictType = GetFirst(x => x.DictId == dictId);
  68. if (DictDataService.Count(f => f.DictType == dictType.DictType) > 0)
  69. {
  70. throw new CustomException($"{dictType.DictName}已分配,不能删除");
  71. }
  72. }
  73. int count = Context.Deleteable<SysDictType>().In(dictIds).ExecuteCommand();
  74. //if (count > 0)
  75. //{
  76. // DictUtils.clearDictCache();
  77. //}
  78. return count;
  79. }
  80. /// <summary>
  81. /// 插入字典类型
  82. /// </summary>
  83. /// <param name="sysDictType"></param>
  84. /// <returns></returns>
  85. public long InsertDictType(SysDictType sysDictType)
  86. {
  87. return InsertReturnBigIdentity(sysDictType);
  88. }
  89. /// <summary>
  90. /// 修改字典类型
  91. /// </summary>
  92. /// <param name="sysDictType"></param>
  93. /// <returns></returns>
  94. public int UpdateDictType(SysDictType sysDictType)
  95. {
  96. SysDictType oldDict = GetFirst(x => x.DictId == sysDictType.DictId);
  97. if (sysDictType.DictType != oldDict.DictType)
  98. {
  99. //同步修改 dict_data表里面的DictType值
  100. DictDataService.UpdateDictDataType(oldDict.DictType, sysDictType.DictType);
  101. }
  102. return Context.Updateable(sysDictType).IgnoreColumns(it => new { sysDictType.Create_by }).ExecuteCommand();
  103. }
  104. /// <summary>
  105. /// 获取字典信息
  106. /// </summary>
  107. /// <param name="dictId"></param>
  108. /// <returns></returns>
  109. public SysDictType GetInfo(long dictId)
  110. {
  111. return GetFirst(f => f.DictId == dictId);
  112. }
  113. /// <summary>
  114. /// 根据字典类型查询自定义sql
  115. /// </summary>
  116. /// <param name="dictType"></param>
  117. /// <returns></returns>
  118. public List<SysDictData> SelectDictDataByCustomSql(string dictType)
  119. {
  120. var dictInfo = Queryable()
  121. .Where(f => f.DictType == dictType).First();
  122. if (dictInfo == null || !dictInfo.CustomSql.StartsWith("select", StringComparison.OrdinalIgnoreCase))
  123. {
  124. return null;
  125. }
  126. return DictDataService.SelectDictDataByCustomSql(dictInfo);
  127. }
  128. }
  129. }