using JNPF.Common.Core.Manager; using JNPF.Common.Models; @if(Model.IsExport) { @:using JNPF.ClayObject; } @if(Model.IsImportData || Model.IsExport) { @:using JNPF.Common.Models.NPOI; } @if(Model.IsImportData) { @:using JNPF.Common.CodeGen.ExportImport; @:using JNPF.Common.Core.Manager.Files; @:using JNPF.Common.Dtos; } @if(Model.IsBatchRemove) { @:using JNPF.DatabaseAccessor; } using JNPF.Common.CodeGen.DataParsing; using JNPF.Common.Manager; using JNPF.Common.Const; using JNPF.Common.Enums; using JNPF.Common.Extension; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.System; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Interfaces.System; @if(Model.IsImportData) { @:using JNPF.VisualDev.Engine; @:using JNPF.VisualDev.Engine.Core; @:using Microsoft.AspNetCore.Http; } using JNPF.@(Model.NameSpace).Entitys.Dto.@(Model.ClassName); @foreach(var table in Model.AuxiliayTableRelations) { @*循环出副表的命名空间*@ @:using JNPF.@(Model.NameSpace).Entitys.Dto.@(table.ClassName); } using JNPF.@(Model.NameSpace).Entitys; using JNPF.@(Model.NameSpace).Interfaces; @if(Model.EnableFlow) { @:using JNPF.WorkFlow.Entitys.Entity; } using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; namespace JNPF.@(Model.NameSpace); /// /// 业务实现:@(Model.BusName). /// [ApiDescriptionSettings(Tag = "@(Model.Type == 3 ? Model.NameSpace + "Form" : Model.NameSpace)", Name = "@Model.ClassName", Order = 200)] [Route("api/@(Model.Type == 3 ? Model.NameSpace+ "/Form" : Model.NameSpace)/[controller]")] public class @(Model.ClassName)Service : I@(Model.ClassName)Service, IDynamicApiController, ITransient { /// /// 服务基础仓储. /// private readonly ISqlSugarRepository<@(Model.ClassName)Entity> _repository; @if(Model.IsBillRule) { @: @:/// @:/// 单据规则服务. @:/// @:private readonly IBillRullService _billRullService; } @if(Model.DbLinkId != "0" || Model.IsImportData) { @: @:/// @:/// 数据库管理. @:/// @:private readonly IDataBaseManager _dataBaseManager; } /// /// 数据接口服务. /// private readonly IDataInterfaceService _dataInterfaceService; /// /// 缓存管理. /// private readonly ICacheManager _cacheManager; /// /// 通用数据解析. /// private readonly ControlParsing _controlParsing; /// /// 用户管理. /// private readonly IUserManager _userManager; @if(Model.IsImportData) { @:/// @:/// 代码生成导出数据帮助类. @:/// @:private readonly ExportImportDataHelper _exportImportDataHelper; @: @:/// @:/// 文件服务. @:/// @:private readonly IFileManager _fileManager; } @if(Model.DbLinkId != "0") { @: @:/// @:/// 客户端. @:/// @:private static SqlSugarScope? _sqlSugarClient; } @if(Model.IsImportData || Model.IsExport) { @: @:/// @:/// 导出字段. @:/// @:private readonly List paramList = "[@(Model.ExportField)]".ToList(); } @if(Model.IsImportData) { @: @{var importField = 0;} @:/// @:/// 导入字段. @:/// @:private readonly string[] uploaderKey = new string[] {@foreach(var table in Model.TableField){@if(table.IsImportField){@switch(table.IsAuxiliary){case true:@(importField==0 ? "\"" + "jnpf_" + @table.TableName + "_jnpf_" + @table.OriginalColumnName + "\"" : ", \"" + "jnpf_" + @table.TableName + "_jnpf_" + @table.OriginalColumnName + "\"")break;default:@(importField==0 ? "\"" + table.OriginalColumnName + "\"" : ", \"" + table.OriginalColumnName + "\"")break;} importField++;}} }; } /// /// 初始化一个类型的新实例. /// public @(Model.ClassName)Service( ISqlSugarRepository<@(Model.ClassName)Entity> repository, @if(Model.IsBillRule) { @:IBillRullService billRullService, } IDataInterfaceService dataInterfaceService, @if(Model.DbLinkId != "0" || Model.IsImportData) { @:IDataBaseManager dataBaseManager, } @if(Model.DbLinkId != "0"){ @:ISqlSugarClient context, } @if(Model.IsImportData) { @:ExportImportDataHelper exportImportDataHelper, @:IFileManager fileManager, } ICacheManager cacheManager, ControlParsing controlParsing, IUserManager userManager) { _repository = repository; @if(Model.IsBillRule) { @:_billRullService = billRullService; } @if(Model.DbLinkId != "0" || Model.IsImportData) { @:_dataBaseManager = dataBaseManager; } @if(Model.DbLinkId != "0") { @:_sqlSugarClient = (SqlSugarScope)context; } @if(Model.IsImportData) { @:_exportImportDataHelper = exportImportDataHelper; @:_fileManager = fileManager; } _dataInterfaceService = dataInterfaceService; _cacheManager = cacheManager; _controlParsing = controlParsing; _userManager = userManager; } @foreach(var item in Model.Function) { @switch(item.FullName) { @*信息方法*@ case "info": @: @:/// @:/// 获取@(Model.BusName). @:/// @:/// 主键值. @:/// @:[HttpGet("{id}")] @:public async Task GetInfo(@(Model.PrimaryKeyPolicy == 1 ? "string" : Model.EnableFlow ? "string" : "long") id) @:{ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:var output = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @foreach(var table in Model.AuxiliayTableRelations) { @:.Includes(x => x.@(table.ClassName)) } @:.FirstAsync(it => it.@(Model.EnableFlow && Model.PrimaryKeyPolicy == 2 ? "FlowTaskId" : Model.PrimaryKey).Equals(id)); @: @*获取出副表数据*@ @foreach(var table in Model.AuxiliayTableRelations) { @:var auxiliay@(table.ClassName) = output?.@(table.ClassName).Adapt<@(table.ClassName)InfoOutput>(); } @: @:var data = output.Adapt<@(Model.ClassName)InfoOutput>(); @: @:if(output != null) @:{ @*合并*@ @foreach(var table in Model.AuxiliayTableRelations) { @:if (output.@(table.ClassName) != null) @:data = ConcurrentDictionaryExtensions.AssignmentObject<@(Model.ClassName)InfoOutput, @(table.ClassName)InfoOutput>(data, auxiliay@(table.ClassName)).Adapt<@(Model.ClassName)InfoOutput>(); } @foreach(var column in Model.TableField) { @{var parameterName = string.Empty;} @switch(column.IsAuxiliary) { case true: @{parameterName = "jnpf_" + @column.TableName + "_jnpf_" + @column.LowerColumnName;} break; default: @{parameterName = @column.LowerColumnName;} break; } @switch(column.jnpfKey) { case "modifyUser": case "createUser": @: @:// @column.ColumnComment @:data.@(parameterName) = await _repository.AsSugarClient().Queryable().Where(it => it.Id.Equals(data.@(parameterName))).Select(it => SqlFunc.MergeString(it.RealName, "/", it.Account)).FirstAsync(); break; case "currOrganize": @: @:// @column.ColumnComment @:data.@(parameterName) = await _repository.AsSugarClient().Queryable().Where(it => it.Id.Equals(data.@(parameterName))).Select(it => it.FullName).FirstAsync(); break; case "currPosition": @: @:// @column.ColumnComment @:data.@(parameterName) = await _repository.AsSugarClient().Queryable().Where(it => it.Id.Equals(data.@(parameterName))).Select(it => it.FullName).FirstAsync(); break; } } @:} @:else @:{ @:data = new @(Model.ClassName)InfoOutput(); @:} @:return data; @:} break; @*流程保存*@ case "save": @: @:/// @:/// 保存. @:/// @:/// 主键值. @:/// 表单数据. @:/// @:[HttpPost("{id}")] @:public async Task Save(string id, [FromBody] @(@Model.ClassName)CrInput input) @:{ @*跨库*@ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(@Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:var entity = input.Adapt<@(@Model.ClassName)Entity>(); @:entity.@(Model.PrimaryKeyPolicy == 1 ? Model.PrimaryKey : "FlowTaskId") = id; @:if (await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()." : "_repository.Is")AnyAsync(x => x.@(Model.PrimaryKeyPolicy == 1 ? Model.PrimaryKey : "FlowTaskId").Equals(id)@(Model.PrimaryKeyPolicy == 2 ? " || x." + Model.PrimaryKey + ".Equals(id)" : ""))) @:{ @if(Model.PrimaryKeyPolicy == 2) { @:entity.Id = (await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()." : "_repository.Get")FirstAsync(it=> it.FlowTaskId.Equals(entity.FlowTaskId)@(Model.PrimaryKeyPolicy == 2 ? " || it." + Model.PrimaryKey + ".Equals(entity.FlowTaskId)" : ""))).Id; } @{ GetAndModifyDataMethodTemplate(); } @:} @:else @:{ @{ GetTheNewDataMethodTemplate(); } @:} @:} break; @*新增*@ case "add": @: @:/// @:/// 新建@(Model.BusName). @:/// @:/// 参数. @:/// @:[HttpPost("")] @:[UnitOfWork] @:public async Task Create([FromBody] @(Model.ClassName)CrInput input) @:{ @*跨库*@ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:var entity = input.Adapt<@(Model.ClassName)Entity>(); @if(Model.PrimaryKeyPolicy == 1) { @:entity.@(Model.PrimaryKey) = SnowflakeIdHelper.NextId(); } @{ GetTheNewDataMethodTemplate(); } @:} break; @*编辑*@ case "edit": @: @:/// @:/// 更新@(Model.BusName). @:/// @:/// 主键值. @:/// 参数. @:/// @:[HttpPut("{id}")] @:[UnitOfWork] @:public async Task Update(@(Model.PrimaryKeyPolicy == 1 ? "string" : "long") id, [FromBody] @(Model.ClassName)UpInput input) @:{ @*跨库*@ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:var entity = input.Adapt<@(Model.ClassName)Entity>(); @{ GetAndModifyDataMethodTemplate(); } @:} break; @*分页列表*@ case "page": @: @:/// @:/// 获取@(Model.BusName)列表. @:/// @:/// 请求参数. @:/// @if(@item.IsInterface) { @:[HttpPost("List")] } @:@(item.IsInterface ? "public" : "private") async Task GetList(@(item.IsInterface ? "[FromBody] " : "")@(Model.ClassName)ListQueryInput input) @:{ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @if(Model.UseDataPermission) { @:var authorizeWhere = new List(); @foreach(var table in Model.AuxiliayTableRelations) { @:var @(table.LowerClassName)AuthorizeWhere = new List(); } @: @:// 数据权限过滤 @:if (_userManager.User.IsAdministrator == 0) @:{ @:var allAuthorizeWhere = await _userManager.GetCodeGenAuthorizeModuleResource<@(Model.ClassName)ListOutput>(input.menuId, "@(Model.OriginalPrimaryKey)", _userManager.UserOrigin.Equals("pc") ? true : false); @:authorizeWhere = allAuthorizeWhere.Find(it => it.FieldRule == 0)?.conditionalModel; @foreach(var table in Model.AuxiliayTableRelations) { @:@(table.LowerClassName)AuthorizeWhere = allAuthorizeWhere.Find(it => it.FieldRule == 1 && it.TableName.Equals("@(table.OriginalTableName)"))?.conditionalModel; } @:} @: } @if(Model.HasSuperQuery) { @:var entityInfo = @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:var superQuery = SuperQueryHelper.GetSuperQueryInput(input.superQueryJson, string.Empty, entityInfo, 0); @:List mainConditionalModel = SuperQueryHelper.GetSuperQueryJson(superQuery); @foreach(var table in Model.AuxiliayTableRelations) { @: @:entityInfo = @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").EntityMaintenance.GetEntityInfo<@(table.ClassName)Entity>(); @:superQuery = SuperQueryHelper.GetSuperQueryInput(input.superQueryJson, entityInfo.DbTableName, entityInfo, 2); @:List @(table.LowerClassName)ConditionalModel = SuperQueryHelper.GetSuperQueryJson(superQuery); } } @{ GetListQueryFieldTemplate(); } @:var data = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @foreach(var table in Model.AuxiliayTableRelations) { @:.Includes(it => it.@(table.ClassName)) } @{ GetTheListQueryCriteriaTemplate();} @if(Model.HasSuperQuery) { @:.Where(mainConditionalModel) @foreach(var table in Model.AuxiliayTableRelations) { @:.WhereIF(@(table.LowerClassName)ConditionalModel?.Count > 0, it => SqlFunc.Exists(it.@(table.ClassName).@(table.PrimaryKey), @(table.LowerClassName)ConditionalModel)) } } @if(Model.UseDataPermission) { @:.Where(authorizeWhere) @foreach(var table in Model.AuxiliayTableRelations) { @:.WhereIF(@(table.LowerClassName)AuthorizeWhere?.Count > 0, it => SqlFunc.Exists(it.@(table.ClassName).@(table.PrimaryKey), @(table.LowerClassName)AuthorizeWhere)) } } @:.ToPagedListAsync(input.currentPage, input.pageSize, it => new @(Model.ClassName)ListOutput @:{ @{ GetTheListDisplayFieldTemplate();} @:}); @if(Model.IsConversion) { @: @:await _repository.AsSugarClient().ThenMapperAsync(data.list, async item => @:{ @{ GetListDataConversionTemplate(); } @:}); @: } @if(Model.ParsJnpfKeyConstList.Count > 0) { @:var resData = data.list.ToObject>>(CommonConst.options); @:List fieldList = new List(); @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity())); @: @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), "@(table.OriginalTableName)")); @: } } @foreach (var jnpfKeyConst in Model.ParsJnpfKeyConstList) { @:resData = await _controlParsing.GetParsDataList(resData, "@(@jnpfKeyConst[1])", "@(@jnpfKeyConst[0])", _userManager.TenantId, fieldList); } @:data.list = resData.ToObject>(CommonConst.options); } @: @if(Model.IndexDataType == 3) { @:return _userManager.UserOrigin.Equals("pc") ? CodeGenHelper.GetGroupList(data.list.ToObject>>(CommonConst.options), "@(@Model.GroupField)", "@(@Model.GroupShowField)") : PageResult<@(@Model.ClassName)ListOutput>.SqlSugarPageResult(data); }else{ @:return PageResult<@(@Model.ClassName)ListOutput>.SqlSugarPageResult(data); } @:} break; case "noPage": @: @:/// @:/// 获取@(@Model.BusName)无分页列表. @:/// @:/// 请求参数. @:/// @if(@item.IsInterface) { @:[HttpPost("List")] } @:@(item.IsInterface ? "public" : "private") async Task GetNoPagingList(@(item.IsInterface ? "[FromBody] " : "")@(Model.ClassName)ListQueryInput input) @:{ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(@Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @if(Model.UseDataPermission) { @:var authorizeWhere = new List(); @foreach(var table in Model.AuxiliayTableRelations) { @:var @(table.LowerClassName)AuthorizeWhere = new List(); } @: @:// 数据权限过滤 @:if (_userManager.User.IsAdministrator == 0) @:{ @:var allAuthorizeWhere = await _userManager.GetCodeGenAuthorizeModuleResource<@(Model.ClassName)ListOutput>(input.menuId, "@(Model.OriginalPrimaryKey)", _userManager.UserOrigin.Equals("pc") ? true : false); @:authorizeWhere = allAuthorizeWhere.Find(it => it.FieldRule == 0)?.conditionalModel; @foreach(var table in Model.AuxiliayTableRelations) { @:@(table.LowerClassName)AuthorizeWhere = allAuthorizeWhere.Find(it => it.FieldRule == 1 && it.TableName.Equals("@(table.OriginalTableName)"))?.conditionalModel; } @:} @: } @if(Model.HasSuperQuery) { @:var entityInfo = @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:var superQuery = SuperQueryHelper.GetSuperQueryInput(input.superQueryJson, string.Empty, entityInfo, 0); @:List mainConditionalModel = SuperQueryHelper.GetSuperQueryJson(superQuery); @foreach(var table in Model.AuxiliayTableRelations) { @: @:entityInfo = @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").EntityMaintenance.GetEntityInfo<@(table.ClassName)Entity>(); @:superQuery = SuperQueryHelper.GetSuperQueryInput(input.superQueryJson, entityInfo.DbTableName, entityInfo, 2); @:List @(table.LowerClassName)ConditionalModel = SuperQueryHelper.GetSuperQueryJson(superQuery); } } @{ GetListQueryFieldTemplate(); } @:var data = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @foreach(var table in Model.AuxiliayTableRelations) { @:.Includes(it => it.@(table.ClassName)) } @{ GetTheListQueryCriteriaTemplate();} @if(Model.HasSuperQuery) { @:.Where(mainConditionalModel) @foreach(var table in Model.AuxiliayTableRelations) { @:.WhereIF(@(table.LowerClassName)ConditionalModel?.Count > 0, it => SqlFunc.Exists(it.@(table.ClassName).@(table.PrimaryKey), @(table.LowerClassName)ConditionalModel)) } } @if(Model.UseDataPermission) { @:.Where(authorizeWhere) @foreach(var table in Model.AuxiliayTableRelations) { @:.WhereIF(@(table.LowerClassName)AuthorizeWhere?.Count > 0, it => SqlFunc.Exists(it.@(table.ClassName).@(table.PrimaryKey), @(table.LowerClassName)AuthorizeWhere)) } } @:.ToListAsync(it => new @(Model.ClassName)ListOutput @:{ @{ GetTheListDisplayFieldTemplate();} @:}); @if(Model.IsConversion) { @: @:await _repository.AsSugarClient().ThenMapperAsync(data, async item => @:{ @{ GetListDataConversionTemplate(); } @:}); @: } @if(Model.ParsJnpfKeyConstList.Count>0) { @:var resData = data.ToObject>>(CommonConst.options); @:List fieldList = new List(); @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity())); @: @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), "@(table.OriginalTableName)")); @: } } @foreach (var jnpfKeyConst in Model.ParsJnpfKeyConstList) { @:resData = await _controlParsing.GetParsDataList(resData, "@(@jnpfKeyConst[1])", "@(@jnpfKeyConst[0])", _userManager.TenantId, fieldList); } @: @:data = resData.ToObject>(CommonConst.options); } @: @if(Model.IndexDataType == 3) { @:return _userManager.UserOrigin.Equals("pc") ? CodeGenHelper.GetGroupList(data.ToObject>>(CommonConst.options), "@(@Model.GroupField)", "@(@Model.GroupShowField)") : data; }else{ @:return data; } @:} break; @*删除*@ case "remove": @: @:/// @:/// 删除@(Model.BusName). @:/// @:/// @:[HttpDelete("{id}")] @:[UnitOfWork] @:public async Task Delete(@(Model.PrimaryKeyPolicy == 1 ? "string" : "long") id) @:{ @*跨库*@ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:if(!await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()").AnyAsync(it => it.@(Model.PrimaryKey) == id)) @:throw Oops.Oh(ErrorCode.COM1005); @: @:var isOk = await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").DeleteNav<@(Model.ClassName)Entity>(it => it.@(Model.PrimaryKey) == id) @foreach(var table in Model.AuxiliayTableRelations) { @:.Include(it => it.@(table.ClassName)) } @:.ExecuteCommandAsync(); @:if (!isOk) @:throw Oops.Oh(ErrorCode.COM1002); @:} break; @*批量删除*@ case "batchRemove": @: @:/// @:/// 批量删除@(Model.BusName). @:/// @:/// 主键数组. @:/// @:[HttpPost("batchRemove")] @:[UnitOfWork] @:public async Task BatchRemove([FromBody] List<@(Model.PrimaryKeyPolicy == 1 ? "string" : "long")> ids) @:{ @*跨库*@ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @if(Model.EnableFlow) { @:var idList = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()").Where(it => ids.Contains(it.@(Model.PrimaryKey))).Select(it => it.@(Model.PrimaryKeyPolicy == 1 ? Model.PrimaryKey : "FlowTaskId")).ToListAsync(); @: @:// 取差集 @:idList = idList.Except(await GetAllowDeleteFlowTaskList(idList)).ToList(); @: @:var entitys = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()").In(it => it.@(Model.PrimaryKeyPolicy == 1 ? @Model.PrimaryKey : "FlowTaskId"), idList).ToListAsync(); }else{ @:var entitys = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()").In(it => it.@(Model.PrimaryKey), ids).ToListAsync(); } @: @:if (entitys.Count > 0) @:{ @if(Model.EnableFlow) { @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").DeleteNav<@(Model.ClassName)Entity>(it => entitys.Select(s => s.@(@Model.PrimaryKey)).ToList().Contains(it.@(@Model.PrimaryKey))) @foreach(var table in Model.AuxiliayTableRelations) { @:.Include(it => it.@(table.ClassName)) } @:.ExecuteCommandAsync(); }else{ @:var isOk = await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").DeleteNav<@(Model.ClassName)Entity>(it => ids.Contains(it.@(Model.PrimaryKey))) @foreach(var table in Model.AuxiliayTableRelations) { @:.Include(it => it.@(table.ClassName)) } @:.ExecuteCommandAsync(); @:if (!isOk) @:throw Oops.Oh(ErrorCode.COM1002); } @if(Model.EnableFlow) { @: @:await _repository.AsSugarClient().Updateable().SetColumns(it => new FlowTaskEntity() @:{ @:DeleteMark = 1, @:DeleteUserId = _userManager.UserId, @:DeleteTime = SqlFunc.GetDate() @:}).Where(it => idList.Contains(it.Id)).ExecuteCommandAsync(); } @:} @:} @if(Model.EnableFlow) { @: @:/// @:/// 获取不允许删除任务列表. @:/// @:/// id数组 @:/// @:private async Task> GetAllowDeleteFlowTaskList(List ids) @:{ @:return await _repository.AsSugarClient().Queryable().Where(it => ids.Contains(it.ProcessId)).Where(it => !it.Status.Equals(0)).Where(it=> !it.Status.Equals(4)).Select(f => f.ProcessId).ToListAsync(); @:} } break; @*导出*@ case "download": @: @:/// @:/// 导出@(Model.BusName). @:/// @:/// 请求参数. @:/// @:[HttpGet("Actions/Export")] @:public async Task Export([FromQuery] @(Model.ClassName)ListQueryInput input) @:{ @if(Model.IndexDataType == 3) { @:var exportData = new List>(); @:if (input.dataType == 0) @:exportData = await GetList(input); @:else @:exportData = await GetNoPagingList(input); }else{ @:var exportData = new List<@(Model.ClassName)ListOutput>(); @:if (input.dataType == 0) @:exportData = Clay.Object(await GetList(input)).Solidify>().list; @:else @:exportData = await GetNoPagingList(input); } @:var excelName = "@(Model.FullName)"; @:_cacheManager.Set(excelName + ".xls", string.Empty); @:return CodeGenExportDataHelper.GetDataExport(excelName, input.selectKey, _userManager.UserId, exportData.ToObject>>(), paramList, @((Model.IndexDataType == 3).ToString().ToLower())); @:} break; @*导入*@ case "upload": @: @:/// @:/// 下载模板. @:/// @:/// @:[HttpGet("TemplateDownload")] @:public async Task TemplateDownload() @:{ @:List>? dataList = new List>(); @: @:// 赋予默认值 @:var dicItem = ExportImportDataHelper.GetTemplateHeader<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity(), 1); @: @foreach(var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:var @(table.LowerClassName) = ExportImportDataHelper.GetTemplateHeader<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), 2, "@(table.OriginalTableName)"); } } @:dicItem.Add("id", "id"); @{var tableName = 0;} @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:var table@(table.TableNo) = @(tableName == 0 ? "dicItem" : "table" + tableName).Concat(@(table.LowerClassName)).ToDictionary(k => k.Key, v => v.Value); tableName++; if(tableName > 0) { tableName = table.TableNo; } } } @:dataList.Add(table@(tableName)); @: @:var excelName = string.Format("{0} 导入模板_{1}", "@(Model.FullName)", SnowflakeIdHelper.NextId()); @:_cacheManager.Set(excelName + ".xls", string.Empty); @:return CodeGenExportDataHelper.GetTemplateExport(excelName, string.Join(",", uploaderKey), _userManager.UserId, dataList, null); @:} @: @:/// @:/// Excel导入. @:/// @:/// @:/// @:[HttpPost("Uploader")] @:public async Task Uploader(IFormFile file) @:{ @:var _filePath = _fileManager.GetPathByType(string.Empty); @:var _fileName = DateTime.Now.ToString("yyyyMMdd") + "_" + SnowflakeIdHelper.NextId() + Path.GetExtension(file.FileName); @:var stream = file.OpenReadStream(); @:await _fileManager.UploadFileByType(stream, _filePath, _fileName); @:return new { name = _fileName, url = string.Format("/api/File/Image/{0}/{1}", string.Empty, _fileName) }; @:} @: @:/// @:/// 导入预览. @:/// @:/// @:[HttpGet("ImportPreview")] @:public async Task ImportPreview(string fileName) @:{ @:List fieldList = new List(); @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity())); @: @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), "@(table.OriginalTableName)")); @: } } @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(table.ClassName)Entity>(); @:tables.Add(ExportImportDataHelper.GetTableRelation(entityInfo, "0", "@(table.OriginalTableField)", "@(table.RelationTable)", "@(table.OriginalRelationField)")); @: } } @if(Model.DbLinkId != "0") { @:DbLinkEntity link = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); }else{ @:DbLinkEntity link = _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName); // 当前数据库连接 } @:var tInfo = new TemplateParsingBase(link, fieldList, tables, "@(Model.OriginalPrimaryKey)", @(Model.WebType), @(Model.PrimaryKeyPolicy), uploaderKey.ToList(), "@(Model.ImportDataType)"); @:return await _exportImportDataHelper.GetImportPreviewData(tInfo, fileName); @:} @: @:/// @:/// 导入数据. @:/// @:/// @:/// @:[HttpPost("ImportData")] @:[UnitOfWork] @:public async Task ImportData([FromBody] DataImportInput input) @:{ @:List fieldList = new List(); @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity())); @: @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), "@(table.OriginalTableName)")); @: } } @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(table.ClassName)Entity>(); @:tables.Add(ExportImportDataHelper.GetTableRelation(entityInfo, "0", "@(table.OriginalTableField)", "@(table.RelationTable)", "@(table.OriginalRelationField)")); @: } } @if(Model.DbLinkId != "0") { @:DbLinkEntity link = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); }else{ @:DbLinkEntity link = _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName); // 当前数据库连接 } @:var tInfo = new TemplateParsingBase(link, fieldList, tables, "@(Model.OriginalPrimaryKey)", @(Model.WebType), @(Model.PrimaryKeyPolicy), uploaderKey.ToList(), "@(Model.ImportDataType)"@(Model.EnableFlow ? ", 1" : "")); @: @:object[]? res = await _exportImportDataHelper.ImportMenuData(tInfo, input.list); @:var addlist = res.First() as List>; @:var errorlist = res.Last() as List>; @:var result = new DataImportOutput() @:{ @:snum = addlist.Count, @:fnum = errorlist.Count, @:failResult = errorlist, @:resultType = errorlist.Count < 1 ? 0 : 1 @:}; @: @:return result; @:} @: @:/// @:/// 导入数据的错误报告. @:/// @:/// @:/// @:[HttpPost("ImportExceptionData")] @:[UnitOfWork] @:public async Task ExportExceptionData([FromBody] DataImportInput list) @:{ @:List fieldList = new List(); @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(Model.ClassName)Entity>(new @(Model.ClassName)Entity())); @: @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:fieldList.AddRange(ExportImportDataHelper.GetTemplateParsing<@(table.ClassName)Entity>(new @(table.ClassName)Entity(), "@(table.OriginalTableName)")); @: } } @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @foreach (var table in Model.AuxiliayTableRelations) { @if(table.IsImportData) { @:entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(table.ClassName)Entity>(); @:tables.Add(ExportImportDataHelper.GetTableRelation(entityInfo, "0", "@(table.OriginalTableField)", "@(table.RelationTable)", "@(table.OriginalRelationField)")); @: } } @if(Model.DbLinkId != "0") { @:DbLinkEntity link = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); }else{ @:DbLinkEntity link = _dataBaseManager.GetTenantDbLink(_userManager.TenantId, _userManager.TenantDbName); // 当前数据库连接 } @:var tInfo = new TemplateParsingBase(link, fieldList, tables, "@(Model.OriginalPrimaryKey)", @(Model.WebType), @(Model.PrimaryKeyPolicy), uploaderKey.ToList(), "@(Model.ImportDataType)"); @: @:// 错误数据 @:tInfo.selectKey.Add("errorsInfo"); @:tInfo.AllFieldsModel.Add(new FieldsModel() { __vModel__ = "errorsInfo", __config__ = new ConfigModel() { label = "异常原因" } }); @:for (var i = 0; i < list.list.Count(); i++) list.list[i].Add("id", i); @: @:var result = ExportImportDataHelper.GetCreateFirstColumnsHeader(tInfo.selectKey, list.list, paramList); @:var firstColumns = result.First().ToObject>(); @:var resultList = result.Last().ToObject>>(); @:_cacheManager.Set(string.Format("{0} 导入错误报告.xls", tInfo.FullName), string.Empty); @:return firstColumns.Any() @:? await _exportImportDataHelper.ExcelCreateModel(tInfo, resultList, string.Format("{0} 导入错误报告", tInfo.FullName), firstColumns) @:: await _exportImportDataHelper.ExcelCreateModel(tInfo, resultList, string.Format("{0} 导入错误报告", tInfo.FullName)); @:} break; @*详情*@ case "detail": @: @:/// @:/// @(Model.BusName)详情. @:/// @:/// 主键值. @:/// @:[HttpGet("Detail/{id}")] @:public async Task GetDetails(@(Model.PrimaryKeyPolicy == 1 ? "string" : "long") id) @:{ @if(Model.DbLinkId != "0") { @:var dbLink = await _repository.AsSugarClient().Queryable().FirstAsync(it => it.Id.Equals("@(Model.DbLinkId)")); @:_sqlSugarClient = _dataBaseManager.ChangeDataBase(dbLink); @: } @:var data = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @foreach(var table in Model.AuxiliayTableRelations) { @:.Includes(x => x.@(table.ClassName)) } @:.Where(it => it.@(Model.PrimaryKey) == id) @:.ToListAsync(it => new @(Model.ClassName)DetailOutput @:{ @*循环展示字段*@ @foreach (var column in Model.TableField){ @{var parameterName = string.Empty;} @{var parameterValue = string.Empty;} @switch(column.IsAuxiliary) { case true: @{parameterName = "jnpf_" + @column.TableName + "_jnpf_" + @column.LowerColumnName;} @{parameterValue = "it." + @column.ClassName;} break; default: @{parameterName = @column.LowerColumnName;} @{parameterValue = "it";} break; } @if (column.PrimaryKey){ @:@(column.LowerColumnName) = it.@column.ColumnName, }else if(column.jnpfKey != null){ @switch(column.jnpfKey) { case "uploadFz": case "uploadImg": @:@(parameterName)List = @(parameterValue).@(column.ColumnName), break; case "switch": @:@(parameterName) = SqlFunc.IIF(@(parameterValue).@(column.ColumnName) == 0, "@(column.InactiveTxt)", "@(column.ActiveTxt)"), break; case "date": @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.IsAuxiliary ? "" : ".Value.ToString(\"" + column.Format + "\")"), break; case "createTime": case "modifyTime": @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.IsAuxiliary ? "" : ".Value.ToString(\"yyyy-MM-dd HH:mm\")"), break; case "modifyUser": case "createUser": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)), break; case "currOrganize": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(o => o.FullName), break; case "currPosition": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(p => p.FullName), break; case "userSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(u => u.RealName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; case "posSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(p => p.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; case "depSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(o => o.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; case "roleSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ROLE\")" : "").Where(r => r.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(r => r.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; case "groupSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_GROUP\")" : "").Where(g => g.Id.Equals(@(parameterValue).@(column.ColumnName))).Select(g => g.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; case "radio": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_DICTIONARYDATA\")" : "").Where(dic => dic.@(column.Value == "id" ? "Id" : "EnCode").Equals(@(parameterValue).@(column.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.DataType == "int" ? ".ToString()" : ""), } break; default: @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.DataType == "int" ? ".ToString()" : "")@(column.NetType == "int" ? ".ToString()" : ""), break; } break; case "select": case "treeSelect": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_DICTIONARYDATA\")" : "").Where(dic => dic.@(column.Value == "id" ? "Id" : "EnCode").Equals(@(parameterValue).@(column.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(parameterName) = @(parameterValue).@(column.ColumnName), } break; default: @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.NetType == "int" ? ".ToString()" : ""), break; } break; default: @:@(parameterName) = @(parameterValue).@(column.ColumnName)@(column.NetType == "int" ? ".ToString()" : ""), break; } } } @:}); @if(Model.IsConversion) { @: @:await _repository.AsSugarClient().ThenMapperAsync(data, async item => @:{ @foreach (var column in Model.TableField) { @{var dataCount = column.StaticData != null ? column.StaticData.Count : 0;} @*参数名*@ @{var parameterName = string.Empty;} @switch(column.IsAuxiliary) { case true: @{parameterName = "jnpf_" + @column.TableName + "_jnpf_" + @column.LowerColumnName;} break; default: @{parameterName = @column.LowerColumnName;} break; } @if(column.IsConversion) { @switch(column.jnpfKey) { case "uploadFz": case "uploadImg": @:if(item.@(parameterName)List != null) @:{ @:item.@(parameterName) = item.@(parameterName)List.ToObject>(); @:item.@(parameterName)List = null; @:} @:else @:{ @:item.@(parameterName) = new List(); @:} @: break; case "select": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(parameterName) = @(parameterName)Data.Find(it => item.@(parameterName).Equals(it.id))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; case "dictionary": @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(parameterName) != null) @:{ @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @if(!column.IsMultiple) { @:item.@(parameterName) = @(parameterName)Data.Find(it => it.id.Equals(item.@(parameterName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; } @: break; case "checkbox": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); @:} break; case "dictionary": @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(parameterName) != null) @:{ @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); @:} break; } @: break; case "radio": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(parameterName) != null) @:{ @:item.@(parameterName) = @(parameterName)Data.Find(it => item.@(parameterName).Equals(it.id))?.fullName; @:} break; case "dynamic": @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(parameterName) != null) @:{ @:item.@(parameterName) = string.Join(",", @(parameterName)Data .Find(it => it.id.Equals(item.@(parameterName)))?.fullName); @:} break; } @: break; case "cascader": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join("@(column.Separator)", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>>(); @:var @(parameterName)Excessive = new List(); @:foreach (var @(parameterName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(parameterName)Excessive.Add(string.Join("@(column.Separator)", @(parameterName)Data.FindAll(it => @(parameterName).Contains(it.id)).Select(it => it.fullName))); @:} @: @:item.@(parameterName) = string.Join(",", @(parameterName)Excessive); } @:} break; case "dictionary": @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join("@(column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(it => it.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>>(); @:var @(parameterName)Excessive = new List(); @:foreach (var @(parameterName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(parameterName)Excessive.Add(string.Join("@(column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(parameterName).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(it => it.FullName).ToListAsync())); @:} @:item.@(parameterName) = string.Join(",", @(parameterName)Excessive); } @:} break; case "dynamic": @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join("@(column.Separator)", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>>(); @:var @(parameterName)Excessive = new List(); @:foreach (var @(parameterName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(parameterName)Excessive.Add(string.Join("@(column.Separator)", @(parameterName)Data.FindAll(it => @(parameterName).Contains(it.id)).Select(it => it.fullName))); @:} @: @:item.@(parameterName) = string.Join(",", @(parameterName)Excessive); } @:} break; } @: break; case "comSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>>(); @:var @(parameterName)Excessive = new List(); @:foreach (var @(parameterName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(parameterName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(parameterName).Contains(it.Id)).Select(it => it.FullName).ToListAsync())); @:} @: @:item.@(parameterName) = string.Join(",", @(parameterName)Excessive); } @:} @: break; case "depSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "posSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "userSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.RealName).ToListAsync()); @:} @: break; case "roleSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "groupSelect": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "treeSelect": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(parameterName) = @(parameterName)Data.Find(it => it.id.Equals(item.@(parameterName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; case "dictionary": @if(column.IsMultiple) { @:if(item.@(parameterName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} } break; case "dynamic": @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(parameterName) = @(parameterName)Data.Find(it => it.id.Equals(item.@(parameterName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; } @: break; case "address": @:// @column.ColumnComment @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>>(); @:var @(parameterName)Excessive = new List(); @:foreach (var @(parameterName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(parameterName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(a => @(parameterName).Contains(it.Id)).Select(it => it.FullName).ToListAsync())); @:} @: @:item.@(parameterName) = string.Join(",", @(parameterName)Excessive); } @:} @: break; case "popupTableSelect": @:// @column.ColumnComment @:var @(parameterName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(parameterName) = @(parameterName)Data.Find(it => it.id.Equals(item.@(parameterName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(parameterName).ToObject>(); @:item.@(parameterName) = string.Join(",", @(parameterName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} @: break; } } } @:}); @: } @if(Model.ParsJnpfKeyConstListDetails.Count > 0) { @:var resData = data.ToObject>>(CommonConst.options); @foreach (var jnpfKeyConst in Model.ParsJnpfKeyConstListDetails) { @:resData = await _controlParsing.GetParsDataList(resData,"@(jnpfKeyConst[1])","@(jnpfKeyConst[0])",_userManager.TenantId); } @:data = resData.ToObject>(CommonConst.options); } @:return data.FirstOrDefault(); @:} break; } } } @{ @*获取列表数据转换模板*@ void GetListDataConversionTemplate() { @foreach (var column in Model.TableField) { @{var dataCount = column.StaticData != null ? column.StaticData.Count : 0;} @*参数名*@ @{var parameterName = string.Empty;} @switch(column.IsAuxiliary) { case true: @{parameterName = "jnpf_" + @column.TableName + "_jnpf_" + @column.LowerColumnName;} break; default: @{parameterName = @column.LowerColumnName;} break; } @if(column.IsConversion && column.IsShow) { @switch(column.jnpfKey) { case "select": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(@parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(@parameterName) = @(@parameterName)Data.Find(it => item.@(@parameterName).Equals(it.id))?.fullName; }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; case "dictionary": @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(@column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(@parameterName) != null) @:{ @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", ""); @if(!column.IsMultiple) { @:item.@(@parameterName) = @(@parameterName)Data.Find(it => it.id.Equals(item.@(@parameterName)))?.fullName; }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; } @: break; case "checkbox": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(@parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); @:} break; case "dictionary": @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(@column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(@parameterName) != null) @:{ @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", ""); @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); @:} break; } @: break; case "radio": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(@parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(@parameterName) != null) @:{ @:item.@(@parameterName) = @(@parameterName)Data.Find(it => item.@(@parameterName).Equals(it.id))?.fullName; @:} break; case "dynamic": @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", "@(@column.Children)"); @:if(item.@(@parameterName) != null) @:{ @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data .Find(it => it.id.Equals(item.@(@parameterName)))?.fullName); @:} break; } @: break; case "cascader": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(@parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join("@(@column.Separator)", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>>(); @:var @(@parameterName)Excessive = new List(); @:foreach (var @(@parameterName) in @(@column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(@parameterName)Excessive.Add(string.Join("@(@column.Separator)", @(@parameterName)Data.FindAll(it => @(@parameterName).Contains(it.id)).Select(it => it.fullName))); @:} @: @:item.@(@parameterName) = string.Join(",", @(@parameterName)Excessive); } @:} break; case "dictionary": @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join("@(@column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(@column.propsUrl)")).Select(it => it.FullName).ToListAsync()); }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>>(); @:var @(@parameterName)Excessive = new List(); @:foreach (var @(@parameterName) in @(@column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(@parameterName)Excessive.Add(string.Join("@(@column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(@parameterName).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(@column.propsUrl)")).Select(it => it.FullName).ToListAsync())); @:} @:item.@(@parameterName) = string.Join(",", @(@parameterName)Excessive); } @:} break; case "dynamic": @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", "@(@column.Children)"); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join("@(@column.Separator)", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>>(); @:var @(@parameterName)Excessive = new List(); @:foreach (var @(@parameterName) in @(@column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(@parameterName)Excessive.Add(string.Join("@(@column.Separator)", @(@parameterName)Data.FindAll(it => @(@parameterName).Contains(it.id)).Select(it => it.fullName))); @:} @: @:item.@(@parameterName) = string.Join(",", @(@parameterName)Excessive); } @:} break; } @: break; case "comSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>>(); @:var @(@parameterName)Excessive = new List(); @:foreach (var @(@parameterName) in @(@column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(@parameterName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(@parameterName).Contains(it.Id)).Select(it => it.FullName).ToListAsync())); @:} @: @:item.@(@parameterName) = string.Join(",", @(@parameterName)Excessive); } @:} @: break; case "depSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "posSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "userSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.RealName).ToListAsync()); @:} @: break; case "roleSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "groupSelect": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); @:} @: break; case "treeSelect": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(@parameterName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(@parameterName) = @(@parameterName)Data.Find(it => it.id.Equals(item.@(@parameterName)))?.fullName; }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; case "dictionary": @if(column.IsMultiple) { @:if(item.@(@parameterName) != null) @:{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(@column.propsUrl)")).Select(it => it.FullName).ToListAsync()); @:} } break; case "dynamic": @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", "@(@column.Children)"); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(@parameterName) = @(@parameterName)Data.Find(it => it.id.Equals(item.@(@parameterName)))?.fullName; }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} break; } @: break; case "address": @:// @column.ColumnComment @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(it => it.FullName).ToListAsync()); }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>>(); @:var @(@parameterName)Excessive = new List(); @:foreach (var @(@parameterName) in @(@column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(@parameterName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(@parameterName).Contains(it.Id)).Select(it => it.FullName).ToListAsync())); @:} @: @:item.@(@parameterName) = string.Join(",", @(@parameterName)Excessive); } @:} @: break; case "popupTableSelect": @:// @column.ColumnComment @:var @(@parameterName)Data = await _dataInterfaceService.GetDynamicList("@(@column.propsUrl)", "@(@column.Value)", "@(@column.Label)", "@(@column.Children)"); @:if(item.@(@parameterName) != null) @:{ @if(!column.IsMultiple) { @:item.@(@parameterName) = @(@parameterName)Data.Find(it => it.id.Equals(item.@(@parameterName)))?.fullName; }else{ @:var @(@column.LowerColumnName + @column.upperJnpfKey) = item.@(@parameterName).ToObject>(); @:item.@(@parameterName) = string.Join(",", @(@parameterName)Data.FindAll(it => @(@column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(it => it.fullName)); } @:} @: break; } } } } void GetTheListDisplayFieldTemplate() { @*循环展示字段*@ @foreach (var column in Model.TableField){ @{var parameterName = string.Empty;} @switch(column.IsAuxiliary) { case true: @{parameterName = "jnpf_" + @column.TableName + "_jnpf_" + @column.LowerColumnName;} break; default: @{parameterName = @column.LowerColumnName;} break; } @if (column.PrimaryKey){ @:@(column.LowerColumnName) = it.@column.ColumnName, }else if(column.IsShow){ @switch(column.jnpfKey) { case "date": @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)@(column.IsAuxiliary ? "" : ".Value.ToString(\"" + column.Format + "\")"), break; case "createTime": case "modifyTime": @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)@(column.IsAuxiliary ? "" : ".Value.ToString(\"yyyy-MM-dd HH:mm\")"), break; case "switch": @:@(parameterName) = SqlFunc.IIF(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName) == 0, "@(column.InactiveTxt)", "@(column.ActiveTxt)"), break; case "modifyUser": case "createUser": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)), break; case "currOrganize": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(o => o.FullName), break; case "currPosition": @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(p => p.FullName), break; case "userSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(u => u.RealName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; case "posSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(p => p.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; case "depSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(o => o.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; case "roleSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ROLE\")" : "").Where(r => r.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(r => r.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; case "groupSelect": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_GROUP\")" : "").Where(g => g.Id.Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName))).Select(g => g.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; case "radio": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_DICTIONARYDATA\")" : "").Where(dic => dic.@(column.Value == "id" ? "Id" : "EnCode").Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; default: @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)@(column.NetType == "int" ? ".ToString()" : ""), break; } break; case "select": case "treeSelect": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(parameterName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_DICTIONARYDATA\")" : "").Where(dic => dic.@(column.Value == "id" ? "Id" : "EnCode").Equals(it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName), } break; default: @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)@(column.NetType == "int" ? ".ToString()" : ""), break; } break; default: @:@(parameterName) = it@(column.IsAuxiliary ? "." + column.ClassName : "").@(column.ColumnName)@(column.NetType == "int" ? ".ToString()" : ""), break; } } } @if(Model.EnableFlow) { @:flowState = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.FLOW_TASK\")" : "").Where(f => f.Id.Equals(it.@(Model.PrimaryKeyPolicy == 1 ? Model.PrimaryKey : "FlowTaskId"))).Select(f => f.Status), } @if(Model.EnableFlow && Model.PrimaryKeyPolicy == 2) { @:flowTaskId = it.FlowTaskId } } void GetTheListQueryCriteriaTemplate() { @*循环查询条件*@ @foreach(var field in Model.TableField) { @*是否查询条件*@ @switch(field.QueryWhether) { case true: @switch(field.IsAuxiliary) { case true: @*查询方式*@ @switch(field.QueryType) { @*查询方式为等于*@ case 1: @*多选控件*@ @if(field.IsMultiple) { @:.WhereIF(!string.IsNullOrEmpty(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName)), it => it.@(field.ClassName).@(field.ColumnName).Contains(auxiliary@(field.ColumnName)_@(field.TableNo))) }else{ @switch(field.jnpfKey) { case "cascader": case "address": case "comSelect": case "currOrganize": @:.WhereIF(!string.IsNullOrEmpty(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName)), it => it.@(field.ClassName).@(field.ColumnName).Contains(auxiliary@(field.ColumnName)_@(field.TableNo))) break; case "checkbox": @:.WhereIF(!string.IsNullOrEmpty(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName)), it => it.@(field.ClassName).@(field.ColumnName).Contains(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName))) break; case "usersSelect": @:.Where(_controlParsing.GetUsersSelectQueryWhere("@(field.OriginalColumnName)", input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName), @(field.IsMultiple.ToString().ToLower()))) break; default: @:.WhereIF(!string.IsNullOrEmpty(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName)), it => it.@(field.ClassName).@(field.ColumnName).Equals(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName))) break; } } break; @*查询类型为模糊查询*@ case 2: @:.WhereIF(!string.IsNullOrEmpty(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName)), it => it.@(field.ClassName).@(field.ColumnName).Contains(input.jnpf_@(field.TableName)_jnpf_@(field.LowerColumnName))) break; @*查询类型为范围查询*@ case 3: @switch(field.jnpfKey) { case "time": case "numInput": case "calculate": @:.WhereIF(queryAuxiliary@(field.ColumnName)_@(field.TableNo) != null, it => SqlFunc.Between(it.@(field.ClassName).@(field.ColumnName), startAuxiliary@(field.ColumnName)_@(field.TableNo), endAuxiliary@(field.ColumnName)_@(field.TableNo))) break; default: @if(field.IsDateTime) { @:.WhereIF(queryAuxiliary@(field.ColumnName)_@(field.TableNo) != null, it => SqlFunc.Between(it.@(field.ClassName).@(field.ColumnName), startAuxiliary@(field.ColumnName)_@(field.TableNo).ParseToDateTime("yyyy-MM-dd HH:mm:ss"), endAuxiliary@(field.ColumnName)_@(field.TableNo).ParseToDateTime("yyyy-MM-dd HH:mm:ss"))) }else{ @:.WhereIF(queryAuxiliary@(field.ColumnName)_@(field.TableNo) != null, it => SqlFunc.Between(it.@(field.ClassName).@(field.ColumnName), startAuxiliary@(field.ColumnName)_@(field.TableNo).ParseToDateTime("yyyy-MM-dd 00:00:00"), endAuxiliary@(field.ColumnName)_@(field.TableNo).ParseToDateTime("yyyy-MM-dd 23:59:59"))) } break; } break; } break; default: @*查询方式*@ @switch(field.QueryType) { @*查询方式为等于*@ case 1: @*多选控件*@ @if(field.IsMultiple) { @:.WhereIF(!string.IsNullOrEmpty(input.@(field.LowerColumnName)), it => it.@(field.ColumnName).Contains(@(field.LowerColumnName))) }else{ @switch(field.jnpfKey) { case "cascader": case "address": case "comSelect": case "currOrganize": @:.WhereIF(!string.IsNullOrEmpty(input.@(field.LowerColumnName)), it => it.@(field.ColumnName).Contains(@(field.LowerColumnName))) break; case "checkbox": @:.WhereIF(!string.IsNullOrEmpty(input.@(field.LowerColumnName)), it => it.@(field.ColumnName).Contains(input.@(field.LowerColumnName))) break; case "usersSelect": @:.Where(_controlParsing.GetUsersSelectQueryWhere("@(field.OriginalColumnName)", input.@(field.LowerColumnName), @(field.IsMultiple.ToString().ToLower()))) break; default: @:.WhereIF(!string.IsNullOrEmpty(input.@(field.LowerColumnName)), it => it.@(field.ColumnName).Equals(input.@(field.LowerColumnName))) break; } } break; @*查询类型为模糊查询*@ case 2: @:.WhereIF(!string.IsNullOrEmpty(input.@(field.LowerColumnName)), it => it.@(field.ColumnName).Contains(input.@(field.LowerColumnName))) break; @*查询类型为范围查询*@ case 3: @switch(field.jnpfKey) { case "time": case "numInput": case "calculate": @:.WhereIF(query@(field.ColumnName) != null, it => SqlFunc.Between(it.@(field.ColumnName), start@(field.ColumnName), end@(field.ColumnName))) break; default: @if(field.IsDateTime) { @:.WhereIF(query@(field.ColumnName) != null, it => SqlFunc.Between(it.@(field.ColumnName), start@(field.ColumnName).ParseToDateTime("yyyy-MM-dd HH:mm:ss"), end@(field.ColumnName).ParseToDateTime("yyyy-MM-dd HH:mm:ss"))) }else{ @:.WhereIF(query@(field.ColumnName) != null, it => SqlFunc.Between(it.@(field.ColumnName), start@(field.ColumnName).ParseToDateTime("yyyy-MM-dd 00:00:00"), end@(field.ColumnName).ParseToDateTime("yyyy-MM-dd 23:59:59"))) } break; } break; } break; } break; } } } void GetListQueryFieldTemplate() { @foreach(var table in Model.TableField) { @*是查询条件*@ @if(table.QueryWhether) { @switch(table.QueryType) { case 1: @switch(table.IsAuxiliary) { case true: @switch(table.jnpfKey) { case "cascader": case "address": case "comSelect": case "currOrganize": @:var auxiliary@(table.ColumnName)_@(table.TableNo) = input.jnpf_@(table.TableName)_jnpf_@(table.LowerColumnName)?.Split(',').ToList().Last(); break; default: @if(table.IsMultiple) { @:var auxiliary@(table.ColumnName)_@(table.TableNo) = input.jnpf_@(table.TableName)_jnpf_@(table.LowerColumnName)?.Split(',').ToList().Last(); } break; } break; default: @switch(table.jnpfKey) { case "cascader": case "address": case "comSelect": case "currOrganize": @:var @(table.LowerColumnName) = input.@(table.LowerColumnName)?.Split(',').ToList().Last(); break; default: @if(table.IsMultiple) { @:var @(table.LowerColumnName) = input.@(table.LowerColumnName)?.Split(',').ToList().Last(); } break; } break; } break; case 3: @switch(table.IsAuxiliary) { case true: @switch(table.jnpfKey) { case "time": @:List queryAuxiliary@(table.ColumnName)_@(table.TableNo) = input.jnpf_@(table.TableName)_jnpf_@(table.LowerColumnName)?.Split(',').ToObject>(); @:var startAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.First(); @:var endAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.Last(); break; case "numInput": case "calculate": @:List queryAuxiliary@(table.ColumnName)_@(table.TableNo) = input.jnpf_@(table.TableName)_jnpf_@(table.LowerColumnName)?.Split(',').ToObject>(); @:var startAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.First().ParseToDecimal() == 0 ? decimal.MinValue : queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.First().ParseToDecimal(); @:var endAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.Last().ParseToDecimal() == 0 ? decimal.MaxValue : queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.Last().ParseToDecimal(); break; default: @:List queryAuxiliary@(table.ColumnName)_@(table.TableNo) = input.jnpf_@(table.TableName)_jnpf_@(table.LowerColumnName)?.Split(',').ToObject>(); @:DateTime? startAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.First(); @:DateTime? endAuxiliary@(table.ColumnName)_@(table.TableNo) = queryAuxiliary@(table.ColumnName)_@(table.TableNo)?.Last(); break; } break; default: @switch(table.jnpfKey) { case "time": @:List query@(table.ColumnName) = input.@(table.LowerColumnName)?.Split(',').ToObject>(); @:var start@(table.ColumnName) = query@(table.ColumnName)?.First(); @:var end@(table.ColumnName) = query@(table.ColumnName)?.Last(); break; case "numInput": case "calculate": @:List query@(table.ColumnName) = input.@(table.LowerColumnName)?.Split(',').ToObject>(); @:var start@(table.ColumnName) = query@(table.ColumnName)?.First().ParseToDecimal() == 0 ? decimal.MinValue : query@(table.ColumnName)?.First().ParseToDecimal(); @:var end@(table.ColumnName) = query@(table.ColumnName)?.Last().ParseToDecimal() == 0 ? decimal.MaxValue : query@(table.ColumnName)?.Last().ParseToDecimal(); break; default: @:List query@(table.ColumnName) = input.@(table.LowerColumnName)?.Split(',').ToObject>(); @:DateTime? start@(table.ColumnName) = query@(table.ColumnName)?.First(); @:DateTime? end@(table.ColumnName) = query@(table.ColumnName)?.Last(); break; } break; } break; } } } } void GetTheNewDataMethodTemplate() { @foreach(var column in Model.TableField) { @if(!column.IsAuxiliary) { @switch(column.jnpfKey) { case "createTime": @:entity.@column.ColumnName = DateTime.Now; break; case "createUser": @:entity.@column.ColumnName = _userManager.UserId; break; case "currPosition": @:entity.@column.ColumnName = _userManager.User.PositionId; break; case "currOrganize": @:entity.@column.ColumnName = _userManager.User.OrganizeId; break; case "billRule": @:entity.@column.ColumnName = await _billRullService.GetBillNumber("@(column.Rule)"); break; } } } @if(Model.IsUnique) { @foreach(var column in Model.TableField) { @if(column.IsUnique && !column.IsAuxiliary) { @: @:if(await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<"+ Model.ClassName +"Entity>()." : "_repository.Is")AnyAsync(it => it.@(column.ColumnName).Equals(input.@(column.LowerColumnName)))) @:throw Oops.Bah("@(column.ControlLabel)不能重复"); } } } @*副表新增参数填充开始*@ @foreach(var table in Model.AuxiliayTableRelations) { @: @:var auxiliay@(table.ClassName) = input.Adapt<@(table.ClassName)CrInput>().Adapt<@(table.ClassName)Entity>(); @if(Model.PrimaryKeyPolicy == 1) { @:auxiliay@(table.ClassName).@(table.PrimaryKey) = SnowflakeIdHelper.NextId(); } @foreach(var column in Model.TableField) { @if(column.IsAuxiliary && column.TableName == table.OriginalTableName) { @switch(column.jnpfKey) { case "createTime": @:auxiliay@(table.ClassName).@column.ColumnName = DateTime.Now; break; case "createUser": @:auxiliay@(table.ClassName).@column.ColumnName = _userManager.UserId; break; case "currPosition": @:auxiliay@(table.ClassName).@column.ColumnName = _userManager.User.PositionId; break; case "currOrganize": @:auxiliay@(table.ClassName).@column.ColumnName = _userManager.User.OrganizeId; break; case "billRule": @:auxiliay@(table.ClassName).@column.ColumnName = await _billRullService.GetBillNumber("@(column.Rule)"); break; } } } @*文本框唯一值判断开始*@ @foreach(var column in Model.TableField) { @if(column.IsAuxiliary && column.TableName == table.OriginalTableName && column.IsUnique) { @: @:if(await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").Queryable<@(table.ClassName)Entity>().AnyAsync(it => it.@(column.ColumnName).Equals(auxiliay@(table.ClassName).@(column.ColumnName)))) @:throw Oops.Bah("@(column.ControlLabel)不能重复"); } } @*文本框唯一值判断结束*@ @: @:entity.@(table.ClassName) = auxiliay@(table.ClassName); } @*副表新增参数填充结束*@ @: @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").InsertNav(entity) @foreach(var table in Model.AuxiliayTableRelations) { @:.Include(it => it.@(table.ClassName)) } @:.ExecuteCommandAsync(); } void GetAndModifyDataMethodTemplate() { @foreach(var column in Model.TableField) { @if(!column.IsAuxiliary) { @switch(column.jnpfKey) { case "modifyTime": @:entity.@column.ColumnName = DateTime.Now; break; case "modifyUser": @:entity.@column.ColumnName = _userManager.UserId; break; } } } @foreach(var table in Model.AuxiliayTableRelations) { @: @:var auxiliay@(table.ClassName) = input.Adapt<@(table.ClassName)CrInput>().Adapt<@(table.ClassName)Entity>(); @:auxiliay@(table.ClassName).@(table.TableField) = entity.@(table.RelationField); @foreach(var column in Model.TableField) { @if(column.IsAuxiliary && column.TableName == table.OriginalTableName) { @switch(column.jnpfKey) { case "modifyTime": @:auxiliay@(table.ClassName).@column.ColumnName = DateTime.Now; break; case "modifyUser": @:auxiliay@(table.ClassName).@column.ColumnName = _userManager.UserId; break; } } } } @if(Model.IsUnique) { @foreach(var column in Model.TableField) { @if(!column.IsAuxiliary && column.IsUnique) { @: @:if (await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()." : "_repository.Is")AnyAsync(it => it.@(column.ColumnName).Equals(input.@(column.LowerColumnName)) && !it.@(Model.PrimaryKey).Equals(id))) @:throw Oops.Bah("@(column.ControlLabel)不能重复"); } } } @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient." : "_repository.As")Updateable(entity) @*主表是否存在系统自动添加字段*@ @if(Model.IsUpdate || Model.ConcurrencyLock) { @:.UpdateColumns(it => new { @foreach(var column in Model.TableField) { @if(!column.IsAuxiliary && column.IsUpdate) { @:it.@(column.ColumnName), } } @if(Model.ConcurrencyLock) { @:it.Version, } @:}) } @if(Model.ConcurrencyLock) { @:.ExecuteCommandWithOptLockAsync(true); }else{ @:.ExecuteCommandAsync(); } @foreach(var table in Model.AuxiliayTableRelations) { @: @foreach(var column in Model.TableField) { @if(column.IsAuxiliary && column.IsUnique && column.TableName == table.OriginalTableName) { @:if (await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").Queryable<@(Model.ClassName)Entity>().AnyAsync(it => it.@(column.ColumnName).Equals(auxiliay@(table.ClassName).@(column.ColumnName)) && !it.@(table.TableField).Equals(entity.@(table.RelationField)))) @:throw Oops.Bah("@(column.ControlLabel)不能重复"); @: } } @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient" : "_repository.AsSugarClient()").Updateable(auxiliay@(table.ClassName)) @if(table.IsUpdate) { @:.UpdateColumns(it => new { @foreach(var column in Model.TableField) { @if(column.IsAuxiliary && column.TableName == table.OriginalTableName && column.IsUpdate) { @:it.@(column.ColumnName), } } @:}) } @:.Where(it => it.@(table.TableField) == entity.@(table.RelationField)).ExecuteCommandAsync(); } } }