diff --git a/ZR.Admin.WebApi/Controllers/System/SysDictDataController.cs b/ZR.Admin.WebApi/Controllers/System/SysDictDataController.cs index 70a163a4..dd2a45a4 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysDictDataController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysDictDataController.cs @@ -73,6 +73,10 @@ namespace ZR.Admin.WebApi.Controllers.System ColumnName = dic.ColumnName, List = list.FindAll(f => f.DictType == dic.DictType) }; + if (dic.DictType.StartsWith("cus_")) + { + vo.List = SysDictService.SelectDictDataByCustomSql(dic.DictType); + } dataVos.Add(vo); } return SUCCESS(dataVos); diff --git a/ZR.Model/System/Dto/SysDictTypeDto.cs b/ZR.Model/System/Dto/SysDictTypeDto.cs new file mode 100644 index 00000000..4a394305 --- /dev/null +++ b/ZR.Model/System/Dto/SysDictTypeDto.cs @@ -0,0 +1,28 @@ +using System.ComponentModel.DataAnnotations; + +namespace ZR.Model.System.Dto +{ + public class SysDictTypeDto + { + public long DictId { get; set; } + /// + /// 字典名称 + /// + public string DictName { get; set; } + /// + /// 字典类型 + /// + [Required(ErrorMessage = "字典类型不能为空")] + [RegularExpression(pattern: "^[a-z][a-z0-9_]*$", ErrorMessage = "字典类型必须以字母开头,且字典类型只能由小写字母或加下划线还有数字组成")] + public string DictType { get; set; } + public string Status { get; set; } + /// + /// 系统内置 Y是 N否 + /// + public string Type { get; set; } + /// + /// 自定义sql + /// + public string CustomSql { get; set; } + } +} diff --git a/ZR.Model/System/SysDictData.cs b/ZR.Model/System/SysDictData.cs index 34510843..a2baabcd 100644 --- a/ZR.Model/System/SysDictData.cs +++ b/ZR.Model/System/SysDictData.cs @@ -1,8 +1,4 @@ -//using Dapper.Contrib.Extensions; -using System; -using System.Collections.Generic; -using System.Text; -using SqlSugar; +using SqlSugar; namespace ZR.Model.System { @@ -13,11 +9,10 @@ namespace ZR.Model.System [SugarTable("sys_dict_data")] public class SysDictData: SysBase { - //[Key] /// /// 字典主键 /// - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]//主键并且自增 (string不能设置自增) + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public long DictCode{ get; set; } public int DictSort { get; set; } public string DictLabel { get; set; } diff --git a/ZR.Model/System/SysDictType.cs b/ZR.Model/System/SysDictType.cs index 744f0a41..5e549700 100644 --- a/ZR.Model/System/SysDictType.cs +++ b/ZR.Model/System/SysDictType.cs @@ -13,7 +13,7 @@ namespace ZR.Model.System /// /// 字典主键 /// - [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]//主键并且自增 (string不能设置自增) + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public long DictId { get; set; } /// /// 字典名称 @@ -32,5 +32,9 @@ namespace ZR.Model.System /// 系统内置 Y是 N否 /// public string Type { get; set; } + /// + /// 自定义sql + /// + public string CustomSql { get; set; } } } diff --git a/ZR.Repository/System/SysDictDataRepository.cs b/ZR.Repository/System/SysDictDataRepository.cs index 294e655b..c15ca6a2 100644 --- a/ZR.Repository/System/SysDictDataRepository.cs +++ b/ZR.Repository/System/SysDictDataRepository.cs @@ -110,5 +110,15 @@ namespace ZR.Repository.System .Where(f => f.DictType == old_dictType) .ExecuteCommand(); } + + /// + /// 根据字典类型查询自定义sql + /// + /// + /// + public List SelectDictDataByCustomSql(SysDictType sysDictType) + { + return Context.Ado.SqlQuery(sysDictType?.CustomSql).ToList(); + } } } diff --git a/ZR.Service/System/IService/ISysDictService.cs b/ZR.Service/System/IService/ISysDictService.cs index 7e4313f0..331d5f7f 100644 --- a/ZR.Service/System/IService/ISysDictService.cs +++ b/ZR.Service/System/IService/ISysDictService.cs @@ -47,5 +47,7 @@ namespace ZR.Service.System.IService /// /// SysDictType GetInfo(long dictId); + + List SelectDictDataByCustomSql(string dictType); } } diff --git a/ZR.Service/System/SysDictService.cs b/ZR.Service/System/SysDictService.cs index 0df06e53..8a668f9b 100644 --- a/ZR.Service/System/SysDictService.cs +++ b/ZR.Service/System/SysDictService.cs @@ -1,5 +1,6 @@ using Infrastructure; using Infrastructure.Attribute; +using System; using System.Collections.Generic; using System.Text; using ZR.Model; @@ -111,5 +112,21 @@ namespace ZR.Service.System { return DictRepository.GetFirst(f => f.DictId == dictId); } + + /// + /// 根据字典类型查询自定义sql + /// + /// + /// + public List SelectDictDataByCustomSql(string dictType) + { + var dictInfo = DictRepository.Queryable() + .Where(f => f.DictType == dictType).First(); + if (dictInfo == null || !dictInfo.CustomSql.StartsWith("select", StringComparison.OrdinalIgnoreCase)) + { + return null; + } + return DictDataRepository.SelectDictDataByCustomSql(dictInfo); + } } } diff --git a/document/admin-mysql.sql b/document/admin-mysql.sql index 098f5bf1..322592c0 100644 --- a/document/admin-mysql.sql +++ b/document/admin-mysql.sql @@ -181,6 +181,7 @@ CREATE TABLE `sys_dict_type` ( `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `customSql` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '自定义sql语句', PRIMARY KEY (`dictId`) USING BTREE, UNIQUE INDEX `dictType`(`dictType`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; diff --git a/document/admin-sqlserver.sql b/document/admin-sqlserver.sql index 35a56dbd..c3e6ac64 100644 --- a/document/admin-sqlserver.sql +++ b/document/admin-sqlserver.sql @@ -107,6 +107,7 @@ CREATE TABLE sys_dict_type ( update_by varchar(64) NULL DEFAULT '' ,-- '更新者', update_time datetime NULL DEFAULT NULL ,-- '更新时间', remark varchar(500) NULL DEFAULT NULL ,-- '备注', + customSql varchar(500) NULL DEFAULT NULL ,-- '自定义sql', ) GO CREATE UNIQUE INDEX dictType ON dbo.sys_dict_type(dictType)