Browse Source

提交更新

master
赵新宇 13 hours ago
parent
commit
dda6c55d60
  1. 8
      API/TaskManager.Contracts/Dtos/Dtos.cs
  2. 4
      API/TaskManager.Entity/Entity.cs
  3. 3
      API/Wood.Service/Commons/CommonService.cs
  4. 41
      API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
  5. 84
      API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs
  6. 35
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  7. 321
      API/Wood.Service/Controllers/CustomLogService.cs
  8. 11
      API/Wood.Service/Controllers/LogConsumerService.cs
  9. 4
      API/Wood.Service/Controllers/LogController.cs
  10. 27
      API/Wood.Service/Controllers/RecurringJobBaseController.cs
  11. 1
      API/Wood.Service/Controllers/TaskConifgureController.cs

8
API/TaskManager.Contracts/Dtos/Dtos.cs

@ -79,6 +79,14 @@ namespace TaskManager.Contracts.Dtos
public bool IsForce { get; set; } = false;
}
#region 整车月度生产计划Dto
public class SUPPLIER_PRO_PLANING_DTO : PAGE_OUT_DTO
{

4
API/TaskManager.Entity/Entity.cs

@ -177,12 +177,12 @@ namespace TaskManager.Entity
/// <summary>
/// 任务名称
/// </summary>
[MaxLength(30)]
[MaxLength(50)]
[ExporterHeader(DisplayName = "任务名")]
public string? TaskName { get; set; }
[MaxLength(30)]
[MaxLength(50)]
[ExporterHeader(DisplayName = "业务模块")]
public string? Module { get; set; }
/// <summary>

3
API/Wood.Service/Commons/CommonService.cs

@ -40,6 +40,9 @@ namespace Wood.Service
throw new Exception($"任务配置表没有'{taskName}'任务");
}
TaskSub taskSub = new TaskSub();
taskSub.TableName = taskConfigureObj.TableName; //关联的数据表名称(如:订单表、用户表等,可为空)
taskSub.TaskName = taskConfigureObj.TaskName; //任务名称(用于业务层面标识任务,如:数据同步任务、报表生成任务)

41
API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs

@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Omu.ValueInjecter;
using SkiaSharp;
using System.ComponentModel.DataAnnotations;
@ -68,6 +69,9 @@ namespace TaskManager.Controllers
Client = client;
CPageSize = first.PageSize;
await SyncTaskSubTable(TaskName, Client);
//BackgroundJob.Schedule(() => SyncTaskSubTable(TaskName, Client),TimeSpan.FromSeconds(2));
// var jobId1 = BackgroundJob.Enqueue(taskName+Guid.NewGuid().ToString("N"),() => SyncTaskSubTable(TaskName, Client));
}
catch (Exception ex) {
@ -245,7 +249,42 @@ namespace TaskManager.Controllers
{
sub.FailedCount = i * pageSize;
sub.FailedInfo = $"第 {i} 页奇瑞数据保存失败 {result.message}。";
await _logger.AddError($"第 {i} 页奇瑞数据保存失败 {result.message}。", TaskName, sub.TaskId, version);
string inputjson = string.Empty;
if (TaskName == "日物料需求计划风险确认")//格式特殊处理
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
new InputCustomDateTimeConverter(),
new InputCustomNullableDateTimeConverter()
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
else
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
await _logger.AddError($"第 {i} 页奇瑞数据保存失败 {result.message}。", TaskName, sub.TaskId, version,inputjson);
}
}
}

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

@ -69,6 +69,7 @@ namespace TaskManager.Controllers
//await SyncTaskSubTable(TaskName, Client);
//var jobId1 = BackgroundJob.Enqueue((()=>SyncTaskSubTable(TaskName,Client)));
await SyncTaskSubTable(TaskName, Client);
//BackgroundJob.Schedule(() =>(CheryRecurringJobInputPageExtendController<,,>).SyncTaskSubTable(TaskName, Client), TimeSpan.FromSeconds(2));
}
catch (Exception ex)
@ -183,14 +184,17 @@ namespace TaskManager.Controllers
return;
}
var tableName = task.TableName;
var total =await _jobDbContext.Database.ExecuteSqlAsync($"select count(1) from {tableName} where writeState=0 and readState=1 ");
string str = $"select count(1) count1 from {tableName} where writeState=0 and readState=1 ";
var query = _jobDbContext.Database.GetDbConnection().Query<int>(str);
var total = query.FirstOrDefault();
var version = DateTime.Now.ToString("yyyyMMdd");
var pageSize = CPageSize;
int totalPages = (int)Math.Ceiling((double)total / pageSize);
for (int i= 1; i <= totalPages; i++)
{
var records = _jobDbContext.Database.SqlQuery<T>($"Select TOP {pageSize} * from {tableName} where writeState=0 and readerstate=1 order by uid");
var records = _jobDbContext.Database.GetDbConnection().Query<T>($"Select TOP {pageSize} * from {tableName} where writeState=0 and readstate=1 order by uid");
if (records.Any())
{
@ -215,7 +219,7 @@ namespace TaskManager.Controllers
itm.WriteState = true;
itm.TaskId = taskId;
}
var result = await PostPageAsync(pagedRequest, taskId, DateTime.Now.ToString("yyyyMMdd"));
var result = await PostPageAsync(pagedRequest, taskId, version);
if (result.code == 200)
{
using (var transaction = await _jobDbContext.Database.BeginTransactionAsync())
@ -240,17 +244,87 @@ namespace TaskManager.Controllers
await _jobDbContext.AddAsync(task);
// 提交事务
await transaction.CommitAsync();
await _logger.AddSuccess($"成功同步数据第 {i} 页数据", TaskName, taskId, version);
}
catch (Exception ex)
{
await _logger.AddError(ex.Message, TaskName, taskId, DateTime.Now.ToString("yyyyMMdd"));
string inputjson = "";
if (TaskName == "日物料需求计划风险确认")//格式特殊处理
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
new InputCustomDateTimeConverter(),
new InputCustomNullableDateTimeConverter()
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
else
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
await _logger.AddError(ex.Message, TaskName, taskId, version,inputjson);
await transaction.RollbackAsync();
}
}
}
else
{
await _logger.AddError($"第 {i} 页数据保存失败,请检查数据。", TaskName, taskId, DateTime.Now.ToString("yyyyMMdd"));
string inputjson = string.Empty;
if (TaskName == "日物料需求计划风险确认")//格式特殊处理
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
new InputCustomDateTimeConverter(),
new InputCustomNullableDateTimeConverter()
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
else
{
inputjson = JsonSerializer.Serialize(pagedRequest,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new DecimalTrimConverter(),
},
WriteIndented = false,// 可选,用于格式化输出
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All)
}
);
}
await _logger.AddError($"第 {i} 页数据保存失败,请检查数据:{result.message}。", TaskName, taskId,version, inputjson);
}
await Task.Delay(200);

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

@ -50,7 +50,6 @@ namespace TaskManager.Controllers
}
private async Task InsertDataAsync(List<T> list)
{
if (list.Any())
@ -65,6 +64,7 @@ namespace TaskManager.Controllers
{
TLOGS entity = new TLOGS();
entity.InjectFrom(itm);
logs.Add(entity);
}
try
{
@ -116,7 +116,7 @@ namespace TaskManager.Controllers
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
// firstResponse.Data.Rows.Select(p=>p.Id)
//firstResponse.Data.Rows.Select(p=>p.Id)
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
@ -155,12 +155,9 @@ namespace TaskManager.Controllers
{
await InsertDataAsync(pagefirstList);
}
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
//Console.WriteLine($"总共需要请求 {totalPages} 页数据");
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
@ -172,7 +169,6 @@ namespace TaskManager.Controllers
{
List<T> pageList = new List<T>();
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
@ -228,9 +224,6 @@ namespace TaskManager.Controllers
else
{
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, PageSize = CPageSize, IsForce = true },taskId,version);
if (firstResponse == null || firstResponse.Code != 200)
{
@ -495,6 +488,30 @@ namespace TaskManager.Controllers
}
public async Task<PagedResult<T>> GetLogDataPaged(RequestInputBase input)
{
var pagingParams = new PagingParams
{
PageNumber = input.pageNumber,
PageSize = input.pageSize,
SortBy = input.sortBy,
IsAscending = input.isAscending,
};
var json = JsonSerializer.Serialize(input);
// 可以在这里构建表达式树过滤条件
Expression<Func<T, bool>> filter = null;
var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition);
return pagedResult;
}
/// <summary>
/// 导出
/// </summary>

321
API/Wood.Service/Controllers/CustomLogService.cs

@ -1,13 +1,16 @@
using Hangfire;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using Wood.Util.Filters;
namespace Wood.Service.Controllers
{
@ -29,169 +32,205 @@ namespace Wood.Service.Controllers
/// <returns></returns>
[HttpGet]
public async Task<IActionResult> GetLogRequestList(int uId)
public async Task<IActionResult> GetLogRequestJsonList(int uId)
{
var first = _context.TaskLogs.FirstOrDefault(x => x.UId == uId);
if (!string.IsNullOrEmpty(first.Path))
{
string fullDatePath = Path.Combine(_logDirectory, first.Path);
string jsonContent = await System.IO.File.ReadAllTextAsync(fullDatePath);
return new JsonResult(new { Code = 200, Message =jsonContent });
}
return new JsonResult(new { Code = 400, Message = "没找到文件!" });
//switch (first.TaskName)
//{
// case "来料检验数据":
// // 移除指定的定时任务
// break;
// case "排产数据":
// // 移除指定的定时任务
// break;
// case "供应商基础信息":
// // 移除指定的定时任务
// break;
// case "人员资质信息":
// // 移除指定的定时任务
// break;
// case "BOM主数据":
// // 移除指定的定时任务
// break;
// case "过程控制项质量数据":
// // 移除指定的定时任务
// break;
// case "生产过程数据":
// // 移除指定的定时任务
// break;
// case "产品一次合格率":
// // 移除指定的定时任务
// break;
// case "工位一次合格率":
// // 移除指定的定时任务
// break;
// case "缺陷业务数据":
// // 移除指定的定时任务
// break;
// case "环境业务数据":
// // 移除指定的定时任务
// break;
// case "设备OEE达成率":
// // 移除指定的定时任务
// break;
// case "OEE时间明细":
// // 移除指定的定时任务
return new JsonResult(new { Code = 200, Message = jsonContent });
// break;
// case "物料主数据":
// // 移除指定的定时任务
// break;
// case "工艺装备":
// // 移除指定的定时任务
// break;
// case "工艺":
// // 移除指定的定时任务
// break;
// case "整车月度生产计划1":
// // 移除指定的定时任务
// break;
// case "M+6月物料需求计划1":
// // 移除指定的定时任务
// break;
// case "整车月度生产计划2":
// // 移除指定的定时任务
// break;
// case "M+6月物料需求计划2":
// // 移除指定的定时任务
// break;
// case "日物料需求计划":
// // 移除指定的定时任务
// break;
// case "计划协议":
// // 移除指定的定时任务
// break;
// case "采购订单":
// // 移除指定的定时任务
// break;
// case "过焊装未过总装":
// // 移除指定的定时任务
}
return new JsonResult(new { Code = 400, Message = "没找到文件!" });
}
[HttpGet]
public async Task<IActionResult> GetLogReponseList([FromBody] RequestInputBase requestInputBase)
{
var uid = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "Uid").Value;
// break;
// case "过涂装未过总装":
// // 移除指定的定时任务
var first = _context.TaskLogs.FirstOrDefault(x => x.UId == long.Parse(uid));
// break;
// case "排序供货":
// // 移除指定的定时任务
// break;
// case "看板配送单":
// // 移除指定的定时任务
switch (first.TaskName)
{
//case "来料检验数据":
// var stockservice = _builder.GetRequiredService<CherySupplierProSchedulingService>();
// break;
// case "退货单":
// // 移除指定的定时任务
// requestInputBase.Condition.Filters.Add(new Filter());
// var stockresult = await stockservice.GetTaskDataPaged(requestInputBase);
// break;
// case "奇瑞RDC共享库存":
// // 移除指定的定时任务
// break;
// case "日MRP状态监控":
// // 移除指定的定时任务
// break;
// case "日MRP预警推移":
// // 移除指定的定时任务
//
// break;
//case "排产数据":
//
// break;
// case "M+6月物料需求计划风险确认":
// // 移除指定的定时任务
// break;
//case "供应商基础信息":
//
// break;
// case "日物料需求计划风险确认":
// // 移除指定的定时任务
// break;
//case "人员资质信息":
//
// break;
// case "采购订单风险确认":
// // 移除指定的定时任务
// break;
//case "BOM主数据":
//
// break;
// case "供应商共享库存-上午":
// // 移除指定的定时任务
// break;
//case "过程控制项质量数据":
//
// break;
// case "供应商共享库存-晚上":
// // 移除指定的定时任务
// break;
//}
// break;
//case "生产过程数据":
//
// break;
//case "产品一次合格率":
//
// break;
//case "工位一次合格率":
//
// break;
//case "缺陷业务数据":
//
// break;
//case "环境业务数据":
//
// break;
//case "设备OEE达成率":
//
// break;
//case "OEE时间明细":
//
// break;
//case "物料主数据":
//
// break;
//case "工艺装备":
//
// break;
//case "工艺":
//
//break;
//case "M+6月物料需求计划风险确认":
// break;
//case "日物料需求计划风险确认":
// break;
//case "采购订单风险确认":
// break;
//case "供应商共享库存-上午":
// break;
//case "供应商共享库存-晚上":
// break;
case "整车月度生产计划1":
var service1 = _builder.GetRequiredService<SupplierProPlaningService>();
var result1 = await service1.GetLogDataPaged(requestInputBase);
return Ok(result1);
break;
case "M+6月物料需求计划1":
var service2 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
var result2 = await service2.GetLogDataPaged(requestInputBase);
return Ok(result2);
break;
case "整车月度生产计划2":
var service3 = _builder.GetRequiredService<SupplierProPlaningService>();
var result3= await service3.GetLogDataPaged(requestInputBase);
return Ok(result3);
break;
case "M+6月物料需求计划2":
var service4 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
var result4= await service4.GetLogDataPaged(requestInputBase);
return Ok(result4);
break;
case "日物料需求计划":
var service5 = _builder.GetRequiredService<CherySupplierMrpDataService>();
var result5 = await service5.GetLogDataPaged(requestInputBase);
return Ok(result5);
break;
case "计划协议":
var service6 = _builder.GetRequiredService<CherySupplierSaWeekService>();
var result6 = await service6.GetLogDataPaged(requestInputBase);
return Ok(result6);
break;
case "采购订单":
var service7 = _builder.GetRequiredService<CherySupplierPoService>();
var result7 = await service7.GetLogDataPaged(requestInputBase);
return Ok(result7);
break;
case "过焊装未过总装":
var service8 = _builder.GetRequiredService<CherySupplierPorHSCHEDULService>();
var result8 = await service8.GetLogDataPaged(requestInputBase);
return Ok(result8);
break;
case "过涂装未过总装":
var service9 = _builder.GetRequiredService<CherySupplierProTSCHEDULService>();
var result9 = await service9.GetLogDataPaged(requestInputBase);
return Ok(result9);
break;
case "排序供货":
var service10 = _builder.GetRequiredService<CherySupplierProCSCHEDULService>();
var result10 = await service10.GetLogDataPaged(requestInputBase);
return Ok(result10);
break;
case "看板配送单":
var service11 = _builder.GetRequiredService<CherySupplierDelStateService>();
var result11 = await service11.GetLogDataPaged(requestInputBase);
return Ok(result11);
break;
case "退货单":
var service12 = _builder.GetRequiredService<CherySupplierReturnService>();
var result12 = await service12.GetLogDataPaged(requestInputBase);
return Ok(result12);
break;
case "奇瑞RDC共享库存":
var service13 = _builder.GetRequiredService<SupplierInvDataService>();
var result13 = await service13.GetLogDataPaged(requestInputBase);
return Ok(result13);
break;
case "日MRP状态监控":
var service14 = _builder.GetRequiredService<CherySupplierMrpService>();
var result14 = await service14.GetLogDataPaged(requestInputBase);
return Ok(result14);
break;
case "日MRP预警推移":
var service15 = _builder.GetRequiredService<CherySupplierMrpWarningService>();
var result15 = await service15.GetLogDataPaged(requestInputBase);
return Ok(result15);
break;
}
return Ok();
}
}

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

@ -69,10 +69,7 @@ namespace TaskManager.Controllers
_logger = logger;
_serviceProvider = serviceProvider; ;
_logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CustomLogs"); // 使用更安全的路径获取方式
EnsureDirectoryExists(_logDirectory);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
@ -83,6 +80,8 @@ namespace TaskManager.Controllers
while (!stoppingToken.IsCancellationRequested &&
await _logReader.WaitToReadAsync(stoppingToken))
{
string taskName = "";
string state = "";
try
{
var logs = new List<TaskLog>();
@ -113,6 +112,8 @@ namespace TaskManager.Controllers
log.Module = "计划物流";
}
log.Remark = string.Empty;
//taskName = log.TaskName;
//state = log.Type;
logsToSave.Add(log);
}
@ -123,7 +124,7 @@ namespace TaskManager.Controllers
}
catch (Exception ex)
{
_logger.LogError(ex, "日志写入数据库失败");
_logger.LogError(ex, $"日志写入数据库失败状态");
// 错误处理:可记录到临时文件或重试
await Task.Delay(1000, stoppingToken); // 短暂延迟后重试
}
@ -156,10 +157,8 @@ namespace TaskManager.Controllers
// 生成唯一文件名(时间戳+随机数)
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));

4
API/Wood.Service/Controllers/LogController.cs

@ -88,7 +88,7 @@ namespace TaskManager.Controllers
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString()
Version = version
};
EnqueueLog(log);
@ -108,7 +108,7 @@ namespace TaskManager.Controllers
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString(),
Version = version,
Remark = json

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

@ -67,7 +67,7 @@ namespace TaskManager.Controllers
try
{
await _logger.AddPostRequest("请求", TaskName, taskid, version, jsonData);
await _logger.AddPostRequest($"发送请求{Client}", TaskName, taskid, version, jsonData);
// 生成签名参数
string timeStamp = GetCurrentTimestamp();
string nonce = GenerateNonce();
@ -96,26 +96,21 @@ namespace TaskManager.Controllers
}
catch (HttpRequestException ex)
{
await _logger.AddError(ex.Message, this.TaskName, taskid, version,jsonData);
await _logger.AddError(ex.Message, this.TaskName, taskid, version, jsonData);
return string.Empty;
}
//string jsonContent = System.IO.File.ReadAllText("采购订单.json");
//// string jsonContent = System.IO.File.ReadAllText("过焊装未过总装.json");
//// string jsonContent = System.IO.File.ReadAllText("计划协议.json");
////string jsonContent = System.IO.File.ReadAllText("奇瑞RDC共享库存.json");
////string jsonContent4 = System.IO.File.ReadAllText("日MRP状态监控.json");
//string jsonContent = System.IO.File.ReadAllText("日物料需求计划.json");
////string jsonContent = System.IO.File.ReadAllText("整车月度生产计划1.json");
////string jsonContent = System.IO.File.ReadAllText("采购订单.json");
////// string jsonContent = System.IO.File.ReadAllText("过焊装未过总装.json");
////// string jsonContent = System.IO.File.ReadAllText("计划协议.json");
//////string jsonContent = System.IO.File.ReadAllText("奇瑞RDC共享库存.json");
//////string jsonContent4 = System.IO.File.ReadAllText("日MRP状态监控.json");
////string jsonContent = System.IO.File.ReadAllText("日物料需求计划.json");
//////string jsonContent = System.IO.File.ReadAllText("整车月度生产计划1.json");
//string jsonContent = System.IO.File.ReadAllText("M+6月物料需求计划1.json");
//string jsonContent = System.IO.File.ReadAllText("过涂装未过总装.json");
// return jsonContent;
////string jsonContent = System.IO.File.ReadAllText("过涂装未过总装.json");
// return jsonContent;

1
API/Wood.Service/Controllers/TaskConifgureController.cs

@ -380,6 +380,7 @@ namespace TaskManager.Controllers
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client,pagesize),
task.Corn,
TimeZoneInfo.Local
// new RecurringJobOptions() { MisfireHandling = MisfireHandlingOptions.FireOnce}
);
break;
case "排序供货":

Loading…
Cancel
Save