From 27aa0d111f7ee0b2dc9774fdff479b6501653c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Fri, 13 Jun 2025 10:11:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=AB=98=E7=BA=A7=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API/TaskManager.Entity/Entity.cs | 7 ++- .../CheryRecurringJobInputPageController.cs | 52 ++++++++++++---- .../CheryRecurringJobOutPageController.cs | 59 +++++++++++++++---- .../Controllers/NormalBaseController.cs | 33 +++++++++++ 4 files changed, 129 insertions(+), 22 deletions(-) diff --git a/API/TaskManager.Entity/Entity.cs b/API/TaskManager.Entity/Entity.cs index ee5ff3b..eef7d6e 100644 --- a/API/TaskManager.Entity/Entity.cs +++ b/API/TaskManager.Entity/Entity.cs @@ -201,9 +201,14 @@ namespace TaskManager.Entity } + public class QueryFieldInfo + { + public string FieldName { get; set; } + public string DisplayName { get; set; } + public string DataType { get; set; } + } - public class BaseEntity { public BaseEntity() diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs index 7f96ce0..28f0d1c 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs @@ -1,5 +1,6 @@ using Azure.Core; using Dapper; +using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Http; @@ -13,6 +14,7 @@ using System.Data; using System.Drawing.Printing; using System.Globalization; using System.Linq.Expressions; +using System.Reflection; using System.Security.Policy; using System.Text; using System.Text.Json; @@ -38,12 +40,6 @@ namespace TaskManager.Controllers _repository = repository; } - - - - - - /// /// 手工发送调用接口 /// @@ -152,8 +148,6 @@ namespace TaskManager.Controllers private async Task SyncTaskSubTable(string taskName, string client) { - - if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client)) @@ -206,12 +200,10 @@ namespace TaskManager.Controllers var result = await PostPageAsync(pagedRequest,sub.TaskId, DateTime.Now.ToString("yyyyMMdd")); if(result.code == 200) { - _jobDbContext.BulkUpdate(records); sub.SyncedPageCount = i; if (i == totalPages) { - sub.WriteState = true; _jobDbContext.Set().Update(sub); _jobDbContext.SaveChanges(); @@ -220,6 +212,7 @@ namespace TaskManager.Controllers else { sub.FailedCount = i*pageSize; + sub.FailedInfo = $"第 {i} 页奇瑞数据保存失败 {result.message}。"; await _logger.AddError($"第 {i} 页奇瑞数据保存失败 {result.message}。", TaskName,sub.TaskId, DateTime.Now.ToString("yyyyMMdd")); } @@ -543,5 +536,44 @@ namespace TaskManager.Controllers writer.WriteStringValue(value.ToString("0.########################", CultureInfo.InvariantCulture)); } } + /// + /// 高级查询字段 + /// + /// + + [HttpGet("fields")] + public IActionResult GetQueryFields() + { + // 获取实体类的所有属性 + Type entityType = typeof(T); + var properties = entityType.GetProperties(); + + // 构建字段信息列表 + var fields = new List(); + + foreach (var property in properties) + { + // 获取ExporterHeader特性中的DisplayName + var exporterHeader = property.GetCustomAttribute(); + string displayName = exporterHeader?.DisplayName ?? property.Name; + + // 获取属性类型 + string dataType = property.PropertyType.Name; + + // 添加到字段列表 + fields.Add(new QueryFieldInfo + { + FieldName = property.Name, + DisplayName = displayName, + DataType = dataType + }); + } + + return Ok(fields); + } + + + + } } diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index 8c700f5..9c593a7 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -1,4 +1,5 @@ -using Magicodes.ExporterAndImporter.Core.Extension; +using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -14,6 +15,7 @@ using System; using System.Data; using System.Data.Common; using System.Linq.Expressions; +using System.Reflection; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; @@ -43,6 +45,15 @@ namespace TaskManager.Controllers } + + + + + + + + + private async Task InsertDataAsync(List list) { if (list.Any()) @@ -78,11 +89,8 @@ namespace TaskManager.Controllers int pageSize = 0; int currentPage = 1; string date = !string.IsNullOrEmpty(inputdate) ? inputdate : DateTime.Now.ToString("yyyy-MM-dd"); - var taskId = Guid.NewGuid(); var version = date.Replace("-", ""); - - var readedcount = _jobDbContext.Set().Where(p => p.RequestDate == inputdate).Count(); if (readedcount == 0)//第一次请求用false,接口人胡启名要求 { @@ -104,12 +112,7 @@ namespace TaskManager.Controllers totalItems = int.Parse(firstResponse.Data.Total); pageSize = int.Parse(firstResponse.Data.PageSize); List pagefirstList = new List(); - - - // firstResponse.Data.Rows.Select(p=>p.Id) - - foreach (var itm in firstResponse.Data.Rows) { T entity = new T(); @@ -119,8 +122,6 @@ namespace TaskManager.Controllers pagefirstList.Add(entity); allData.Add(itm); } - - //if (readedcount > 0) //{ // var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id)); @@ -670,6 +671,42 @@ namespace TaskManager.Controllers } + /// + /// 高级查询字段 + /// + /// + + [HttpGet("fields")] + public IActionResult GetQueryFields() + { + // 获取实体类的所有属性 + Type entityType = typeof(T); + var properties = entityType.GetProperties(); + + // 构建字段信息列表 + var fields = new List(); + + foreach (var property in properties) + { + // 获取ExporterHeader特性中的DisplayName + var exporterHeader = property.GetCustomAttribute(); + string displayName = exporterHeader?.DisplayName ?? property.Name; + + // 获取属性类型 + string dataType = property.PropertyType.Name; + + // 添加到字段列表 + fields.Add(new QueryFieldInfo + { + FieldName = property.Name, + DisplayName = displayName, + DataType = dataType + }); + } + + return Ok(fields); + } + } diff --git a/API/Wood.Service/Controllers/NormalBaseController.cs b/API/Wood.Service/Controllers/NormalBaseController.cs index 92d7827..a416892 100644 --- a/API/Wood.Service/Controllers/NormalBaseController.cs +++ b/API/Wood.Service/Controllers/NormalBaseController.cs @@ -351,7 +351,40 @@ namespace Wood.Service.Controllers } + /// + /// 高级查询字段 + /// + /// + [HttpGet("fields")] + public IActionResult GetQueryFields() + { + // 获取实体类的所有属性 + Type entityType = typeof(T); + var properties = entityType.GetProperties(); + + // 构建字段信息列表 + var fields = new List(); + + foreach (var property in properties) + { + // 获取ExporterHeader特性中的DisplayName + var exporterHeader = property.GetCustomAttribute(); + string displayName = exporterHeader?.DisplayName ?? property.Name; + + // 获取属性类型 + string dataType = property.PropertyType.Name; + + // 添加到字段列表 + fields.Add(new QueryFieldInfo + { + FieldName = property.Name, + DisplayName = displayName, + DataType = dataType + }); + } + return Ok(fields); + }