Browse Source

更新版本

master
赵新宇 3 days ago
parent
commit
2f90db4808
  1. 2
      API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
  2. 9
      API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs
  3. 60
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  4. 8
      API/Wood.Service/Controllers/CherySupplierProCpsService.cs
  5. 63
      API/Wood.Service/Controllers/LogConsumerService.cs
  6. 9
      API/Wood.Service/Controllers/RecurringJobBaseController.cs

2
API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user

@ -3,7 +3,7 @@
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\QRAPI20250528\API\Wood.Admin.WebApi\bin\Release\net8.0\publish\</_PublishTargetUrl>
<History>True|2025-07-08T03:09:12.4661351Z||;True|2025-07-08T10:48:35.1871554+08:00||;False|2025-07-08T10:47:14.6770264+08:00||;True|2025-07-04T13:12:49.8129504+08:00||;True|2025-07-04T11:57:19.4307706+08:00||;True|2025-07-03T09:24:39.8368797+08:00||;True|2025-07-02T17:18:03.6042427+08:00||;True|2025-07-02T10:15:44.3531626+08:00||;True|2025-07-02T10:14:19.3576521+08:00||;True|2025-07-01T18:51:45.0206266+08:00||;True|2025-06-30T15:39:43.7918723+08:00||;True|2025-06-30T14:40:36.2678533+08:00||;True|2025-06-30T14:22:36.2631903+08:00||;True|2025-06-30T09:23:23.0780295+08:00||;True|2025-06-28T10:37:00.4525422+08:00||;True|2025-06-27T14:51:18.0006510+08:00||;True|2025-06-27T14:46:36.7189818+08:00||;True|2025-06-25T10:54:54.0406425+08:00||;True|2025-06-24T15:53:07.6141315+08:00||;True|2025-06-24T15:48:22.4116425+08:00||;True|2025-06-24T15:47:33.3794364+08:00||;True|2025-06-24T15:21:28.5600646+08:00||;True|2025-06-23T17:18:30.1990173+08:00||;True|2025-06-23T17:12:33.6485743+08:00||;True|2025-06-19T17:18:07.6086155+08:00||;</History>
<History>True|2025-07-15T03:43:41.1216193Z||;True|2025-07-14T17:27:09.0814705+08:00||;True|2025-07-10T13:41:17.5416106+08:00||;True|2025-07-10T09:53:47.6480408+08:00||;True|2025-07-08T11:09:12.4661351+08:00||;True|2025-07-08T10:48:35.1871554+08:00||;False|2025-07-08T10:47:14.6770264+08:00||;True|2025-07-04T13:12:49.8129504+08:00||;True|2025-07-04T11:57:19.4307706+08:00||;True|2025-07-03T09:24:39.8368797+08:00||;True|2025-07-02T17:18:03.6042427+08:00||;True|2025-07-02T10:15:44.3531626+08:00||;True|2025-07-02T10:14:19.3576521+08:00||;True|2025-07-01T18:51:45.0206266+08:00||;True|2025-06-30T15:39:43.7918723+08:00||;True|2025-06-30T14:40:36.2678533+08:00||;True|2025-06-30T14:22:36.2631903+08:00||;True|2025-06-30T09:23:23.0780295+08:00||;True|2025-06-28T10:37:00.4525422+08:00||;True|2025-06-27T14:51:18.0006510+08:00||;True|2025-06-27T14:46:36.7189818+08:00||;True|2025-06-25T10:54:54.0406425+08:00||;True|2025-06-24T15:53:07.6141315+08:00||;True|2025-06-24T15:48:22.4116425+08:00||;True|2025-06-24T15:47:33.3794364+08:00||;True|2025-06-24T15:21:28.5600646+08:00||;True|2025-06-23T17:18:30.1990173+08:00||;True|2025-06-23T17:12:33.6485743+08:00||;True|2025-06-19T17:18:07.6086155+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

9
API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs

@ -39,7 +39,7 @@ using static Dapper.SqlMapper;
namespace TaskManager.Controllers
{
public class CheryRecurringJobInputPageExtendController<T, TDTO, TLOGS> : RecurringJobBaseController
where T : CherryWriteBaseEnity, new()
where T : CherryWriteBaseEnity, new()
where TDTO : class, new()
where TLOGS : CherryWriteLogsBaseEnity, new()
{
@ -284,16 +284,13 @@ namespace TaskManager.Controllers
log.InjectFrom(itm);
log.RequestDate = requestDate;
log.TaskId = taskId;
log.WriteState = true;
log.ReadState = true;
logs.Add(log);
}
await _jobDbContext.BulkInsertAsync(logs);
try
{
var createtask = new TaskSub();
createtask.TaskId = taskId;
createtask.TaskName = TaskName;
@ -309,12 +306,8 @@ namespace TaskManager.Controllers
createtask.SyncedPageCount = i;
createtask.ReadState = true;
createtask.WriteState = true;
await _jobDbContext.AddAsync(createtask);
_jobDbContext.SaveChanges();
// 提交事务
await transaction.CommitAsync();
await _logger.AddSuccess($"成功同步数据第 {i} 页数据", TaskName, taskId, version);

60
API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs

@ -16,8 +16,10 @@ using Omu.ValueInjecter;
using System;
using System.Data;
using System.Data.Common;
using System.IO;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Metadata;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
@ -316,8 +318,66 @@ namespace TaskManager.Controllers
// 首次请求获取总条数和分页信息
return allData;
}
[HttpGet]
public async Task<List<ToutputDetial>> CustomFetchAllDataFormJsonAsync(string version,string taskName)
{
List<ToutputDetial> allList = new List<ToutputDetial>();
string dateString = version;
string format = "yyyyMMdd";
IFormatProvider provider = System.Globalization.CultureInfo.InvariantCulture;
try
{
// 使用 ParseExact 方法进行转换
DateTime resultDate = DateTime.ParseExact(dateString, format, provider);
var alldata = _jobDbContext.TaskLogs.Where(p => p.TaskName == taskName && p.Version == version && p.Type == "应答").OrderBy(p => p.CreationTime).ToList();
var responseLogDirectory = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs", "Responses");
foreach (var item in alldata)
{
string fullDatePath = System.IO.Path.Combine(responseLogDirectory, item.Path);
string jsonContent = await System.IO.File.ReadAllTextAsync(fullDatePath);
if (!string.IsNullOrEmpty(jsonContent))
{
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters = {
new JsonStringEnumConverter(), // 枚举转换
new OutCustomDateTimeConverter("yyyy-MM-dd HH:mm:ss","yyyy-MM-dd") // 日期转换
}
};
var page = JsonSerializer.Deserialize<PagedResponse<ToutputDetial>>(jsonContent, options);
List<T> list = new List<T>();
foreach (var itm in page.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = resultDate;
list.Add(entity);
entity.RequestDate = resultDate.ToString("yyyy-MM-dd");
allList.Add(itm);
}
if (list.Any())
{
await InsertDataAsync(list);
}
}
}
}
catch (FormatException ex)
{
Console.WriteLine($"日期格式错误: {ex.Message}");
Console.WriteLine("请确保输入的字符串格式为 'yyyyMMdd'");
}
catch (Exception ex)
{
Console.WriteLine($"发生意外错误: {ex.Message}");
}
return allList;
}
public async Task<List<ToutputDetial>> CustomFetchAllDataAsync(string inputdate)

8
API/Wood.Service/Controllers/CherySupplierProCpsService.cs

@ -15,13 +15,7 @@ namespace TaskManager.Controllers
}
protected override Task DtoProperiesConvert(List<SUPPLIER_PRO_CPS_DTO> dtos)
{
return base.DtoProperiesConvert(dtos);
return base.DtoProperiesConvert(dtos);
}
}
}

63
API/Wood.Service/Controllers/LogConsumerService.cs

@ -40,7 +40,8 @@ namespace TaskManager.Controllers
private const int BatchSize = 100; // 批量写入大小
private readonly string _logDirectory;
private readonly IServiceProvider _serviceProvider;
private readonly string _requestLogDirectory;
private readonly string _responseLogDirectory;
private readonly List<string> list = new List<string>() {
"来料检验数据",
"排产数据",
@ -68,8 +69,13 @@ namespace TaskManager.Controllers
_logger = logger;
_serviceProvider = serviceProvider; ;
_logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs"); // 使用更安全的路径获取方式
EnsureDirectoryExists(_logDirectory);
_requestLogDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs");
_responseLogDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs", "Responses");
//_logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs"); // 使用更安全的路径获取方式
EnsureDirectoryExists(_requestLogDirectory);
EnsureDirectoryExists(_responseLogDirectory);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
@ -99,10 +105,23 @@ namespace TaskManager.Controllers
List<TaskLog> logsToSave = new List<TaskLog>();
foreach (var log in logs)
{
if (!string.IsNullOrEmpty(log.Remark))
if (log.Type == "请求")
{
log.Path = WriteLogToFile(log.Remark, _requestLogDirectory);
}
else if (log.Type == "应答")
{
log.Path = WriteLogToFile(log.Remark);
log.Path = WriteResponseLogToFile(log.Remark, _responseLogDirectory,log.TaskName);
}
else
{
log.Path = WriteLogToFile(log.Remark, _requestLogDirectory);
}
//if (!string.IsNullOrEmpty(log.Remark))
//{
// log.Path = WriteLogToFile(log.Remark,log.TaskName);
//}
if (list.Contains(log.TaskName))
{
log.Module = "生产质量";
@ -144,13 +163,11 @@ namespace TaskManager.Controllers
}
}
// 修改后的日志写入方法
private string WriteLogToFile(string jsonContent)
private string WriteLogToFile(string jsonContent, string baseDirectory)
{
//if string.IsNullOrEmpty(logMessage.RawRemark)) return null; // 必须提供JSON数据
// 创建日期目录
string dateDirectory = DateTime.Now.ToString("yyyy-MM-dd");
string fullDatePath = Path.Combine(_logDirectory, dateDirectory);
string fullDatePath = Path.Combine(baseDirectory, dateDirectory);
EnsureDirectoryExists(fullDatePath);
// 生成唯一文件名(时间戳+随机数)
@ -167,11 +184,37 @@ namespace TaskManager.Controllers
catch (Exception ex)
{
Console.WriteLine($"JSON文件写入失败:{ex.Message}");
return null;
}
}
private string WriteResponseLogToFile(string jsonContent, string baseDirectory, string taskName)
{
// 创建日期目录
string dateDirectory = DateTime.Now.ToString("yyyy-MM-dd");
string fullDatePath = Path.Combine(baseDirectory, dateDirectory, taskName);
EnsureDirectoryExists(fullDatePath);
// 生成唯一文件名(时间戳+随机数)
string fileName = $"log_{DateTime.Now.Ticks}_{Random.Shared.Next(1000, 9999)}.json";
string fullPath = Path.Combine(fullDatePath, fileName);
try
{
// 写入文件(使用UTF-8无BOM格式)
File.WriteAllText(fullPath, jsonContent, new UTF8Encoding(false));
// 存储相对路径(从日志根目录开始,使用正斜杠兼容API)
return Path.Combine(dateDirectory,taskName, fileName).Replace('\\', '/');
}
catch (Exception ex)
{
Console.WriteLine($"JSON文件写入失败:{ex.Message}");
return null;
}
}
}

9
API/Wood.Service/Controllers/RecurringJobBaseController.cs

@ -83,18 +83,16 @@ namespace TaskManager.Controllers
{
await _logger.AddError($"请求数据不一致body:{jsonData},singed:{requestContent}", TaskName, taskid, version, jsonData);
}
request.Headers.Add("appKey", appKey);
request.Headers.Add("appSecret", appSecret);
request.Headers.Add("timestamp", timeStamp);
request.Headers.Add("sign", sign);
request.Headers.Add("nonce", nonce);
// 发送请求
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode(); // 抛出异常处理状态码
var str = await response.Content.ReadAsStringAsync();
//await _logger.AddPostResponse("响应", TaskName, taskid, version, str);
await _logger.AddPostResponse("响应", TaskName, taskid, version, str);
return str;
@ -115,7 +113,10 @@ namespace TaskManager.Controllers
////string jsonContent4 = System.IO.File.ReadAllText("日MRP状态监控.json");
//string jsonContent = System.IO.File.ReadAllText("整车月度生产计划1.json");
////string jsonContent = System.IO.File.ReadAllText("过涂装未过总装.json");
//return jsonContent;
// await _logger.AddPostResponse("响应", TaskName, taskid, version, jsonContent);
// return jsonContent;

Loading…
Cancel
Save