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; 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 void 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)); MakeData makeData = new(); string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8); makeData.requestId = requestId; makeData.modePath = "Sql/dbField.sql"; Dictionary attach = new(); attach.Add("id", "0"); attach.Add("kind", "dbField"); attach.Add("operator", loginUser.username); makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach); makeData.data = new Dictionary(); makeData.data.Add("opType", "add"); makeData.data.Add("tableName", tableName); makeData.data.Add("databaseField", fields); RabbitMQClient.Instance.Push("MakeSqlQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData)); } } }