From 90b3b55e4a497518279cf4488b53119e225da3c0 Mon Sep 17 00:00:00 2001 From: "DEVICE8\\12494" Date: Thu, 18 May 2023 10:38:47 +0800 Subject: [PATCH 1/2] 1 --- .../Dto/MaintainRuleMoldListOutput.cs | 27 ++++++++++++ .../Entity/MoldMaintenance.cs | 2 +- .../Tnb.EquipMgr/BaseMoldMaintainService.cs | 42 +++++++++++++++---- .../ToolMoldMaintainRuleService.cs | 33 ++++++++++++++- 4 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Dto/MaintainRuleMoldListOutput.cs diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/MaintainRuleMoldListOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/MaintainRuleMoldListOutput.cs new file mode 100644 index 00000000..4c5669bd --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/MaintainRuleMoldListOutput.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.EquipMgr.Entities.Dto +{ + /// + /// 保养规则关联模具列表输出参数 + /// + public class MaintainRuleMoldListOutput + { + /// + /// 模具Id + /// + public string mold_id { get; set; } + /// + /// 模具编码 + /// + public string mold_code { get; set; } + /// + /// 模具名称 + /// + public string mold_name { get; set; } + } +} diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/MoldMaintenance.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/MoldMaintenance.cs index 187a4940..f34d8433 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Entity/MoldMaintenance.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/MoldMaintenance.cs @@ -8,7 +8,7 @@ namespace Tnb.EquipMgr.Entities /// ///模具保养 /// - [SugarTable("tool_mold_maintenance")] + [SugarTable("tool_mold_maintain_item")] public partial class MoldMaintenance { /// diff --git a/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs b/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs index 8fc11254..4b73b973 100644 --- a/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs +++ b/EquipMgr/Tnb.EquipMgr/BaseMoldMaintainService.cs @@ -12,6 +12,7 @@ using Tnb.Common.Contracts; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Utils; +using Mapster; namespace Tnb.EquipMgr { @@ -22,13 +23,21 @@ namespace Tnb.EquipMgr { _db = db; } - - protected async Task Relevance(TSrc input,string masterTableName, string name, Expression> deleleExp) where TDest : BaseEntity, new() + /// + /// 关联 + /// + /// 输入参数类型 + /// 目标数据库表类型 + /// 输入参数 + /// 主表属性名称 + /// 次表属性名称 + /// 删除条件 + /// + /// + protected async Task Relevance(TSrc input, string mColumnName, string name, Expression> deleleExp) where TDest : BaseEntity, new() where TSrc : BaseMoldMaintainInput { - await _db.Deleteable().Where(deleleExp).ExecuteCommandAsync(); - //var itemGroupId = nameof(ToolMoldMaintainGroupRelation.item_group_id); if (input == null) throw new ArgumentNullException(nameof(input)); var entities = new List(); if (input.ids?.Count > 0) @@ -38,10 +47,10 @@ namespace Tnb.EquipMgr var pk = id; TDest entity = new(); entity.id = SnowflakeIdHelper.NextId(); - if (!PropertySet.ValueFactories.TryGetValue(masterTableName, out Action? setGroupIdAction)) + if (!PropertySet.ValueFactories.TryGetValue(mColumnName, out Action? setGroupIdAction)) { - setGroupIdAction = PropertySet.CreateSetPropertyValueAction(masterTableName); - PropertySet.ValueFactories.Add(masterTableName, setGroupIdAction); + setGroupIdAction = PropertySet.CreateSetPropertyValueAction(mColumnName); + PropertySet.ValueFactories.Add(mColumnName, setGroupIdAction); } setGroupIdAction(entity, input.item_group_id); if (!PropertySet.ValueFactories.TryGetValue(name, out Action? setAction)) @@ -56,5 +65,24 @@ namespace Tnb.EquipMgr var row = await _db.Insertable(entities).ExecuteCommandAsync(); if (row < 1) throw Oops.Oh(ErrorCode.COM1000); } + + + protected async Task GetListByMasterId(string masterId, + Expression> masterFilterExp, + Expression> masterSelector, + Expression> relactionFilterExp) + { + var config = new TypeAdapterConfig(); + config.ForType(); + var list = new List(); + var itemIds = await _db.Queryable().Where(masterFilterExp).Select(masterSelector).ToListAsync(); + if (itemIds?.Count > 0) + { + var items = await _db.Queryable().Where(relactionFilterExp).ToListAsync(); + list = items.Adapt>(); + } + return list; + } + } } diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs index 57133460..e8719ebb 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs @@ -26,10 +26,29 @@ namespace Tnb.EquipMgr public class ToolMoldMaintainRuleService : BaseMoldMaintainService, IToolMoldMaintainRuleService, IDynamicApiController, ITransient { private readonly ISqlSugarClient _db; - public ToolMoldMaintainRuleService(ISqlSugarRepository repository, IUserManager userManager) : base(repository.AsSugarClient()) + public ToolMoldMaintainRuleService(ISqlSugarRepository repository) : base(repository.AsSugarClient()) { _db = repository.AsSugarClient(); } + /// + /// 根据规则Id获取匹配的模具列表 + /// + /// 规则Id + /// + [HttpGet] + public async Task GetListById([FromRoute] string ruleId) + { + var result = new List(); + var list = await _db.Queryable().Where(it => it.rule_id == ruleId).ToListAsync(); + if (list?.Count > 0) + { + var ids = list.Select(it => it.mold_id).ToList(); + result = await _db.Queryable().Where(it => ids.Contains(it.id)) + .Select(it => new MaintainRuleMoldListOutput { mold_id = it.id }, true).ToListAsync(); + } + return result; + } + /// /// 关联模具 /// @@ -39,6 +58,16 @@ namespace Tnb.EquipMgr [HttpPost] public async Task RelevanceMold(RelevanceMoldInput input) => await Relevance(input, nameof(ToolMoldMaintainRuleRelation.rule_id), nameof(ToolMoldMaintainRuleRelation.mold_id), it => it.rule_id == input.rule_id); - + /// + /// 删除模具信息 + /// + /// + /// + [HttpPost] + public async Task DeleteMoldRelevance(RelevanceMoldInput input) + { + var row = await _db.Deleteable().Where(it => it.rule_id == input.rule_id && input.ids.Contains(it.mold_id)).ExecuteCommandAsync(); + if (row < 1) throw Oops.Oh(ErrorCode.COM1002); + } } } From 31db0d566703445e986c6a678f7b83dc19f584ba Mon Sep 17 00:00:00 2001 From: PhilPan Date: Thu, 18 May 2023 15:38:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8razor=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=AE=9E=E4=BD=93=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/BasDefect.cs | 174 ++++++++---------- .../wwwroot/Template/Entity.vue.vm | 26 +-- common/Tnb.Common/Contracts/BaseEntity`1.cs | 18 +- .../Mapper/SystemMapper.cs | 19 ++ .../System/DataBase/DatabaseTableInfo.cs | 43 ----- .../Model/System/DataBase/DbEntityInfo.cs | 124 +++++++++++++ system/Tnb.Systems/System/DataBaseService.cs | 65 +++++-- visualdev/Tnb.VisualDev/RunService.cs | 2 +- 8 files changed, 296 insertions(+), 175 deletions(-) delete mode 100644 system/Tnb.Systems.Entitys/Model/System/DataBase/DatabaseTableInfo.cs create mode 100644 system/Tnb.Systems.Entitys/Model/System/DataBase/DbEntityInfo.cs diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasDefect.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasDefect.cs index 04e79191..44ba8c03 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasDefect.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasDefect.cs @@ -1,105 +1,83 @@ -using System; -using System.Linq; -using System.Text; +using JNPF.Common.Contracts; using JNPF.Common.Security; using SqlSugar; +using Tnb.Common.Contracts; -namespace Tnb.BasicData.Entities +namespace Tnb.BasicData.Entities; + +/// +/// 次品项 +/// +[SugarTable("bas_defect")] +public partial class BasDefect : BaseEntity { - /// - ///次品项 - /// - [SugarTable("bas_defect")] - public partial class BasDefect + public BasDefect() { - public BasDefect(){ - - - } - /// - /// Desc:编号 - /// Default: - /// Nullable:False - /// - [SugarColumn(IsPrimaryKey=true)] - public string id {get;set;} = SnowflakeIdHelper.NextId(); - - /// - /// Desc:排序 - /// Default: - /// Nullable:True - /// - public long? ordinal {get;set;} - - /// - /// Desc:创建用户 - /// Default:NULL::character varying - /// Nullable:True - /// - public string? create_id {get;set;} - - /// - /// Desc:创建时间 - /// Default: - /// Nullable:True - /// - public DateTime? create_time {get;set;} - - /// - /// Desc:修改用户 - /// Default:NULL::character varying - /// Nullable:True - /// - public string? modify_id {get;set;} - - /// - /// Desc:修改时间 - /// Default: - /// Nullable:True - /// - public DateTime? modify_time {get;set;} - - /// - /// Desc:扩展字段 - /// Default: - /// Nullable:True - /// - public string? extras {get;set;} - - /// - /// Desc:备注 - /// Default:NULL::character varying - /// Nullable:True - /// - public string? remark {get;set;} - - /// - /// Desc:次品类型 - /// Default:NULL::character varying - /// Nullable:True - /// - public string? defect_type_id {get;set;} - - /// - /// Desc:缺陷代码 - /// Default: - /// Nullable:True - /// - public string? defect_code {get;set;} - - /// - /// Desc:缺陷名称 - /// Default: - /// Nullable:True - /// - public string? defect_name {get;set;} - - /// - /// Desc:是否启用 - /// Default: - /// Nullable:False - /// - public short enabled {get;set;} - + id = SnowflakeIdHelper.NextId(); } + /// + /// 排序 + /// + [SugarColumn(IsNullable = true)] + public long? ordinal { get; set; } + + /// + /// 创建用户 + /// + [SugarColumn(IsNullable = true)] + public string? create_id { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(IsNullable = true)] + public DateTime? create_time { get; set; } + + /// + /// 修改用户 + /// + [SugarColumn(IsNullable = true)] + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + [SugarColumn(IsNullable = true)] + public DateTime? modify_time { get; set; } + + /// + /// 扩展字段 + /// + [SugarColumn(IsNullable = true)] + public string? extras { get; set; } + + /// + /// 备注 + /// + [SugarColumn(IsNullable = true)] + public string? remark { get; set; } + + /// + /// 次品类型 + /// + [SugarColumn(IsNullable = true)] + public string? defect_type_id { get; set; } + + /// + /// 缺陷代码 + /// + [SugarColumn(IsNullable = true)] + public string? defect_code { get; set; } + + /// + /// 缺陷名称 + /// + [SugarColumn(IsNullable = true)] + public string? defect_name { get; set; } + + /// + /// 是否启用 + /// + public short enabled { get; set; } + } diff --git a/apihost/Tnb.API.Entry/wwwroot/Template/Entity.vue.vm b/apihost/Tnb.API.Entry/wwwroot/Template/Entity.vue.vm index db0607ec..75e3165a 100644 --- a/apihost/Tnb.API.Entry/wwwroot/Template/Entity.vue.vm +++ b/apihost/Tnb.API.Entry/wwwroot/Template/Entity.vue.vm @@ -1,24 +1,28 @@ -using JNPF.Common.Security; +using JNPF.Common.Contracts; +using JNPF.Common.Security; using SqlSugar; namespace @Model.nsName; /// -/// @Model.table.Description +/// @Model.descrip /// -[SugarTable("@Model.table.Name")] -public partial class @Model.clsName : BaseEntity<@Model.pkType> +[SugarTable("@Model.tableName")] +public partial class @Model.clsName : @Model.GetInherit() { - public @Model.clsName() + public @(Model.clsName)() { + @Model.GetConstruct() } @foreach(var col in Model.columns) { - /// - /// col.Descrip - /// - @Model.GetColumnAttrib(col.DbColumnName) - public col.PropertyType.Name col.PropertyName {get;set;}@Model.GetColumnDefaultValue(col.DbColumnName) -} + if(!Model.ignoreCols.Contains(col.colName)){ + @:/// + @:/// @col.descrip + @:/// + @col.GetPropAttr() + @:public @col.GetPropType() @col.propName { get; set; }@col.GetDefaultValue() @: + } +} } diff --git a/common/Tnb.Common/Contracts/BaseEntity`1.cs b/common/Tnb.Common/Contracts/BaseEntity`1.cs index 8a05aeef..e7b06393 100644 --- a/common/Tnb.Common/Contracts/BaseEntity`1.cs +++ b/common/Tnb.Common/Contracts/BaseEntity`1.cs @@ -4,17 +4,17 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using JNPF.Common.Contracts; +using JNPF.Common.Security; using SqlSugar; -namespace Tnb.Common.Contracts +namespace Tnb.Common.Contracts; + +public class BaseEntity : IEntity where TKey : IEquatable { - public class BaseEntity : IEntity where TKey : IEquatable - { - /// - /// 获取或设置 编号. - /// - [SugarColumn(ColumnName = "id", ColumnDescription = "主键", IsPrimaryKey = true)] - public TKey id { get; set; } - } + /// + /// 获取或设置 编号. + /// + [SugarColumn(ColumnName = "id", ColumnDescription = "主键", IsPrimaryKey = true)] + public TKey id { get; set; } } diff --git a/system/Tnb.Systems.Entitys/Mapper/SystemMapper.cs b/system/Tnb.Systems.Entitys/Mapper/SystemMapper.cs index f895c37d..dcc7da87 100644 --- a/system/Tnb.Systems.Entitys/Mapper/SystemMapper.cs +++ b/system/Tnb.Systems.Entitys/Mapper/SystemMapper.cs @@ -44,6 +44,25 @@ public class SystemMapper : IRegister .Map(dest => dest.IsPrimarykey, src => src.primaryKey) .Map(dest => dest.IsNullable, src => src.allowNull == 1) .Map(dest => dest.DefaultValue, src => src.defaults); + config.ForType() + .Map(dest => dest.tableName, src => src.Name) + .Map(dest => dest.descrip, src => src.Description); + config.ForType() + .Map(dest => dest.colName, src => src.DbColumnName) + .Map(dest => dest.dataType, src => src.DataType) + .Map(dest => dest.propName, src => src.PropertyName) + .Map(dest => dest.propType, src => src.PropertyType) + .Map(dest => dest.length, src => src.Length) + .Map(dest => dest.descrip, src => src.ColumnDescription) + .Map(dest => dest.defaultValue, src => src.DefaultValue) + .Map(dest => dest.allowNull, src => src.IsNullable) + .Map(dest => dest.identity, src => src.IsIdentity) + .Map(dest => dest.primaryKey, src => src.IsPrimarykey) + .Map(dest => dest.isArray, src => src.IsArray) + .Map(dest => dest.isJson, src => src.IsJson) + .Map(dest => dest.value, src => src.Value) + .Map(dest => dest.scale, src => src.Scale) + .Map(dest => dest.digits, src => src.DecimalDigits); //config.ForType() // .Map(dest => dest.table, src => src.F_TABLE) // .Map(dest => dest.tableName, src => src.F_TABLENAME) diff --git a/system/Tnb.Systems.Entitys/Model/System/DataBase/DatabaseTableInfo.cs b/system/Tnb.Systems.Entitys/Model/System/DataBase/DatabaseTableInfo.cs deleted file mode 100644 index 1021d657..00000000 --- a/system/Tnb.Systems.Entitys/Model/System/DataBase/DatabaseTableInfo.cs +++ /dev/null @@ -1,43 +0,0 @@ -using JNPF.DependencyInjection; -using SqlSugar; - -namespace JNPF.Systems.Entitys.Dto.Database; - -/// -/// 数据库表列表输出. -/// -[SuppressSniffer] -public class DatabaseTableInfo -{ - /// - /// - /// - DbTableInfo table { get; set; } - - List columns { get; set; } - - public string clsName { get; set; } = string.Empty; - - public string nsName { get; set; } = "Tnb.Entities"; - - public string pkType { get; set; } = "string"; - - public string pkName { get; set; } = "id"; - - public string GetColumnDefaultValue(string colName) - { - return "default"; - } - public string GetColumnCsType(string colName) - { - return "default"; - } - public string GetColumnCsName(string colName) - { - return "default"; - } - public string GetColumnAttrib(string colName) - { - return "default"; - } -} diff --git a/system/Tnb.Systems.Entitys/Model/System/DataBase/DbEntityInfo.cs b/system/Tnb.Systems.Entitys/Model/System/DataBase/DbEntityInfo.cs new file mode 100644 index 00000000..28111354 --- /dev/null +++ b/system/Tnb.Systems.Entitys/Model/System/DataBase/DbEntityInfo.cs @@ -0,0 +1,124 @@ +using JNPF.DependencyInjection; +using NPOI.SS.Formula.Functions; +using SqlSugar; + +namespace JNPF.Systems.Entitys.Dto.Database; + +/// +/// 数据库表映射实体信息. +/// +[SuppressSniffer] +public class DbEntityInfo +{ + public string tableName { get; set; } = string.Empty; + + public string descrip { get; set; } = string.Empty; + + public string clsName { get; set; } = string.Empty; + + public string nsName { get; set; } = "Tnb.Entities"; + + public string pkType { get; set; } = "string"; + + public string pkName { get; set; } = "id"; + + public List columns { get; set; } = new List(); + public List ignoreCols { get; set; } = new List(); + + public string GetInherit() + { + return pkName == "id" ? $"BaseEntity<{pkType}>" : "IEntity"; + } + public string GetConstruct() + { + if (pkName == "id") + { + string str = pkType switch + { + "string" => "id = SnowflakeIdHelper.NextId();", + "long" => "id = YitIdHelper.NextId();", + _ => string.Empty + }; + return str; + } + return string.Empty; + } + +} + +/// +/// 数据库表映射实体属性信息. +/// +[SuppressSniffer] +public class DbEntityPropInfo +{ + public string colName { get; set; } + + public string dataType { get; set; } + + public string csType { get; set; } + + public string propName { get; set; } + + public Type propType { get; set; } + + public int length { get; set; } + + public string descrip { get; set; } + + public string defaultValue { get; set; } + + public bool allowNull { get; set; } + + public bool identity { get; set; } + + public bool primaryKey { get; set; } + + public bool isArray { get; set; } + + public bool isJson { get; set; } + + public object value { get; set; } + + public int digits { get; set; } + + public int scale { get; set; } + + public string GetPropType() + { + string propType = csType; + if (allowNull) + propType = csType + "?"; + return propType; + } + public virtual string GetPropAttr() + { + List sugarAttrs = new List(); + if (primaryKey) + sugarAttrs.Add("IsPrimaryKey = true"); + if (identity) + sugarAttrs.Add("IsIdentity = true"); + //if (allowNull) + // sugarAttrs.Add("IsNullable = true"); + if (colName != propName) + sugarAttrs.Add($"ColumnName = \"{colName}\""); + if (sugarAttrs.Count > 0) + return $" [SugarColumn({string.Join(", ", sugarAttrs)})]\n"; + + return string.Empty; + } + public string GetDefaultValue() + { + if (allowNull) return string.Empty; + + string str = csType switch + { + "string" => " = string.Empty;", + "DateTime" => " = DateTime.Now;", + _ => string.Empty + }; + + return str; + } + +} diff --git a/system/Tnb.Systems/System/DataBaseService.cs b/system/Tnb.Systems/System/DataBaseService.cs index b53072b7..a22ede58 100644 --- a/system/Tnb.Systems/System/DataBaseService.cs +++ b/system/Tnb.Systems/System/DataBaseService.cs @@ -21,6 +21,7 @@ using JNPF.Systems.Entitys.Dto.Database; using JNPF.Systems.Entitys.Model.DataBase; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; +using JNPF.ViewEngine; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; @@ -51,6 +52,12 @@ public class DataBaseService : IDynamicApiController, ITransient /// private readonly IDbLinkService _dbLinkService; + /// + /// 视图引擎. + /// + private readonly IViewEngine _viewEngine; + + /// /// 文件服务. /// @@ -74,13 +81,15 @@ public class DataBaseService : IDynamicApiController, ITransient IDbLinkService dbLinkService, IFileManager fileManager, IDataBaseManager dataBaseManager, - IUserManager userManager) + IUserManager userManager, + IViewEngine viewEngine) { _repository = repository; _dbLinkService = dbLinkService; _fileManager = fileManager; _dataBaseManager = dataBaseManager; _userManager = userManager; + _viewEngine = viewEngine; } #region GET @@ -386,17 +395,47 @@ public class DataBaseService : IDynamicApiController, ITransient var link = await _dbLinkService.GetInfo(linkId); sugarClient = _dataBaseManager.ChangeDataBase(link); } - foreach (var item in sugarClient.DbMaintenance.GetTableInfoList().Where(t => t.Name == input.TableName)) - { - var entityName = string.Join("", input.TableName.Split('_').Select(a => a.ToPascalCase())); - sugarClient.MappingTables.Add(entityName, item.Name); - //foreach (var col in sugarClient.DbMaintenance.GetColumnInfosByTableName(item.Name)) - //{ - // //var colName = CustomFormatName(col.DbColumnName); - // sugarClient.MappingColumns.Add(col.DbColumnName /*类的属性首字母大写*/, col.DbColumnName, entityName); - //} - } + List entities = new(); Dictionary nsMapper = GetNsMapper(); + foreach (var tbl in sugarClient.DbMaintenance.GetTableInfoList().Where(t => t.Name == input.TableName)) + { + var entityName = string.Join("", tbl.Name.Split('_').Select(a => a.ToPascalCase())); + sugarClient.MappingTables.Add(entityName, tbl.Name); + DbEntityInfo model = new() { tableName = tbl.Name, descrip = tbl.Description, clsName = entityName }; + var key = tbl.Name.Split('_')[0] + "_"; + if (nsMapper.ContainsKey(key)) model.nsName = nsMapper[key]; + foreach (var field in sugarClient.DbMaintenance.GetColumnInfosByTableName(tbl.Name)) + { + DbEntityPropInfo col = field.Adapt(); + col.csType = sugarClient.Ado.DbBind.GetPropertyTypeName(field.DataType); + col.propName = field.DbColumnName; + model.columns.Add(col); + } + var primaryKey = model.columns.FirstOrDefault(a => a.primaryKey); + if (primaryKey != null) + { + model.pkType = primaryKey.csType; + model.pkName = primaryKey.propName; + } + if (model.pkName == "id") model.ignoreCols.Add(model.pkName); + entities.Add(model); + } + var templatePath = Path.Combine(App.WebHostEnvironment.WebRootPath, "Template", "Entity.vue.vm"); + string tContent = File.ReadAllText(templatePath); + foreach (var item in entities) + { + var tResult = _viewEngine.RunCompileFromCached(tContent, item, builderAction: builder => + { + builder.AddUsing("System.Collections.Generic"); + builder.AddAssemblyReferenceByName("System.Collections"); + }); + var dir = Path.Combine(FileVariable.GenerateCodePath, item.nsName); + Directory.CreateDirectory(dir); + File.WriteAllText(Path.Combine(dir, item.clsName + ".cs"), tResult); + + return tResult; + } + var prefix = input.TableName.Split('_')[0]; var nsName = nsMapper.ContainsKey(prefix) ? nsMapper[prefix] : "Tnb.Entities"; var dict = GenerateEntityConfig(sugarClient.DbFirst.Where(input.TableName)).ToClassStringList(nsName); @@ -664,8 +703,8 @@ public class DataBaseService : IDynamicApiController, ITransient var txt = tpl.Replace("{PropertyType}", type).Replace("{PropertyName}", col.DbColumnName).Replace("{SugarColumn}", sugarColumnStr); if (col.DbColumnName == "id") { - if(type == "string") txt = txt.TrimEnd('\n', '\r') + " = SnowflakeIdHelper.NextId();\r\n"; - else if(type == "long") txt = txt.TrimEnd('\n', '\r') + " = YitIdHelper.NextId();\r\n"; + if (type == "string") txt = txt.TrimEnd('\n', '\r') + " = SnowflakeIdHelper.NextId();\r\n"; + else if (type == "long") txt = txt.TrimEnd('\n', '\r') + " = YitIdHelper.NextId();\r\n"; } else if (type == "string") txt = txt.TrimEnd('\n', '\r') + " = string.Empty;\r\n"; return txt; diff --git a/visualdev/Tnb.VisualDev/RunService.cs b/visualdev/Tnb.VisualDev/RunService.cs index 498e1ba3..4f35cd27 100644 --- a/visualdev/Tnb.VisualDev/RunService.cs +++ b/visualdev/Tnb.VisualDev/RunService.cs @@ -857,7 +857,7 @@ public class RunService : IRunService, ITransient if (!templateInfo.VerifyTemplate()) throw Oops.Oh(ErrorCode.D1401); // 验证模板 // 处理系统控件(模板开启行编辑) - if (_userManager.UserOrigin.Equals("pc") && templateInfo.ColumnData.type.Equals(4)) + if (_userManager.UserOrigin?.Equals("pc") == true && templateInfo.ColumnData.type.Equals(4)) { // 处理显示列和提交的表单数据匹配(行编辑空数据 前端会过滤该控件) templateInfo.ColumnData.columnList.Where(x => !allDataMap.ContainsKey(x.prop) && x.__config__.visibility.Equals("pc")).ToList()