using JNPF.Common.Core.Manager; @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; } using JNPF.Common.CodeGen.DataParsing; using JNPF.Common.Const; using JNPF.Common.Manager; using JNPF.Common.Enums; using JNPF.Common.Extension; using JNPF.Common.Filter; using JNPF.Common.Models; using JNPF.Common.Security; @if(Model.IsBatchRemove) { @:using JNPF.DatabaseAccessor; } using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; 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; 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.Type == 3 ? ".WorkFlowForm" : ""); /// /// 业务实现:@(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){@(importField==0 ? "\"" + table.OriginalColumnName + "\"" : ", \"" + table.OriginalColumnName + "\"") 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); @: } @:return (await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @if(Model.IsSystemControl) { @:.Select(it => new @(Model.ClassName)Entity @:{ @*循环展示字段*@ @foreach (var column in Model.TableField){ @if (column.PrimaryKey){ @:@(column.ColumnName) = it.@column.ColumnName, }else if(column.jnpfKey != null){ @switch(column.jnpfKey) { case "modifyUser": case "createUser": @:@(column.ColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it.@(column.ColumnName))).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)), break; case "currOrganize": @:@(column.ColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it.@(column.ColumnName))).Select(o => o.FullName), break; case "currPosition": @:@(column.ColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it.@(column.ColumnName))).Select(p => p.FullName), break; default: @:@(column.ColumnName) = it.@column.ColumnName, break; } } } @if(Model.ConcurrencyLock) { @:Version = it.Version, } @:}) } @:.FirstAsync(it => it.@(Model.EnableFlow && Model.PrimaryKeyPolicy == 2 ? "FlowTaskId" : Model.PrimaryKey).Equals(id))).Adapt<@(Model.ClassName)InfoOutput>(); @:} 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 "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()") @:.Select(it => new @(Model.ClassName)DetailOutput @:{ @*循环展示字段*@ @foreach (var column in Model.TableField){ @if (column.PrimaryKey){ @:@(column.LowerColumnName) = it.@column.ColumnName, }else if(column.jnpfKey != null){ @switch(column.jnpfKey) { case "uploadFz": case "uploadImg": @:@(column.LowerColumnName)List = it.@column.ColumnName, break; case "switch": @:@(column.LowerColumnName) = SqlFunc.IIF(it.@(column.ColumnName) == 0, "@(column.InactiveTxt)", "@(column.ActiveTxt)"), break; case "date": @:@(column.LowerColumnName) = it.@(column.ColumnName).Value.ToString("@(column.Format)"), break; case "createTime": case "modifyTime": @:@(column.LowerColumnName) = it.@(column.ColumnName).Value.ToString("yyyy-MM-dd HH:mm"), break; case "modifyUser": case "createUser": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it.@(column.ColumnName))).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)), break; case "currOrganize": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it.@(column.ColumnName))).Select(o => o.FullName), break; case "currPosition": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it.@(column.ColumnName))).Select(p => p.FullName), break; case "userSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it.@(column.ColumnName))).Select(u => u.RealName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "posSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it.@(column.ColumnName))).Select(p => p.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "depSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it.@(column.ColumnName))).Select(o => o.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "roleSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ROLE\")" : "").Where(r => r.Id.Equals(it.@(column.ColumnName))).Select(r => r.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "groupSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_GROUP\")" : "").Where(g => g.Id.Equals(it.@(column.ColumnName))).Select(g => g.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "select": case "radio": case "treeSelect": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = 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.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; default: @:@(column.LowerColumnName) = it.@column.ColumnName@(column.NetType == "int" ? ".ToString()" : ""), break; } break; default: @:@(column.LowerColumnName) = it.@column.ColumnName@(column.NetType == "int" ? ".ToString()" : ""), break; } } } @:}).MergeTable().Where(it => it.@(Model.LowerPrimaryKey) == id).ToListAsync(); @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;} @if(column.IsConversion) { @switch(column.jnpfKey) { case "uploadFz": case "uploadImg": @:if(item.@(column.LowerColumnName)List != null) @:{ @:item.@(column.LowerColumnName) = item.@(column.LowerColumnName)List.ToObject>(); @:} @:else @:{ @:item.@(column.LowerColumnName) = new List(); @:} @: break; case "select": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => item.@(column.LowerColumnName).Equals(it.id))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; case "dictionary": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; } @: break; case "checkbox": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); @:} break; case "dictionary": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); @:} break; } @: break; case "radio": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => item.@(column.LowerColumnName).Equals(it.id))?.fullName; @:} break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data .Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName); @:} break; } @: break; case "cascader": @switch(column.ControlsDataType) { case "static": @:// @column.ColumnComment @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName).Contains(it.id)).Select(s => s.fullName))); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} break; case "dictionary": @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(a => a.FullName).ToListAsync())); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName).Contains(it.id)).Select(a => a.fullName))); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} break; } @: break; case "comSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName).Contains(it.Id)).Select(a => a.FullName).ToListAsync())); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} @: break; case "depSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "posSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "userSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.Id)).Select(a => a.RealName).ToListAsync()); @:} @: break; case "roleSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "groupSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "treeSelect": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; case "dictionary": @if(column.IsMultiple) { @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.@(column.Value == "id" ? "Id" : "EnCode")) && a.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(a => a.FullName).ToListAsync()); @:} } break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(a => a.fullName)); } @:} break; } @: break; case "address": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.Id)).Select(a => a.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName).Contains(a.Id)).Select(a => a.FullName).ToListAsync())); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} @: break; case "popupTableSelect": @:// @column.ColumnComment @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(a => a.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; @*分页列表*@ 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(); @: @:// 数据权限过滤 @:if (_userManager.User.IsAdministrator == 0) @:{ @:authorizeWhere = await _userManager.GetConditionAsync<@(Model.ClassName)ListOutput>(input.menuId, "@(Model.OriginalPrimaryKey)", _userManager.UserOrigin.Equals("pc") ? @(Model.PcUseDataPermission) : @(Model.AppUseDataPermission)); @:} @: } @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); } @{ GetListQueryFieldTemplate(); } @:var data = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @{ GetTheListQueryCriteriaTemplate(); } @if(Model.UseDataPermission) { @:.Where(authorizeWhere) } @if(Model.HasSuperQuery) { @:.Where(mainConditionalModel) } @:.Select(it => new @(Model.ClassName)ListOutput @:{ @{ GetTheListDisplayFieldTemplate(); } @:}).MergeTable().OrderByIF(string.IsNullOrEmpty(input.sidx), it => it.@(Model.LowerPrimaryKey)).OrderByIF(!string.IsNullOrEmpty(input.sidx), input.sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize); @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 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(); @: @:// 数据权限过滤 @:if (_userManager.User.IsAdministrator == 0) @:{ @:authorizeWhere = await _userManager.GetConditionAsync<@(Model.ClassName)ListOutput>(input.menuId, "@(Model.OriginalPrimaryKey)", _userManager.UserOrigin.Equals("pc") ? @(Model.PcUseDataPermission) : @(Model.AppUseDataPermission)); @:} @: } @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); } @{ GetListQueryFieldTemplate(); } @:var list = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Queryable<" + Model.ClassName + "Entity>()" : "_repository.AsQueryable()") @{ GetTheListQueryCriteriaTemplate(); } @if(Model.UseDataPermission) { @:.Where(authorizeWhere) } @if(Model.HasSuperQuery) { @:.Where(mainConditionalModel) } @:.Select(it => new @(Model.ClassName)ListOutput @:{ @{ GetTheListDisplayFieldTemplate(); } @:}).MergeTable().OrderByIF(string.IsNullOrEmpty(input.sidx), it => it.@(Model.LowerPrimaryKey)).OrderByIF(!string.IsNullOrEmpty(input.sidx), input.sidx + " " + input.sort).ToListAsync(); @if(Model.IsConversion) { @: @:await _repository.AsSugarClient().ThenMapperAsync(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 jnpfKeyConst in Model.ParsJnpfKeyConstList) { @:resData = await _controlParsing.GetParsDataList(resData, "@(jnpfKeyConst[1])", "@(jnpfKeyConst[0])", _userManager.TenantId, fieldList); } @: @:list = resData.ToObject>(CommonConst.options); } @if(Model.IndexDataType == 3) { @: @:return _userManager.UserOrigin.Equals("pc") ? CodeGenHelper.GetGroupList(list.ToObject>>(CommonConst.options), "@(Model.GroupField)", "@(Model.GroupShowField)") : list; }else{ @: @:return list; } @:} break; @*新增*@ case "add": @: @:/// @:/// 新建@(Model.BusName). @:/// @:/// 参数. @:/// @:[HttpPost("")] @: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(); } @:if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1000); @:} break; @*删除*@ case "remove": @: @:/// @:/// 删除@(Model.BusName). @:/// @:/// @:[HttpDelete("{id}")] @: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); @: } @:var isOk = await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Deleteable<" + Model.ClassName + "Entity>()" : "_repository.AsDeleteable()").Where(it => it.@(Model.PrimaryKey).Equals(id)).ExecuteCommandAsync(); @:if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1002); @:} break; @*编辑*@ case "edit": @: @:/// @:/// 更新@(Model.BusName). @:/// @:/// 主键值. @:/// 参数. @:/// @:[HttpPut("{id}")] @: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(); } @:if (!(isOk > 0)) throw Oops.Oh(ErrorCode.COM1001); @:} 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) @:{ @:// 批量删除@(Model.BusName) @if(Model.EnableFlow) { @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Deleteable<" + Model.ClassName + "Entity>()" : "_repository.AsDeleteable()").In(it => it.@(@Model.PrimaryKey), entitys.Select(s => s.@(@Model.PrimaryKey)).ToList()).ExecuteCommandAsync(); }else{ @:await @(Model.DbLinkId != "0" ? "_sqlSugarClient.Deleteable<" + Model.ClassName + "Entity>()" : "_repository.AsDeleteable()").In(it => it.@(Model.PrimaryKey),ids).ExecuteCommandAsync(); } @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); @: @:dicItem.Add("id", "id"); @:dataList.Add(dicItem); @: @: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, paramList); @:} @: @:/// @:/// 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())); @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @: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())); @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @: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())); @:var entityInfo = _repository.AsSugarClient().EntityMaintenance.GetEntityInfo<@(Model.ClassName)Entity>(); @:List tables = new List() { ExportImportDataHelper.GetTableRelation(entityInfo, "1") }; @: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; } } } @{ @*获取列表数据转换模板*@ void GetListDataConversionTemplate() { @foreach (var column in Model.TableField) { @{var dataCount = column.StaticData != null ? column.StaticData.Count : 0;} @if(column.IsConversion && column.IsShow) { @switch(column.jnpfKey) { case "select": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => item.@(column.LowerColumnName).Equals(it.id))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; case "dictionary": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; } @: break; case "checkbox": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); @:} break; case "dictionary": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); @:} break; case "dynamic": @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", ""); @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); @:} break; } @: break; case "radio": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => item.@(column.LowerColumnName).Equals(it.id))?.fullName; @:} break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data .Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName); @:} break; } @: break; case "cascader": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName).Contains(it.id)).Select(s => s.fullName))); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} break; case "dictionary": @if(!column.IsMultiple) { @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = 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(a => a.FullName).ToListAsync()); @:} }else{ @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName).Contains(it.@(column.Value == "id" ? "Id" : "EnCode")) && it.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(a => a.FullName).ToListAsync())); @:} @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); @:} } break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("@(column.Separator)", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName).Contains(it.id)).Select(a => a.fullName))); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} break; } @: break; case "comSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName).Contains(it.Id)).Select(a => a.FullName).ToListAsync())); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} @: break; case "depSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "posSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "userSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.Id)).Select(a => a.RealName).ToListAsync()); @:} @: break; case "roleSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "groupSelect": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.Id)).Select(a => a.FullName).ToListAsync()); @:} @: break; case "treeSelect": @:// @column.ColumnComment @switch(column.ControlsDataType) { case "static": @:var @(column.LowerColumnName)Data = "[@foreach(var data in column.StaticData){@("{\\\"id\\\":\\\"" + @data.id + "\\\",\\\"fullName\\\":\\\""+ @data.fullName + "\\\"}")@(dataCount == 1 ? "" : ",")dataCount--;}]".ToObject>(); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(s => s.fullName)); } @:} break; case "dictionary": @if(column.IsMultiple) { @:if(item.@(column.LowerColumnName) != null) @:{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.@(column.Value == "id" ? "Id" : "EnCode")) && a.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(a => a.FullName).ToListAsync()); @:} } break; case "dynamic": @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(a => a.fullName)); } @:} break; } @: break; case "address": @:// @column.ColumnComment @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join("/", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName + @column.upperJnpfKey).Contains(a.Id)).Select(a => a.FullName).ToListAsync()); }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>>(); @:var @(column.LowerColumnName)Excessive = new List(); @:foreach (var @(column.LowerColumnName) in @(column.LowerColumnName + @column.upperJnpfKey)) @:{ @:@(column.LowerColumnName)Excessive.Add(string.Join("/", await _repository.AsSugarClient().Queryable().Where(a => @(column.LowerColumnName).Contains(a.Id)).Select(a => a.FullName).ToListAsync())); @:} @: @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Excessive); } @:} @: break; case "popupTableSelect": @:// @column.ColumnComment @:var @(column.LowerColumnName)Data = await _dataInterfaceService.GetDynamicList("@(column.propsUrl)", "@(column.Value)", "@(column.Label)", "@(column.Children)"); @:if(item.@(column.LowerColumnName) != null) @:{ @if(!column.IsMultiple) { @:item.@(column.LowerColumnName) = @(column.LowerColumnName)Data.Find(it => it.id.Equals(item.@(column.LowerColumnName)))?.fullName; }else{ @:var @(column.LowerColumnName + @column.upperJnpfKey) = item.@(column.LowerColumnName).ToObject>(); @:item.@(column.LowerColumnName) = string.Join(",", @(column.LowerColumnName)Data.FindAll(it => @(column.LowerColumnName + @column.upperJnpfKey).Contains(it.id)).Select(a => a.fullName)); } @:} @: break; } } } } } @{ @*获取列表展示字段模板*@ void GetTheListDisplayFieldTemplate() { @*循环展示字段*@ @foreach (var column in Model.TableField){ @if (column.PrimaryKey){ @:@(column.LowerColumnName) = it.@column.ColumnName, }else if(column.IsShow){ @switch(column.jnpfKey) { case "date": @:@(column.LowerColumnName) = it.@(column.ColumnName).Value.ToString("@(column.Format)"), break; case "createTime": case "modifyTime": @:@(column.LowerColumnName) = it.@(column.ColumnName).Value.ToString("yyyy-MM-dd HH:mm"), break; case "switch": @:@(column.LowerColumnName) = SqlFunc.IIF(it.@(column.ColumnName) == 0, "@(column.InactiveTxt)", "@(column.ActiveTxt)"), break; case "modifyUser": case "createUser": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it.@(column.ColumnName))).Select(u => SqlFunc.MergeString(u.RealName, "/", u.Account)), break; case "currOrganize": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it.@(column.ColumnName))).Select(o => o.FullName), break; case "currPosition": @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_" + Model.ConfigId + "." + Model.DBName + ".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it.@(column.ColumnName))).Select(p => p.FullName), break; case "userSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_USER\")" : "").Where(u => u.Id.Equals(it.@(column.ColumnName))).Select(u => u.RealName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "posSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_POSITION\")" : "").Where(p => p.Id.Equals(it.@(column.ColumnName))).Select(p => p.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "depSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ORGANIZE\")" : "").Where(o => o.Id.Equals(it.@(column.ColumnName))).Select(o => o.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "roleSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_ROLE\")" : "").Where(r => r.Id.Equals(it.@(column.ColumnName))).Select(r => r.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "groupSelect": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = SqlFunc.Subqueryable()@(Model.DbLinkId != "0" ? ".AS(\"db_"+ Model.ConfigId +"."+ Model.DBName +".dbo.BASE_GROUP\")" : "").Where(g => g.Id.Equals(it.@(column.ColumnName))).Select(g => g.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; case "select": case "radio": case "treeSelect": @switch(column.ControlsDataType) { case "dictionary": @if(!column.IsMultiple) { @:@(column.LowerColumnName) = 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.ColumnName)) && dic.DictionaryTypeId.Equals("@(column.propsUrl)")).Select(dic => dic.FullName), }else{ @:@(column.LowerColumnName) = it.@column.ColumnName, } break; default: @:@(column.LowerColumnName) = it.@column.ColumnName@(column.NetType == "int" ? ".ToString()" : ""), break; } break; default: @:@(column.LowerColumnName) = it.@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 GetListQueryFieldTemplate() { @foreach(var table in Model.TableField) { @*是查询条件*@ @if(table.QueryWhether) { @switch(table.QueryType) { case 1: @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; case 3: @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; } } } } } @{ @*获取列表查询条件模板*@ void GetTheListQueryCriteriaTemplate() { @*循环查询条件*@ @foreach(var table in Model.TableField) { @*是否查询条件*@ @if(table.QueryWhether) { @*查询方式*@ @switch(table.QueryType) { @*查询方式为等于*@ case 1: @*多选控件*@ @if(table.IsMultiple) { @:.WhereIF(!string.IsNullOrEmpty(input.@(table.LowerColumnName)), it => it.@(table.ColumnName).Contains(@(table.LowerColumnName))) }else{ @switch(table.jnpfKey) { case "cascader": case "address": case "comSelect": case "currOrganize": @:.WhereIF(!string.IsNullOrEmpty(input.@(table.LowerColumnName)), it => it.@(table.ColumnName).Contains(@(table.LowerColumnName))) break; case "checkbox": @:.WhereIF(!string.IsNullOrEmpty(input.@(table.LowerColumnName)), it => it.@(table.ColumnName).Contains(input.@(table.LowerColumnName))) break; case "usersSelect": @:.Where(_controlParsing.GetUsersSelectQueryWhere("@(table.OriginalColumnName)", input.@(table.LowerColumnName), @(table.IsMultiple.ToString().ToLower()))) break; default: @:.WhereIF(!string.IsNullOrEmpty(input.@(table.LowerColumnName)), it => it.@(table.ColumnName).Equals(input.@(table.LowerColumnName))) break; } } break; @*查询类型为模糊查询*@ case 2: @:.WhereIF(!string.IsNullOrEmpty(input.@(table.LowerColumnName)), it => it.@(table.ColumnName).Contains(input.@(table.LowerColumnName))) break; @*查询类型为范围查询*@ case 3: @switch(table.jnpfKey) { case "time": case "numInput": case "calculate": @:.WhereIF(query@(table.ColumnName) != null, it => SqlFunc.Between(it.@(table.ColumnName), start@(table.ColumnName), end@(table.ColumnName))) break; default: @if(table.IsDateTime) { @:.WhereIF(query@(table.ColumnName) != null, it => SqlFunc.Between(it.@(table.ColumnName), start@(table.ColumnName).ParseToDateTime("yyyy-MM-dd HH:mm:ss"), end@(table.ColumnName).ParseToDateTime("yyyy-MM-dd HH:mm:ss"))) }else{ @:.WhereIF(query@(table.ColumnName) != null, it => SqlFunc.Between(it.@(table.ColumnName), start@(table.ColumnName).ParseToDateTime("yyyy-MM-dd 00:00:00"), end@(table.ColumnName).ParseToDateTime("yyyy-MM-dd 23:59:59"))) } break; } break; } } } } } @{ @*获取新增数据方法模板*@ void GetTheNewDataMethodTemplate(){ @if(Model.ConcurrencyLock) { @:entity.Version = 0; } @foreach(var column in Model.TableField) { @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) { @: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)不能重复"); } } } @:var isOk = await @(Model.DbLinkId != "0" ? "_sqlSugarClient." : "_repository.As")Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); } void GetAndModifyDataMethodTemplate() { @foreach(var column in Model.TableField) { @switch(column.jnpfKey) { case "modifyTime": @:entity.@column.ColumnName = DateTime.Now; break; case "modifyUser": @:entity.@column.ColumnName = _userManager.UserId; break; } } @if(Model.IsUnique) { @foreach(var column in Model.TableField) { @if(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)不能重复"); } } } @if(Model.ConcurrencyLock) { @:try @:{ } @:@(Model.ConcurrencyLock ? " ":"")var isOk = await @(Model.DbLinkId != "0" ? "_sqlSugarClient." : "_repository.As")Updateable(entity) @if(Model.IsUpdate || Model.ConcurrencyLock) { @:@(Model.ConcurrencyLock ? " ":"").UpdateColumns(it => new @:@(Model.ConcurrencyLock ? " ":""){ } @foreach (var table in Model.TableField) { @if(table.IsUpdate) { @:@(Model.ConcurrencyLock ? " ":"")it.@(table.ColumnName), } } @if(Model.ConcurrencyLock) { @:it.Version, @:}).ExecuteCommandWithOptLockAsync(true); }else{ @:@(Model.IsUpdate ? "})" : "").ExecuteCommandAsync(); } @if(Model.ConcurrencyLock) { @:} @:catch (Exception) @:{ @:throw Oops.Bah(ErrorCode.COM1010); @:} } } }