Browse Source

更新

master
赵新宇 3 days ago
parent
commit
4e4f782f74
  1. 8
      API/TaskManager.Contracts/Dtos/Dtos.cs
  2. 6
      API/TaskManager.Entity/11-18/SUPPLIER_CON_DATE.cs
  3. 12
      API/TaskManager.Entity/11-18/SUPPLIER_CON_MMRP.cs
  4. 3
      API/TaskManager.Entity/11-18/SUPPLIER_CON_PO.cs
  5. 59
      API/TaskManager.Entity/Entity.cs
  6. 5251
      API/TaskManager.EntityFramework/Migrations/20250609064628_z202506090009.Designer.cs
  7. 126
      API/TaskManager.EntityFramework/Migrations/20250609064628_z202506090009.cs
  8. 5252
      API/TaskManager.EntityFramework/Migrations/20250609071043_z202506090010.Designer.cs
  9. 34
      API/TaskManager.EntityFramework/Migrations/20250609071043_z202506090010.cs
  10. 5253
      API/TaskManager.EntityFramework/Migrations/20250609071148_z202506090011.Designer.cs
  11. 36
      API/TaskManager.EntityFramework/Migrations/20250609071148_z202506090011.cs
  12. 25
      API/TaskManager.EntityFramework/Migrations/JobDbContextModelSnapshot.cs
  13. 196
      API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs
  14. 22
      API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
  15. 265
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  16. 2
      API/Wood.Service/Controllers/CherySupplierMrpDataService.cs
  17. 1
      API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs
  18. 1
      API/Wood.Service/Controllers/CherySupplierPoService.cs
  19. 115
      API/Wood.Service/Controllers/LogController.cs
  20. 8
      API/Wood.Service/Controllers/LogService.cs
  21. 33
      API/Wood.Service/Controllers/RecurringJobBaseController.cs
  22. 128
      API/Wood.Service/Controllers/TaskConifgureController.cs

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

@ -303,7 +303,7 @@ namespace TaskManager.Contracts.Dtos
public DateTime CreateTime { get; set; }
public string UpdateByUser { get; set; }
public DateTime UpdateTime { get; set; }
public string IsDelete { get; set; }
public int IsDelete { get; set; }
public int Version { get; set; }
}
@ -922,7 +922,7 @@ namespace TaskManager.Contracts.Dtos
/// 是否删除(0:否,1是)
/// </summary>
[ExporterHeader(DisplayName = "删除标记")]
public int IsDelete { get; set; } = 0;
public string IsDelete { get; set; } = "0";
/// <summary>
/// 版本号
@ -1608,7 +1608,9 @@ public class SUPPLIER_MRP_WARNING_DETAIL_DTO : CherryReadBaseEntityDto
#endregion

6
API/TaskManager.Entity/11-18/SUPPLIER_CON_DATE.cs

@ -5,8 +5,12 @@ namespace TaskManager.Entity.Entitys
/// <summary>
/// 日物料需求计划风险确认
/// </summary>
public class SUPPLIER_CON_DATE : BaseEntity
public class SUPPLIER_CON_DATE : CherryConReadBaseEntity
{
/// <summary>
/// 供应商代码
/// </summary>

12
API/TaskManager.Entity/11-18/SUPPLIER_CON_MMRP.cs

@ -5,8 +5,18 @@ namespace TaskManager.Entity.Entitys
/// <summary>
/// M+6月物料需求计划风险确认
/// </summary>
public class SUPPLIER_CON_MMRP : BaseEntity
public class SUPPLIER_CON_MMRP : CherryConReadBaseEntity
{
[ExporterHeader(DisplayName = "奇瑞Id")]
[ImporterHeader(Name = "奇瑞Id")]
public string? Id { set; get; }
/// <summary>
/// 供应商代码
/// </summary>

3
API/TaskManager.Entity/11-18/SUPPLIER_CON_PO.cs

@ -5,8 +5,9 @@ namespace TaskManager.Entity.Entitys
/// <summary>
/// 采购订单风险确认
/// </summary>
public class SUPPLIER_CON_PO : BaseEntity
public class SUPPLIER_CON_PO : CherryConReadBaseEntity
{
/// <summary>
/// 供应商代码
/// </summary>

59
API/TaskManager.Entity/Entity.cs

@ -9,6 +9,7 @@ using System.Threading.Tasks;
using System.Xml.Linq;
using Magicodes.ExporterAndImporter.Core;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
namespace TaskManager.Entity
{
@ -130,33 +131,33 @@ namespace TaskManager.Entity
public class TaskLog:BaseEntity
{
/// <summary>
/// 版本号
/// JSON文件存储路径
/// </summary>
[ExporterHeader(DisplayName = "版本号")]
[MaxLength(20)]
[ExporterHeader(DisplayName = "JSON文件存储路径")]
[MaxLength(30)]
public string? Path { set; get; }
/// <summary>
/// 版本号
/// </summary>
[ExporterHeader(DisplayName = "版本号")]
[MaxLength(20)]
[MaxLength(30)]
public string? Version { set; get; }
/// <summary>
/// 详细描述
/// </summary>
[ExporterHeader(DisplayName = "信息")]
[MaxLength(20)]
public string? Info { get; set; }
/// <summary>
/// 日志类型
/// 日志类型,1:错误,2:正常,3:警告,4:信息,5:提示,6:调试,7:跟踪,8:自定义
/// </summary>
[MaxLength(20)]
[MaxLength(30)]
[ExporterHeader(DisplayName = "日志类型")]
public string? Type { get; set; }
/// <summary>
/// 任务名称
/// </summary>
[MaxLength(20)]
[MaxLength(30)]
[ExporterHeader(DisplayName = "任务名")]
public string? TaskName { get; set; }
@ -236,6 +237,23 @@ namespace TaskManager.Entity
[MaxLength(50)]
public string? Id { get; set; }
}
public class CherryConReadBaseEntity : BaseEntity
{
/// <summary>
/// 同步ID
/// </summary>
[ExporterHeader(DisplayName = "奇瑞记录ID")]
[ImporterHeader(Name = "奇瑞记录ID")]
[MaxLength(50)]
public string? Id { get; set; }
}
/// <summary>
/// 任务订阅实体类(对应数据库表 TEA_TASK_SUB)
@ -563,77 +581,77 @@ namespace TaskManager.Entity
/// </summary>
[JsonPropertyName("quantityDemand1")]
[ExporterHeader(DisplayName = "需求数量1")]
public decimal QuantityDemand1 { get; set; } = 0;
public decimal? QuantityDemand1 { get; set; } = 0;
/// <summary>
/// 需求数量2
/// </summary>
[JsonPropertyName("quantityDemand2")]
[ExporterHeader(DisplayName = "需求数量2")]
public decimal QuantityDemand2 { get; set; } = 0;
public decimal? QuantityDemand2 { get; set; } = 0;
/// <summary>
/// 需求数量3
/// </summary>
[JsonPropertyName("quantityDemand3")]
[ExporterHeader(DisplayName = "需求数量3")]
public decimal QuantityDemand3 { get; set; } = 0;
public decimal? QuantityDemand3 { get; set; } = 0;
/// <summary>
/// 需求数量4
/// </summary>
[JsonPropertyName("quantityDemand4")]
[ExporterHeader(DisplayName = "需求数量4")]
public decimal QuantityDemand4 { get; set; } = 0;
public decimal? QuantityDemand4 { get; set; } = 0;
/// <summary>
/// 需求数量5
/// </summary>
[JsonPropertyName("quantityDemand5")]
[ExporterHeader(DisplayName = "需求数量5")]
public decimal QuantityDemand5 { get; set; } = 0;
public decimal? QuantityDemand5 { get; set; } = 0;
/// <summary>
/// 需求数量6
/// </summary>
[JsonPropertyName("quantityDemand6")]
[ExporterHeader(DisplayName = "需求数量6")]
public decimal QuantityDemand6 { get; set; } = 0;
public decimal? QuantityDemand6 { get; set; } = 0;
/// <summary>
/// 需求数量7
/// </summary>
[JsonPropertyName("quantityDemand7")]
[ExporterHeader(DisplayName = "需求数量7")]
public decimal QuantityDemand7 { get; set; } = 0;
public decimal? QuantityDemand7 { get; set; } = 0;
/// <summary>
/// 需求数量8
/// </summary>
[JsonPropertyName("quantityDemand8")]
[ExporterHeader(DisplayName = "需求数量8")]
public decimal QuantityDemand8 { get; set; } = 0;
public decimal? QuantityDemand8 { get; set; } = 0;
/// <summary>
/// 需求数量9
/// </summary>
[JsonPropertyName("quantityDemand9")]
[ExporterHeader(DisplayName = "需求数量9")]
public decimal QuantityDemand9 { get; set; } =0;
public decimal? QuantityDemand9 { get; set; } =0;
/// <summary>
/// 需求数量10
/// </summary>
[JsonPropertyName("quantityDemand10")]
[ExporterHeader(DisplayName = "需求数量10")]
public decimal QuantityDemand10 { get; set; } =0;
public decimal? QuantityDemand10 { get; set; } =0;
/// <summary>
/// 需求数量11
/// </summary>
[JsonPropertyName("quantityDemand11")]
[ExporterHeader(DisplayName = "需求数量11")]
public decimal QuantityDemand11 { get; set; } =0;
public decimal? QuantityDemand11 { get; set; } =0;
/// <summary>
/// 需求数量12
@ -1460,7 +1478,8 @@ namespace TaskManager.Entity
/// 是否删除(0:否,1是)
/// </summary>
[ExporterHeader(DisplayName = "删除标记")]
public int IsDelete { get; set; } =0;
[MaxLength(5)]
public string IsDelete { get; set; } ="0";
/// <summary>
/// 版本号

5251
API/TaskManager.EntityFramework/Migrations/20250609064628_z202506090009.Designer.cs

File diff suppressed because it is too large

126
API/TaskManager.EntityFramework/Migrations/20250609064628_z202506090009.cs

@ -0,0 +1,126 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TaskManager.EntityFramework.Migrations
{
/// <inheritdoc />
public partial class z202506090009 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Version",
table: "TaskLogs",
type: "nvarchar(30)",
maxLength: 30,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(20)",
oldMaxLength: 20,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Type",
table: "TaskLogs",
type: "nvarchar(30)",
maxLength: 30,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(20)",
oldMaxLength: 20,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "TaskName",
table: "TaskLogs",
type: "nvarchar(30)",
maxLength: 30,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(20)",
oldMaxLength: 20,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "TaskLogs",
type: "nvarchar(30)",
maxLength: 30,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(20)",
oldMaxLength: 20,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Info",
table: "TaskLogs",
type: "nvarchar(max)",
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(20)",
oldMaxLength: 20,
oldNullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Version",
table: "TaskLogs",
type: "nvarchar(20)",
maxLength: 20,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(30)",
oldMaxLength: 30,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Type",
table: "TaskLogs",
type: "nvarchar(20)",
maxLength: 20,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(30)",
oldMaxLength: 30,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "TaskName",
table: "TaskLogs",
type: "nvarchar(20)",
maxLength: 20,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(30)",
oldMaxLength: 30,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "TaskLogs",
type: "nvarchar(20)",
maxLength: 20,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(30)",
oldMaxLength: 30,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Info",
table: "TaskLogs",
type: "nvarchar(20)",
maxLength: 20,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(max)",
oldNullable: true);
}
}
}

5252
API/TaskManager.EntityFramework/Migrations/20250609071043_z202506090010.Designer.cs

File diff suppressed because it is too large

34
API/TaskManager.EntityFramework/Migrations/20250609071043_z202506090010.cs

@ -0,0 +1,34 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TaskManager.EntityFramework.Migrations
{
/// <inheritdoc />
public partial class z202506090010 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "IsDelete",
table: "SUPPLIER_PRO_TSCHEDUL",
type: "nvarchar(max)",
nullable: false,
oldClrType: typeof(int),
oldType: "int");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "IsDelete",
table: "SUPPLIER_PRO_TSCHEDUL",
type: "int",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(max)");
}
}
}

5253
API/TaskManager.EntityFramework/Migrations/20250609071148_z202506090011.Designer.cs

File diff suppressed because it is too large

36
API/TaskManager.EntityFramework/Migrations/20250609071148_z202506090011.cs

@ -0,0 +1,36 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TaskManager.EntityFramework.Migrations
{
/// <inheritdoc />
public partial class z202506090011 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "IsDelete",
table: "SUPPLIER_PRO_TSCHEDUL",
type: "nvarchar(5)",
maxLength: 5,
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(max)");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "IsDelete",
table: "SUPPLIER_PRO_TSCHEDUL",
type: "nvarchar(max)",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(5)",
oldMaxLength: 5);
}
}
}

25
API/TaskManager.EntityFramework/Migrations/JobDbContextModelSnapshot.cs

@ -4658,8 +4658,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<int>("IsDelete")
.HasColumnType("int");
b.Property<string>("IsDelete")
.IsRequired()
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<string>("MaterialCode")
.HasMaxLength(50)
@ -5132,12 +5134,11 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("Info")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
.HasColumnType("nvarchar(max)");
b.Property<string>("Path")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<bool>("ReadState")
.HasColumnType("bit");
@ -5149,16 +5150,16 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("TaskName")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<string>("Type")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<string>("Version")
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<bool>("WriteState")
.HasColumnType("bit");

196
API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs

@ -1,196 +0,0 @@

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using Wood.Entity;
namespace TaskManager.Controllers
{
[AllowAnonymous]
public class CheryRecurringJobBaseController :ControllerBase, IDoExecute,IScoped
{
protected string appKey = "8EG566b9bedd2bf46d";
protected string appSecret = "48edc4425647425d87f806a1ba492580";
protected readonly HttpClient _httpClient;
protected readonly JobDbContext _jobDbContext;
public virtual int PageSizeOut { set; get; } = 50;
public virtual int PageSizeIn { set; get; } = 50;
protected string Client { set; get; } = "Chery";
protected string Path { set; get; } = "/v2/get/supplierProPlaning";
protected string Url { set; get; } = "/v2/get/supplierProPlaning";
protected virtual string TaskName { set; get; } = "SupplierProPlaning";
protected readonly LogController _logger;
public CheryRecurringJobBaseController(
HttpClient httpClient,
JobDbContext jobDbContext,
LogController log
)
{
_httpClient = new HttpClient();
_jobDbContext = jobDbContext;
_logger = log;
}
/// <summary>
/// 提交给接口
/// </summary>
/// <param name="url"></param>
/// <param name="jsonData">录入DTOJson</param>
/// <returns>返回DTOJson</returns>
protected async Task<string> Post(string url, string path, string jsonData)
{
try
{
// 生成签名参数
string timeStamp = GetCurrentTimestamp();
string nonce = GenerateNonce();
var sign = GenerateSign(HttpMethod.Post.Method, path, appKey, appSecret, timeStamp, nonce, jsonData);
// 构建请求
var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = new StringContent(jsonData, Encoding.UTF8, "application/json");
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.AddInfoRemark("test", TaskName,str);
return str;
}
catch (HttpRequestException ex)
{
await _logger.AddError(ex.Message, this.TaskName);
//error = ex.Message;
return string.Empty;
}
}
private string GenerateSign(string method, string path, string appKey, string appSecret, string timestamp, string nonce, string jsonBody)
{
string paramStr = $"method={method.ToUpper()}&path={path}&appKey={appKey}&appSecret={appSecret}&timestamp={timestamp}&nonce={nonce}&jsonBody={jsonBody}";
return ComputeSHA512(paramStr);
}
private string ComputeSHA512(string input)
{
using (SHA512 sha512 = SHA512.Create())
{
byte[] bytes = Encoding.UTF8.GetBytes(input);
byte[] hash = sha512.ComputeHash(bytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("x2")); // "x2" 表示小写十六进制
}
return builder.ToString();
}
}
private string GetCurrentTimestamp()
{
return ((long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds).ToString();
}
private string GenerateNonce()
{
const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
int length = random.Next(10, 51);
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
private async Task BeforeExecuteAsync(string uid)
{
await _logger.AddInfo($"{TaskName}开始执行作业{uid}", TaskName);
}
private async Task AfterExecuteAsync(string uid)
{
await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName);
}
[NonAction]
public async Task ExecuteAsync(string url, string path, string taskName,string client)
{
var str = DateTime.Now.ToLongTimeString();
await BeforeExecuteAsync(str);
await DoExecutingAsync(url, path, taskName,client);
await AfterExecuteAsync(str);
}
protected async virtual Task DoExecutingAsync(string url, string path, string takName,string client)
{
}
protected static string RemoveWhitespace(string input)
{
if (string.IsNullOrEmpty(input))
return input;
// 使用正则表达式移除空格和换行
return Regex.Replace(input, @"[\s]+", "");
}
}
}

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

@ -54,7 +54,7 @@ namespace TaskManager.Controllers
var first = _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName && p.Client == client);
if (first == null)
{
await _logger.AddError($"手工调用接口{taskName}任务没找到", taskName);
return;
}
Url = first.Url;
@ -74,7 +74,7 @@ namespace TaskManager.Controllers
await SyncTaskSubTable(TaskName,Client);
}
private async Task<QRReturnInfo> PostPageAsync(PagedRequest<TDTO> t)
private async Task<QRReturnInfo> PostPageAsync(PagedRequest<TDTO> t,Guid taskId,string version)
{
try
{
@ -86,7 +86,7 @@ namespace TaskManager.Controllers
}
);
inputjson = RemoveWhitespace(inputjson);
var content = await Post(Url, Path, inputjson);
var content = await Post(Url, Path, inputjson,taskId,version);
if (!string.IsNullOrEmpty(content))
{
@ -102,13 +102,13 @@ namespace TaskManager.Controllers
}
else
{
await _logger.AddError($"调用接口无返回值{Url}", TaskName);
await _logger.AddError($"调用接口无返回值{Url}", TaskName,taskId,version);
return null;
}
}
catch (Exception ex)
{
await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName);
await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName,taskId,version);
return null;
}
@ -146,9 +146,13 @@ namespace TaskManager.Controllers
private async Task SyncTaskSubTable(string taskName, string client)
{
if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client))
{
await _logger.AddError("任务名称或客户端不能为空",taskName);
await _logger.AddError("任务名称或客户端不能为空",taskName,Guid.NewGuid(),DateTime.Now.ToString("yyyyMMdd"));
return;
}
var sublist = _jobDbContext.TaskSub.Where(p => taskName.Contains(p.TaskName) && p.WriteState == false && p.Subscriber == client ).ToList();
@ -191,7 +195,7 @@ namespace TaskManager.Controllers
{
itm.WriteState = true;
}
var result = await PostPageAsync(pagedRequest);
var result = await PostPageAsync(pagedRequest,sub.TaskId, DateTime.Now.ToString("yyyyMMdd"));
if (result.code == "200")
{
_jobDbContext.BulkUpdate(records);
@ -206,7 +210,7 @@ namespace TaskManager.Controllers
}
else
{
await _logger.AddError($"第 {i} 页数据保存失败,请检查数据。", TaskName);
await _logger.AddError($"第 {i} 页数据保存失败,请检查数据。", TaskName,sub.TaskId, DateTime.Now.ToString("yyyyMMdd"));
}
}
@ -476,7 +480,7 @@ namespace TaskManager.Controllers
}
catch (Exception ex)
{
await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" });
}
}

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

@ -10,6 +10,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Omu.ValueInjecter;
using System;
using System.Data;
using System.Data.Common;
using System.Linq.Expressions;
@ -49,14 +50,12 @@ namespace TaskManager.Controllers
var tran = transaction.GetDbTransaction();
try
{
await _jobDbContext.BulkInsertAsync(list);
await _jobDbContext.BulkMergeAsync(list, options => { options.ColumnPrimaryKeyExpression = p => p.Id; });
//_jobDbContext.BulkMerge(list, options => {
// options.ColumnPrimaryKeyExpression = p => p.Id;
//});
await ConfirmDataInsertAsync(list, _jobDbContext, tran);
// 提交事务
await transaction.CommitAsync();
}
@ -78,19 +77,23 @@ namespace TaskManager.Controllers
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<T>().Where(p => p.RequestDate == inputdate).Count();
if (readedcount == 0)//第一次请求用false,接口人胡启名要求
{
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date,PageSize=200, IsForce = false});
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date,PageSize=100, IsForce = false},taskId,version);
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName,taskId,version);
return allData;
}
if (firstResponse.Data.Total == "0")
{
await _logger.AddInfo("首次请求失败,Total为0是否已经全部读取过。", TaskName);
await _logger.AddInfo("首次请求失败,Total为0是否已经全部读取过。", TaskName, taskId, version);
return allData;
}
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
@ -99,30 +102,40 @@ namespace TaskManager.Controllers
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
if (readedcount > 0)
{
var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
else
foreach (var itm in firstResponse.Data.Rows)
{
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
//if (readedcount > 0)
//{
// var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
// foreach (var itm in firstResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pagefirstList.Add(entity);
// allData.Add(itm);
// }
//}
//else
//{
// foreach (var itm in firstResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pagefirstList.Add(entity);
// allData.Add(itm);
// }
//}
if (pagefirstList.Any())
{
await InsertDataAsync(pagefirstList);
@ -136,36 +149,48 @@ namespace TaskManager.Controllers
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, PageSize = 200, IsForce = false };
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, PageSize = 100, IsForce = false };
Console.WriteLine($"正在请求第 {currentPage} 页...");
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput);
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput, taskId, version);
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{
List<T> pageList = new List<T>();
if (readedcount > 0)
{
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
else
foreach (var itm in pageResponse.Data.Rows)
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
//if (readedcount > 0)
//{
// var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
// foreach (var itm in pageResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pageList.Add(entity);
// allData.Add(itm);
// }
//}
//else
//{
// foreach (var itm in pageResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pageList.Add(entity);
// allData.Add(itm);
// }
//}
if (pageList.Any())
{
await InsertDataAsync(pageList);
@ -173,28 +198,28 @@ namespace TaskManager.Controllers
}
else
{
await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName);
await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName, taskId, version);
}
// 简单的请求间隔,避免过于频繁
await Task.Delay(200);
}
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName, taskId, version);
}
}
else
{
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, PageSize = 200, IsForce = true });
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, PageSize = 100, IsForce = true },taskId,version);
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddInfo("首次请求失败,无法获取分页信息。", TaskName);
await _logger.AddInfo("首次请求失败,无法获取分页信息。", TaskName, taskId, version);
return allData;
}
if (firstResponse.Data.Total == "0")
{
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName);
await _logger.AddInfo("首次请求失败,Total为0是否已经全部读取过。", TaskName, taskId, version);
return allData;
}
@ -204,29 +229,40 @@ namespace TaskManager.Controllers
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
if (readedcount > 0)
{
var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
else
foreach (var itm in firstResponse.Data.Rows)
{
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
//if (readedcount > 0)
//{
// var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
// foreach (var itm in firstResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pagefirstList.Add(entity);
// allData.Add(itm);
// }
//}
//else
//{
// foreach (var itm in firstResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pagefirstList.Add(entity);
// allData.Add(itm);
// }
//}
if (pagefirstList.Any())
{
await InsertDataAsync(pagefirstList);
@ -239,37 +275,48 @@ namespace TaskManager.Controllers
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, PageSize = 200, IsForce = true };
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, PageSize = 100, IsForce = true };
//Console.WriteLine($"正在请求第 {currentPage} 页...");
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput);
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput,taskId,version);
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{
List<T> pageList = new List<T>();
if (readedcount > 0)
foreach (var itm in pageResponse.Data.Rows)
{
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
else
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
//if (readedcount > 0)
//{
// var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
// foreach (var itm in pageResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pageList.Add(entity);
// allData.Add(itm);
// }
//}
//else
//{
// foreach (var itm in pageResponse.Data.Rows)
// {
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pageList.Add(entity);
// allData.Add(itm);
// }
//}
if (pageList.Any())
{
await InsertDataAsync(pageList);
@ -279,12 +326,12 @@ namespace TaskManager.Controllers
}
else
{
await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName);
await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName, taskId, version);
}
// 简单的请求间隔,避免过于频繁
await Task.Delay(200);
}
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName, taskId, version);
}
}
@ -293,7 +340,7 @@ namespace TaskManager.Controllers
return allData;
}
private async Task<PagedResponse<ToutputDetial>> GetPageAsync(PAGE_DTO input)
private async Task<PagedResponse<ToutputDetial>> GetPageAsync(PAGE_DTO input,Guid taskId,string version)
{
try
{
@ -305,7 +352,7 @@ namespace TaskManager.Controllers
}
);
inputjson = RemoveWhitespace(inputjson);
var content = await Post(Url, Path, inputjson);
var content = await Post(Url, Path, inputjson, taskId, version);
if (!string.IsNullOrEmpty(content))
{
@ -321,13 +368,13 @@ namespace TaskManager.Controllers
}
else
{
await _logger.AddError($"调用接口无返回值{Url}", TaskName);
await _logger.AddError($"调用接口无返回值{Url}", TaskName, taskId, version);
return null;
}
}
catch (Exception ex)
{
await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName);
await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName, taskId, version);
return null;
}
@ -345,7 +392,7 @@ namespace TaskManager.Controllers
var first= _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName && p.Client == client);
if (first == null)
{
await _logger.AddError($"手工调用接口{taskName}没找到", taskName);
return;
}
@ -637,7 +684,7 @@ namespace TaskManager.Controllers
}
catch (Exception ex)
{
await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" });
}
}

2
API/Wood.Service/Controllers/CherySupplierMrpDataService.cs

@ -25,6 +25,8 @@ namespace TaskManager.Controllers
plist.ForEach(p =>
{
var con = new SUPPLIER_CON_DATE();
con.Id=p.Id;
con.SupplierCode = "8EG";
con.ReleaseEdition = p.ReleaseEdition;
con.MaterialCode = p.MaterialCode;

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

@ -29,6 +29,7 @@ namespace TaskManager.Controllers
plist.ForEach(p =>
{
var con = new SUPPLIER_CON_MMRP();
con.Id = p.Id;
con.SupplierCode = "8EG";
con.ReleaseEdition = p.ReleaseEdition;
con.MaterialCode = p.MaterialCode;

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

@ -24,6 +24,7 @@ namespace TaskManager.Controllers
plist.ForEach(p =>
{
var con = new SUPPLIER_CON_PO();
con.Id = p.Id;
con.SupplierCode = "8EG";
con.PurchaseOrder =p.PurchaseOrder ;

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

@ -32,28 +32,117 @@ namespace TaskManager.Controllers
var log = await _context.TaskLogs.ToListAsync();
return log;
}
//[HttpGet("AddError")]
//public async Task<bool> AddError(string message,string taskname)
//{
// _context.TaskLogs.Add(new TaskLog() { Info = message, Type = "错误",TaskName=taskname ,CreationTime=DateTime.Now});
// var result =await _context.SaveChangesAsync();
// if (result > 0)
// {
// return true;
// }
// return false;
//}
//[HttpGet("AddInfo")]
//public async Task<bool> AddInfo(string message, string taskname)
//{
// _context.TaskLogs.Add(new TaskLog() { Info = message, Type = "记录", TaskName = taskname, CreationTime = DateTime.Now });
// var result = await _context.SaveChangesAsync();
// if (result > 0)
// {
// return true;
// }
// return false;
//}
[HttpGet("AddError")]
public async Task<bool> AddError(string message,string taskname)
public async Task<bool> AddError(string message, string taskname, Guid taskid, string version)
{
_context.TaskLogs.Add(new TaskLog() { Info = message, Type = "错误",TaskName=taskname ,CreationTime=DateTime.Now});
var result =await _context.SaveChangesAsync();
if (result > 0)
var log = new TaskLog
{
return true;
}
return false;
Info = message,
Type = "错误",
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString()
};
_context.TaskLogs.Add(log);
var result = await _context.SaveChangesAsync();
return true; // 日志已入队,视为成功
}
[HttpGet("AddInfo")]
public async Task<bool> AddInfo(string message, string taskname)
public async Task<bool> AddInfo(string message, string taskname, Guid taskid, string version)
{
_context.TaskLogs.Add(new TaskLog() { Info = message, Type = "记录", TaskName = taskname, CreationTime = DateTime.Now });
var log = new TaskLog
{
Info = message,
Type = "信息",
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString()
};
_context.TaskLogs.Add(log);
var result = await _context.SaveChangesAsync();
if (result > 0)
return true;
}
[HttpGet("AddPostRequest")]
public async Task<bool> AddPostRequest(string message, string taskname, Guid taskid, string version,string remark)
{
var log = new TaskLog
{
return true;
}
return false;
Info = message,
Type = "请求",
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString(),
Remark = remark
};
_context.TaskLogs.Add(log);
var result = await _context.SaveChangesAsync();
return true;
}
[HttpGet("AddPostResponse")]
public async Task<bool> AddPostResponse(string message, string taskname, Guid taskid, string version,string remaek)
{
var log = new TaskLog
{
Info = message,
Type = "应答",
TaskName = taskname,
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString(),
Remark = remaek
};
_context.TaskLogs.Add(log);
var result = await _context.SaveChangesAsync();
return true;
}
[HttpGet("AddInfoRemark")]
public async Task<bool> AddInfoRemark(string message, string taskname,string remark)
{

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

@ -100,14 +100,16 @@ namespace Wood.Service.Controllers
}
[HttpGet("AddInfo")]
public async Task<bool> AddInfo(string message, string taskname)
public async Task<bool> AddInfo(string message, string taskname, Guid taskid, Version version)
{
var log = new TaskLog
{
Info = message,
Type = "记录",
Type = "错误",
TaskName = taskname,
CreationTime = DateTime.Now
CreationTime = DateTime.Now,
TaskId = taskid,
Version = version?.ToString()
};
EnqueueLog(log);

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

@ -57,12 +57,13 @@ namespace TaskManager.Controllers
/// <param name="url"></param>
/// <param name="jsonData">录入DTOJson</param>
/// <returns>返回DTOJson</returns>
protected async Task<string> Post(string url, string path, string jsonData)
protected async Task<string> Post(string url, string path, string jsonData, Guid taskid, string version)
{
try
{
await _logger.AddPostRequest("请求", TaskName, taskid, version, jsonData);
// 生成签名参数
string timeStamp = GetCurrentTimestamp();
string nonce = GenerateNonce();
@ -80,16 +81,36 @@ namespace TaskManager.Controllers
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode(); // 抛出异常处理状态码
var str = await response.Content.ReadAsStringAsync();
await _logger.AddInfoRemark("test", TaskName,str);
await _logger.AddPostResponse("响应", TaskName, taskid, version, str);
return str;
}
catch (HttpRequestException ex)
{
await _logger.AddError(ex.Message, this.TaskName);
await _logger.AddError(ex.Message, this.TaskName, taskid, version);
//error = ex.Message;
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("M+6月物料需求计划1.json");
//string jsonContent = System.IO.File.ReadAllText("过涂装未过总装.json");
//return jsonContent;
}
private string GenerateSign(string method, string path, string appKey, string appSecret, string timestamp, string nonce, string jsonBody)
@ -130,11 +151,11 @@ namespace TaskManager.Controllers
private async Task BeforeExecuteAsync(string uid)
{
await _logger.AddInfo($"{TaskName}开始执行作业{uid}", TaskName);
//await _logger.AddInfo($"{TaskName}开始执行作业{uid}", TaskName);
}
private async Task AfterExecuteAsync(string uid)
{
await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName);
//await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName);
}
[NonAction]
public async Task ExecuteAsync(string url, string path, string taskName,string client)

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

@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.VisualBasic;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
@ -67,7 +68,7 @@ namespace TaskManager.Controllers
}
/// <summary>
@ -106,118 +107,118 @@ namespace TaskManager.Controllers
// switch (task.TaskName)
// {
// //case "整车月度生产计划1":
// // // 添加的代码块
// // var controller1 = _builder.GetRequiredService<SupplierProPlaningService>();
// // await controller1.TestAsync(url, path, taskname, "2025-05-29");
// // break;
// case "M+6月物料需求计划1":
// // 添加的代码块
// var controller2 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
// await controller2.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "整车月度生产计划2":
// // 添加的代码块
// var controller3 = _builder.GetRequiredService<SupplierProPlaningService>();
// await controller3.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "M+6月物料需求计划2":
// // 添加的代码块
// var controller4 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
// await controller4.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "日物料需求计划":
// // 添加的代码块
// var controller5 = _builder.GetRequiredService<CherySupplierMrpDataService>();
// await controller5.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "计划协议":
// // 添加的代码块
// var controller6 = _builder.GetRequiredService<CherySupplierSaWeekService>();
// await controller6.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "采购订单":
// // 添加的代码块
// var controller7 = _builder.GetRequiredService<CherySupplierPoService>();
// await controller7.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "过焊装未过总装":
// // 添加的代码块
// var controller8 = _builder.GetRequiredService<CherySupplierPorHSCHEDULService>();
// await controller8.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "过涂装未过总装":
// // 添加的代码块
// var controller9 = _builder.GetRequiredService<CherySupplierProTSCHEDULService>();
// await controller9.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "排序供货":
// // 添加的代码块
// var controller10 = _builder.GetRequiredService<CherySupplierProCSCHEDULService>();
// await controller10.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "看板配送单":
// // 添加的代码块
// var controller11 = _builder.GetRequiredService<CherySupplierDelStateService>();
// await controller11.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "退货单":
// // 添加的代码块
// var controller12 = _builder.GetRequiredService<CherySupplierReturnService>();
// await controller12.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "奇瑞RDC共享库存":
// // 添加的代码块
// var controller13 = _builder.GetRequiredService<SupplierInvDataService>();
// await controller13.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "日MRP状态监控":
// // 添加的代码块
// var controller14 = _builder.GetRequiredService<CherySupplierMrpDataService>();
// await controller14.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "日MRP预警推移":
// // 添加的代码块
// var controller15 = _builder.GetRequiredService<CherySupplierMrpWarningService>();
// await controller15.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "供应商共享库存-上午":
// // 添加的代码块
// var controller19 = _builder.GetRequiredService<CherySupplierSinvDataService>();
// await controller19.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "供应商共享库存-晚上":
// // 添加的代码块
// var controller20 = _builder.GetRequiredService<CherySupplierSinvDataService>();
// await controller20.TestAsync(url, path, taskname, "2025-05-29");
@ -229,7 +230,7 @@ namespace TaskManager.Controllers
// }
// catch
// {
// }
@ -237,7 +238,7 @@ namespace TaskManager.Controllers
@ -246,6 +247,55 @@ namespace TaskManager.Controllers
// }
//}
/// <summary>
/// 设置任务是否自动执行
/// </summary>
[HttpGet]
public async Task<ActionResult> SetIsAuto(long uid, bool isauto)
{
try
{
var task = _context.TaskConifgure.FirstOrDefault(p => p.UId == uid);
if (isauto == true)
{
task.IsAuto = true;
var url = task.Url;
var path = task.Api;
var client = task.Client;
await AddOrUpdateTask(task);
int result=_context.SaveChanges();
return new JsonResult("200", $"{task.TaskName}设置为自动执行!");
}
else
{
task.IsAuto = false;
var url = task.Url;
var path = task.Api;
var client = task.Client;
await RemoveTask(task);
int result = _context.SaveChanges();
return new JsonResult("200", $"{task.TaskName}设置为手动执行!");
}
}
catch (Exception ex) {
return new JsonResult("200", $"执行报错!");
}
}
/// <summary>
@ -265,6 +315,21 @@ namespace TaskManager.Controllers
foreach (var task in tasks)
{
await AddOrUpdateTask(task);
}
foreach (var task in delTasks)
{
await RemoveTask(task);
}
}
private async Task AddOrUpdateTask(TaskConifgure task)
{
var url = task.Url;
var path = task.Api;
var client = task.Client;
@ -411,7 +476,7 @@ namespace TaskManager.Controllers
case "整车月度生产计划1":
RecurringJob.AddOrUpdate<SupplierProPlaningService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName,client),
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
@ -572,9 +637,14 @@ namespace TaskManager.Controllers
}
}
foreach (var task in delTasks)
{
}
private async Task RemoveTask(TaskConifgure task)
{
switch (task.TaskName)
{
@ -724,11 +794,19 @@ namespace TaskManager.Controllers
break;
}
}
}
[HttpGet]
public async Task<FileStreamResult> Exportextend([FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,

Loading…
Cancel
Save