using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Dto.Admin; using System.Linq; using Common; using Custom; using Tasks; namespace Services { /// /// 数据字段Service业务层处理 /// [AppService(ServiceType = typeof(IDatabaseFieldService), ServiceLifetime = LifeTime.Transient)] public class DatabaseFieldService : BaseService, IDatabaseFieldService { /// /// 数据字段-列表 /// /// 参数请求体 /// 分页参数 /// 列表 public PagedInfo getDatabaseFieldList([FromQuery] PagerInfo page, [FromQuery] DatabaseField param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.databaseId > 0, m => m.databaseId == param.databaseId); predicate = predicate.AndIF(param.tableId > 0, m => m.tableId == param.tableId); predicate = predicate.AndIF(param.tabId > 0, m => m.tabId == param.tabId); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldTitle), m => m.fieldTitle.Contains(param.fieldTitle)); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldName), m => m.fieldName.Contains(param.fieldName)); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fieldType), m => m.fieldType.Contains(param.fieldType)); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 克隆数据字段 /// /// 参数请求体 public void copyDatabaseField([FromBody] CopyDatabaseFieldDto param, DatabaseTable targetTable) { // var targetTable = _DatabaseTableService.GetFirst(m => m.id == param.targetTableId) ?? new DatabaseTable(); List fieldIdList = param.sourceFieldId.ToList(); var sourceFields = GetList(m => fieldIdList.Contains(m.id)).ToList(); foreach(DatabaseField sourceField in sourceFields) { DatabaseField newField = new DatabaseField(); newField.databaseId = targetTable.databaseId; newField.tableId = param.targetTableId; newField.tabId = sourceField.tabId; newField.fieldTitle = sourceField.fieldTitle; newField.fieldName = sourceField.fieldName; newField.fieldType = sourceField.fieldType; newField.fieldLength = sourceField.fieldLength; newField.fieldDefaultValue = sourceField.fieldDefaultValue; newField.fieldDetail = sourceField.fieldDetail; newField.editType = sourceField.editType; newField.validateAttribute = sourceField.validateAttribute; newField.primaryKey = sourceField.primaryKey; newField.autoIncrement = sourceField.autoIncrement; newField.splitFlag = sourceField.splitFlag; newField.showList = sourceField.showList; newField.showQuery = sourceField.showQuery; newField.showEdit = sourceField.showEdit; newField.checkRepeat = sourceField.checkRepeat; newField.exportFlag = sourceField.exportFlag; newField.importFlag = sourceField.importFlag; newField.listEditFlag = sourceField.listEditFlag; newField.listEditPlaceholder = sourceField.listEditPlaceholder; newField.statCondition = sourceField.statCondition; newField.statData = sourceField.statData; newField.linkTableId = sourceField.linkTableId; newField.linkFieldId = sourceField.linkFieldId; newField.apiId = sourceField.apiId; newField.createTime = DateTime.Now; Add(newField); } } /// /// 生成SQL脚本 /// /// 参数请求体 /// 生成 public string makeDatabaseField([FromBody] MakeDatabaseFieldDto param, DatabaseTable table, TokenModel loginUser) { string tableName = table.tableName; List fieldIds = param.id.ToList(); List fields = GetList(m => fieldIds.Contains(m.id)); Dictionary pushData = new Dictionary();pushData.Add("since", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); pushData.Add("author", loginUser.username); pushData.Add("opType", "add"); pushData.Add("tableName", tableName); pushData.Add("databaseField", fields); pushData.Add("fileName", Function.MD5_16(string.Join(",", param.id))); return MakeHelper.Make(pushData, "dbField", "dbField", loginUser); } } }