You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

737 lines
32 KiB

using Hangfire;
using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
//using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.IO;
using System.Linq.Expressions;
using System.Security.Policy;
using System.Threading.Tasks;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository;
using Wood.Service.Controllers;
namespace TaskManager.Controllers
{
//[ApiController]
//[Route("[controller]")]
[AllowAnonymous]
public class TaskConifgureController :NormalBaseController<TaskConifgure>
{
public TaskConifgureController(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<TaskConifgure> repository) : base(context, builder, configuration, repository)
{
}
/// <summary>
/// 请除所有任务
/// </summary>
/// <returns></returns>
[HttpPost(Name = "ClearAllTask")]
public async Task ClearAllTask()
{
var tasks = await _context.TaskConifgure.ToListAsync();
foreach (var item in tasks)
{
RecurringJob.RemoveIfExists(item.TaskName);
}
}
/// <summary>
/// 执行铁定任务
/// </summary>
/// <param name="taskName"></param>
/// <returns></returns>
[NonAction]
public async Task ExecuteTask(string taskName)
{
var first = await _context.TaskConifgure.FirstOrDefaultAsync(p => p.TaskName == taskName);
var url = first.Url;
var path = first.Api;
var client = first.Client;
var controller = _builder.GetRequiredService<SupplierProPlaningService>();
await controller.ExecuteAsync(url, path, taskName,client);
}
/// <summary>
/// <summary>
/// 执行铁定任务
/// </summary>
/// <param name="taskName"></param>
/// <returns></returns>
[NonAction]
public async Task testTask(string taskName)
{
var first = await _context.TaskConifgure.FirstOrDefaultAsync(p => p.TaskName == taskName);
var url = first.Url;
var path = first.Api;
var controller = _builder.GetRequiredService<SupplierProPlaningService>();
await controller.TestAsync(url, path, taskName, "2025-04-21");
}
[NonAction]
public async Task TaskAllAsync(string date)
{
var tasks = _context.TaskConifgure.Where(p => p.IsAuto == true && !string.IsNullOrEmpty(p.Corn)
&& !string.IsNullOrEmpty(p.Api) && !string.IsNullOrEmpty(p.Url)).ToList();
foreach (var task in tasks)
{
try
{
var url = task.Url;
var path = task.Api;
var taskname = task.TaskName;
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<SupplierMrpMonthService>();
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<SupplierMrpMonthService>();
await controller4.TestAsync(url, path, taskname, "2025-05-29");
break;
case "日物料需求计划":
// 添加的代码块
var controller5 = _builder.GetRequiredService<SupplierMrpDataService>();
await controller5.TestAsync(url, path, taskname, "2025-05-29");
break;
case "计划协议":
// 添加的代码块
var controller6 = _builder.GetRequiredService<SupplierSaWeekService>();
await controller6.TestAsync(url, path, taskname, "2025-05-29");
break;
case "采购订单":
// 添加的代码块
var controller7 = _builder.GetRequiredService<SupplierPoService>();
await controller7.TestAsync(url, path, taskname, "2025-05-29");
break;
case "过焊装未过总装":
// 添加的代码块
var controller8 = _builder.GetRequiredService<SupplierPorHSCHEDULService>();
await controller8.TestAsync(url, path, taskname, "2025-05-29");
break;
case "过涂装未过总装":
// 添加的代码块
var controller9 = _builder.GetRequiredService<supplierProTSCHEDULService>();
await controller9.TestAsync(url, path, taskname, "2025-05-29");
break;
case "排序供货":
// 添加的代码块
var controller10 = _builder.GetRequiredService<SupplierProCSCHEDULService>();
await controller10.TestAsync(url, path, taskname, "2025-05-29");
break;
case "看板配送单":
// 添加的代码块
var controller11 = _builder.GetRequiredService<SupplierDelStateService>();
await controller11.TestAsync(url, path, taskname, "2025-05-29");
break;
case "退货单":
// 添加的代码块
var controller12 = _builder.GetRequiredService<SupplierReturnService>();
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<SupplierMrpDataService>();
await controller14.TestAsync(url, path, taskname, "2025-05-29");
break;
case "日MRP预警推移":
// 添加的代码块
var controller15 = _builder.GetRequiredService<SupplierMrpWarningService>();
await controller15.TestAsync(url, path, taskname, "2025-05-29");
break;
case "供应商共享库存-上午":
// 添加的代码块
var controller19 = _builder.GetRequiredService<SupplierSinvDataService>();
await controller19.TestAsync(url, path, taskname, "2025-05-29");
break;
case "供应商共享库存-晚上":
// 添加的代码块
var controller20 = _builder.GetRequiredService<SupplierSinvDataService>();
await controller20.TestAsync(url, path, taskname, "2025-05-29");
break;
}
}
catch
{
}
}
}
/// <summary>
/// 刷新任务
/// </summary>
/// <returns></returns>
public async Task RefreshTaskConfig()
{
// 从数据库加载所有任务配置
var tasks = _context.TaskConifgure.Where(p => p.IsAuto == true && !string.IsNullOrEmpty(p.Corn)
&& !string.IsNullOrEmpty(p.Api) && !string.IsNullOrEmpty(p.Url)).ToList();
var delTasks = _context.TaskConifgure.Where(p => p.IsAuto == false || string.IsNullOrEmpty(p.Corn)
|| string.IsNullOrEmpty(p.Api) || string.IsNullOrEmpty(p.Url)
).ToList();
foreach (var task in tasks)
{
var url = task.Url;
var path = task.Api;
var client = task.Client;
switch (task.TaskName)
{
//case "来料检验数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_MATERIAL_STOCK_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url,path,task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "排产数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_SCHEDULING_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "供应商基础信息":
// RecurringJob.AddOrUpdate<SUPPLIER_INFO_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "人员资质信息":
// RecurringJob.AddOrUpdate<SUPPLIER_EMPLOYEE_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "BOM主数据":
// RecurringJob.AddOrUpdate<SUPPLIER_BOM_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "过程控制项质量数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_CPS_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "生产过程数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_DATA_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "产品一次合格率":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_FIRST_PASSYIELD_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "工位一次合格率":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_STATION_FIRST_PASSYIELD_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "缺陷业务数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_FLAW_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "环境业务数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_ENVIRONMENT_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "设备OEE达成率":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "OEE时间明细":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_OEE_TIME_DETAILS_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "物料主数据":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_MATERIAL_DATA_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "工艺装备":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_PROCESS_EQUIPMENT_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
//case "工艺":
// RecurringJob.AddOrUpdate<SUPPLIER_PRO_PROCESS_CONTROLLER>(
// task.TaskName,
// x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName),
// task.Corn,
// TimeZoneInfo.Local
// );
// break;
case "整车月度生产计划1":
RecurringJob.AddOrUpdate<SupplierProPlaningService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName,client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "M+6月物料需求计划1":
RecurringJob.AddOrUpdate<SupplierMrpMonthService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "整车月度生产计划2":
RecurringJob.AddOrUpdate<SupplierProPlaningService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "M+6月物料需求计划2":
RecurringJob.AddOrUpdate<SupplierMrpMonthService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "日物料需求计划":
RecurringJob.AddOrUpdate<SupplierMrpDataService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "计划协议":
RecurringJob.AddOrUpdate<SupplierSaWeekService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "采购订单":
RecurringJob.AddOrUpdate<SupplierPoService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "过焊装未过总装":
RecurringJob.AddOrUpdate<SupplierPorHSCHEDULService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "过涂装未过总装":
RecurringJob.AddOrUpdate<supplierProTSCHEDULService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "排序供货":
RecurringJob.AddOrUpdate<SupplierProCSCHEDULService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "看板配送单":
RecurringJob.AddOrUpdate<SupplierDelStateService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "退货单":
RecurringJob.AddOrUpdate<SupplierReturnService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "奇瑞RDC共享库存":
RecurringJob.AddOrUpdate<SupplierInvDataService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "日MRP状态监控":
RecurringJob.AddOrUpdate<SupplierMrpDataService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "日MRP预警推移":
RecurringJob.AddOrUpdate<SupplierMrpWarningService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "M+6月物料需求计划风险确认":
RecurringJob.AddOrUpdate<SUPPLIER_CON_MMRP_CONTROLLER>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "日物料需求计划风险确认":
RecurringJob.AddOrUpdate<SUPPLIER_CON_DATE_CONTROLLER>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "采购订单风险确认":
RecurringJob.AddOrUpdate<SUPPLIER_CON_PO_CONTROLLER>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "供应商共享库存-上午":
RecurringJob.AddOrUpdate<SupplierSinvDataService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
case "供应商共享库存-晚上":
RecurringJob.AddOrUpdate<SupplierSinvDataService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
TimeZoneInfo.Local
);
break;
}
}
foreach (var task in delTasks)
{
switch (task.TaskName)
{
case "来料检验数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "排产数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "供应商基础信息":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "人员资质信息":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "BOM主数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "过程控制项质量数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "生产过程数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "产品一次合格率":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "工位一次合格率":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "缺陷业务数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "环境业务数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "设备OEE达成率":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "OEE时间明细":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "物料主数据":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "工艺装备":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "工艺":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "整车月度生产计划1":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "M+6月物料需求计划1":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "整车月度生产计划2":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "M+6月物料需求计划2":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "日物料需求计划":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "计划协议":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "采购订单":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "过焊装未过总装":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "过涂装未过总装":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "排序供货":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "看板配送单":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "退货单":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "奇瑞RDC共享库存":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "日MRP状态监控":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "日MRP预警推移":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "M+6月物料需求计划风险确认":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "日物料需求计划风险确认":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "采购订单风险确认":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "供应商共享库存-上午":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
case "供应商共享库存-晚上":
// 移除指定的定时任务
RecurringJob.RemoveIfExists(task.TaskName);
break;
}
}
}
// 使用 Hangfire 注册定时任务
// Console.WriteLine($"已注册定时任务: {task.TaskName}, Cron: {task.Corn}");
}
}