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/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
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()