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);
+ }