Browse Source

更新

master
赵新宇 6 days ago
parent
commit
4e4f782f74
  1. 6
      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. 217
      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. 111
      API/Wood.Service/Controllers/LogController.cs
  20. 8
      API/Wood.Service/Controllers/LogService.cs
  21. 33
      API/Wood.Service/Controllers/RecurringJobBaseController.cs
  22. 82
      API/Wood.Service/Controllers/TaskConifgureController.cs

6
API/TaskManager.Contracts/Dtos/Dtos.cs

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

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

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

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

@ -5,8 +5,18 @@ namespace TaskManager.Entity.Entitys
/// <summary> /// <summary>
/// M+6月物料需求计划风险确认 /// M+6月物料需求计划风险确认
/// </summary> /// </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>
/// 供应商代码 /// 供应商代码
/// </summary> /// </summary>

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

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

59
API/TaskManager.Entity/Entity.cs

@ -9,6 +9,7 @@ using System.Threading.Tasks;
using System.Xml.Linq; using System.Xml.Linq;
using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core;
using Newtonsoft.Json; using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
namespace TaskManager.Entity namespace TaskManager.Entity
{ {
@ -130,33 +131,33 @@ namespace TaskManager.Entity
public class TaskLog:BaseEntity public class TaskLog:BaseEntity
{ {
/// <summary> /// <summary>
/// 版本号 /// JSON文件存储路径
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "版本号")] [ExporterHeader(DisplayName = "JSON文件存储路径")]
[MaxLength(20)] [MaxLength(30)]
public string? Path { set; get; } public string? Path { set; get; }
/// <summary> /// <summary>
/// 版本号 /// 版本号
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "版本号")] [ExporterHeader(DisplayName = "版本号")]
[MaxLength(20)] [MaxLength(30)]
public string? Version { set; get; } public string? Version { set; get; }
/// <summary> /// <summary>
/// 详细描述 /// 详细描述
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "信息")] [ExporterHeader(DisplayName = "信息")]
[MaxLength(20)]
public string? Info { get; set; } public string? Info { get; set; }
/// <summary> /// <summary>
/// 日志类型 /// 日志类型,1:错误,2:正常,3:警告,4:信息,5:提示,6:调试,7:跟踪,8:自定义
/// </summary> /// </summary>
[MaxLength(20)] [MaxLength(30)]
[ExporterHeader(DisplayName = "日志类型")] [ExporterHeader(DisplayName = "日志类型")]
public string? Type { get; set; } public string? Type { get; set; }
/// <summary> /// <summary>
/// 任务名称 /// 任务名称
/// </summary> /// </summary>
[MaxLength(20)] [MaxLength(30)]
[ExporterHeader(DisplayName = "任务名")] [ExporterHeader(DisplayName = "任务名")]
public string? TaskName { get; set; } public string? TaskName { get; set; }
@ -236,6 +237,23 @@ namespace TaskManager.Entity
[MaxLength(50)] [MaxLength(50)]
public string? Id { get; set; } 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> /// <summary>
/// 任务订阅实体类(对应数据库表 TEA_TASK_SUB) /// 任务订阅实体类(对应数据库表 TEA_TASK_SUB)
@ -563,77 +581,77 @@ namespace TaskManager.Entity
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand1")] [JsonPropertyName("quantityDemand1")]
[ExporterHeader(DisplayName = "需求数量1")] [ExporterHeader(DisplayName = "需求数量1")]
public decimal QuantityDemand1 { get; set; } = 0; public decimal? QuantityDemand1 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量2 /// 需求数量2
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand2")] [JsonPropertyName("quantityDemand2")]
[ExporterHeader(DisplayName = "需求数量2")] [ExporterHeader(DisplayName = "需求数量2")]
public decimal QuantityDemand2 { get; set; } = 0; public decimal? QuantityDemand2 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量3 /// 需求数量3
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand3")] [JsonPropertyName("quantityDemand3")]
[ExporterHeader(DisplayName = "需求数量3")] [ExporterHeader(DisplayName = "需求数量3")]
public decimal QuantityDemand3 { get; set; } = 0; public decimal? QuantityDemand3 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量4 /// 需求数量4
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand4")] [JsonPropertyName("quantityDemand4")]
[ExporterHeader(DisplayName = "需求数量4")] [ExporterHeader(DisplayName = "需求数量4")]
public decimal QuantityDemand4 { get; set; } = 0; public decimal? QuantityDemand4 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量5 /// 需求数量5
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand5")] [JsonPropertyName("quantityDemand5")]
[ExporterHeader(DisplayName = "需求数量5")] [ExporterHeader(DisplayName = "需求数量5")]
public decimal QuantityDemand5 { get; set; } = 0; public decimal? QuantityDemand5 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量6 /// 需求数量6
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand6")] [JsonPropertyName("quantityDemand6")]
[ExporterHeader(DisplayName = "需求数量6")] [ExporterHeader(DisplayName = "需求数量6")]
public decimal QuantityDemand6 { get; set; } = 0; public decimal? QuantityDemand6 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量7 /// 需求数量7
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand7")] [JsonPropertyName("quantityDemand7")]
[ExporterHeader(DisplayName = "需求数量7")] [ExporterHeader(DisplayName = "需求数量7")]
public decimal QuantityDemand7 { get; set; } = 0; public decimal? QuantityDemand7 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量8 /// 需求数量8
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand8")] [JsonPropertyName("quantityDemand8")]
[ExporterHeader(DisplayName = "需求数量8")] [ExporterHeader(DisplayName = "需求数量8")]
public decimal QuantityDemand8 { get; set; } = 0; public decimal? QuantityDemand8 { get; set; } = 0;
/// <summary> /// <summary>
/// 需求数量9 /// 需求数量9
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand9")] [JsonPropertyName("quantityDemand9")]
[ExporterHeader(DisplayName = "需求数量9")] [ExporterHeader(DisplayName = "需求数量9")]
public decimal QuantityDemand9 { get; set; } =0; public decimal? QuantityDemand9 { get; set; } =0;
/// <summary> /// <summary>
/// 需求数量10 /// 需求数量10
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand10")] [JsonPropertyName("quantityDemand10")]
[ExporterHeader(DisplayName = "需求数量10")] [ExporterHeader(DisplayName = "需求数量10")]
public decimal QuantityDemand10 { get; set; } =0; public decimal? QuantityDemand10 { get; set; } =0;
/// <summary> /// <summary>
/// 需求数量11 /// 需求数量11
/// </summary> /// </summary>
[JsonPropertyName("quantityDemand11")] [JsonPropertyName("quantityDemand11")]
[ExporterHeader(DisplayName = "需求数量11")] [ExporterHeader(DisplayName = "需求数量11")]
public decimal QuantityDemand11 { get; set; } =0; public decimal? QuantityDemand11 { get; set; } =0;
/// <summary> /// <summary>
/// 需求数量12 /// 需求数量12
@ -1460,7 +1478,8 @@ namespace TaskManager.Entity
/// 是否删除(0:否,1是) /// 是否删除(0:否,1是)
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "删除标记")] [ExporterHeader(DisplayName = "删除标记")]
public int IsDelete { get; set; } =0; [MaxLength(5)]
public string IsDelete { get; set; } ="0";
/// <summary> /// <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) .HasMaxLength(50)
.HasColumnType("nvarchar(50)"); .HasColumnType("nvarchar(50)");
b.Property<int>("IsDelete") b.Property<string>("IsDelete")
.HasColumnType("int"); .IsRequired()
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");
b.Property<string>("MaterialCode") b.Property<string>("MaterialCode")
.HasMaxLength(50) .HasMaxLength(50)
@ -5132,12 +5134,11 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2"); .HasColumnType("datetime2");
b.Property<string>("Info") b.Property<string>("Info")
.HasMaxLength(20) .HasColumnType("nvarchar(max)");
.HasColumnType("nvarchar(20)");
b.Property<string>("Path") b.Property<string>("Path")
.HasMaxLength(20) .HasMaxLength(30)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(30)");
b.Property<bool>("ReadState") b.Property<bool>("ReadState")
.HasColumnType("bit"); .HasColumnType("bit");
@ -5149,16 +5150,16 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<string>("TaskName") b.Property<string>("TaskName")
.HasMaxLength(20) .HasMaxLength(30)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(30)");
b.Property<string>("Type") b.Property<string>("Type")
.HasMaxLength(20) .HasMaxLength(30)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(30)");
b.Property<string>("Version") b.Property<string>("Version")
.HasMaxLength(20) .HasMaxLength(30)
.HasColumnType("nvarchar(20)"); .HasColumnType("nvarchar(30)");
b.Property<bool>("WriteState") b.Property<bool>("WriteState")
.HasColumnType("bit"); .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); var first = _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName && p.Client == client);
if (first == null) if (first == null)
{ {
await _logger.AddError($"手工调用接口{taskName}任务没找到", taskName);
return; return;
} }
Url = first.Url; Url = first.Url;
@ -74,7 +74,7 @@ namespace TaskManager.Controllers
await SyncTaskSubTable(TaskName,Client); 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 try
{ {
@ -86,7 +86,7 @@ namespace TaskManager.Controllers
} }
); );
inputjson = RemoveWhitespace(inputjson); inputjson = RemoveWhitespace(inputjson);
var content = await Post(Url, Path, inputjson); var content = await Post(Url, Path, inputjson,taskId,version);
if (!string.IsNullOrEmpty(content)) if (!string.IsNullOrEmpty(content))
{ {
@ -102,13 +102,13 @@ namespace TaskManager.Controllers
} }
else else
{ {
await _logger.AddError($"调用接口无返回值{Url}", TaskName); await _logger.AddError($"调用接口无返回值{Url}", TaskName,taskId,version);
return null; return null;
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName); await _logger.AddError($"调用接口无返回值错误{ex.Message}", TaskName,taskId,version);
return null; return null;
} }
@ -146,9 +146,13 @@ namespace TaskManager.Controllers
private async Task SyncTaskSubTable(string taskName, string client) private async Task SyncTaskSubTable(string taskName, string client)
{ {
if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client)) if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client))
{ {
await _logger.AddError("任务名称或客户端不能为空",taskName); await _logger.AddError("任务名称或客户端不能为空",taskName,Guid.NewGuid(),DateTime.Now.ToString("yyyyMMdd"));
return; return;
} }
var sublist = _jobDbContext.TaskSub.Where(p => taskName.Contains(p.TaskName) && p.WriteState == false && p.Subscriber == client ).ToList(); 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; itm.WriteState = true;
} }
var result = await PostPageAsync(pagedRequest); var result = await PostPageAsync(pagedRequest,sub.TaskId, DateTime.Now.ToString("yyyyMMdd"));
if (result.code == "200") if (result.code == "200")
{ {
_jobDbContext.BulkUpdate(records); _jobDbContext.BulkUpdate(records);
@ -206,7 +210,7 @@ namespace TaskManager.Controllers
} }
else 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) catch (Exception ex)
{ {
await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" }); return new JsonResult(new { Code = 400, Message = "导入失败!" });
} }
} }

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

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

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

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

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

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

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

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

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

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

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

@ -57,12 +57,13 @@ namespace TaskManager.Controllers
/// <param name="url"></param> /// <param name="url"></param>
/// <param name="jsonData">录入DTOJson</param> /// <param name="jsonData">录入DTOJson</param>
/// <returns>返回DTOJson</returns> /// <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 try
{ {
await _logger.AddPostRequest("请求", TaskName, taskid, version, jsonData);
// 生成签名参数 // 生成签名参数
string timeStamp = GetCurrentTimestamp(); string timeStamp = GetCurrentTimestamp();
string nonce = GenerateNonce(); string nonce = GenerateNonce();
@ -80,16 +81,36 @@ namespace TaskManager.Controllers
var response = await _httpClient.SendAsync(request); var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode(); // 抛出异常处理状态码 response.EnsureSuccessStatusCode(); // 抛出异常处理状态码
var str = await response.Content.ReadAsStringAsync(); var str = await response.Content.ReadAsStringAsync();
await _logger.AddInfoRemark("test", TaskName,str); await _logger.AddPostResponse("响应", TaskName, taskid, version, str);
return str; return str;
} }
catch (HttpRequestException ex) catch (HttpRequestException ex)
{ {
await _logger.AddError(ex.Message, this.TaskName); await _logger.AddError(ex.Message, this.TaskName, taskid, version);
//error = ex.Message; //error = ex.Message;
return string.Empty; 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) 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) private async Task BeforeExecuteAsync(string uid)
{ {
await _logger.AddInfo($"{TaskName}开始执行作业{uid}", TaskName); //await _logger.AddInfo($"{TaskName}开始执行作业{uid}", TaskName);
} }
private async Task AfterExecuteAsync(string uid) private async Task AfterExecuteAsync(string uid)
{ {
await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName); //await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName);
} }
[NonAction] [NonAction]
public async Task ExecuteAsync(string url, string path, string taskName,string client) public async Task ExecuteAsync(string url, string path, string taskName,string client)

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

@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.VisualBasic;
using TaskManager.Controllers; using TaskManager.Controllers;
using TaskManager.Entity; using TaskManager.Entity;
using TaskManager.EntityFramework; using TaskManager.EntityFramework;
@ -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> /// <summary>
@ -265,6 +315,21 @@ namespace TaskManager.Controllers
foreach (var task in tasks) 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 url = task.Url;
var path = task.Api; var path = task.Api;
var client = task.Client; var client = task.Client;
@ -572,10 +637,15 @@ namespace TaskManager.Controllers
} }
} }
foreach (var task in delTasks) private async Task RemoveTask(TaskConifgure task)
{ {
switch (task.TaskName) switch (task.TaskName)
{ {
case "来料检验数据": case "来料检验数据":
@ -724,11 +794,19 @@ namespace TaskManager.Controllers
break; break;
} }
}
} }
[HttpGet] [HttpGet]
public async Task<FileStreamResult> Exportextend([FromQuery] int pageNumber = 1, public async Task<FileStreamResult> Exportextend([FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10, [FromQuery] int pageSize = 10,

Loading…
Cancel
Save