SysDictService.cs 4.9 KB

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