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.
299 lines
15 KiB
299 lines
15 KiB
using Dapper;
|
|
using Hangfire;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
using TaskManager.Contracts.Dtos;
|
|
using TaskManager.Controllers;
|
|
using TaskManager.Entity;
|
|
using TaskManager.Entity.Entitys;
|
|
using TaskManager.EntityFramework;
|
|
using TaskManager.EntityFramework.Repository;
|
|
using Wood.Util.Filters;
|
|
using Z.EntityFramework.Plus;
|
|
|
|
namespace Wood.Service.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 任务表
|
|
/// </summary>
|
|
public class TaskSubService : NormalBaseController<TaskSub>
|
|
{
|
|
|
|
|
|
private readonly LogController _log;
|
|
public TaskSubService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<TaskSub> repository, LogController log) : base(context, builder, configuration, repository)
|
|
{
|
|
_log = log;
|
|
}
|
|
|
|
//private async Task<PagedResult<T>> GetDataPagedAsync<T,TService,TDTO>(RequestInputBase input)
|
|
// where T : BaseEntity,new()
|
|
// where TService :CheryRecurringJobInputPageController<T,TDTO> ,new()
|
|
// where TDTO : class ,new()
|
|
//{
|
|
// var service = _builder.GetRequiredService<TService>();
|
|
// var task = input.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
// input.Condition.Filters.Remove(task);
|
|
// var result = await service.GetDataPaged(input);
|
|
// return result.Value;
|
|
//}
|
|
/// <summary>
|
|
/// 调用明细
|
|
/// </summary>
|
|
/// <param name="requestInputBase"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<ActionResult> GetDetail([FromBody] RequestInputBase requestInputBase)
|
|
{
|
|
|
|
var taskid = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TaskId").Value;
|
|
var tablename = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName").Value;
|
|
switch (tablename)
|
|
{
|
|
case "SUPPLIER_PRO_MATERIAL_STOCK"://来料检验数据
|
|
var stockservice = _builder.GetRequiredService<SupplierProMaterialStockLogService>();
|
|
var stocktask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(stocktask);
|
|
var stockresult = await stockservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(stockresult);
|
|
case "SUPPLIER_PRO_SCHEDULING"://排产数据
|
|
|
|
var schedservice = _builder.GetRequiredService<CherySupplierProSchedulingLogService>();
|
|
var schedtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(schedtask);
|
|
var schedresult = await schedservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(schedresult);
|
|
|
|
case "SUPPLIER_INFO"://供应商基础信息
|
|
|
|
var infoservice = _builder.GetRequiredService<CherySupplierInfoLogService>();
|
|
var infotask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(infotask);
|
|
var inforesult = await infoservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(inforesult);
|
|
|
|
case "SUPPLIER_EMPLOYEE"://人员资质信息
|
|
var emplyeeservice = _builder.GetRequiredService<CherySupplierEmployeeLogService>();
|
|
var emplyeetask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(emplyeetask);
|
|
var emplyeeresult = await emplyeeservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(emplyeeresult);
|
|
|
|
|
|
case "SUPPLIER_BOM"://BOM主数据
|
|
|
|
var bomservice = _builder.GetRequiredService<CherySupplierBomLogService>();
|
|
var bomtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(bomtask);
|
|
var bomresult = await bomservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(bomresult);
|
|
|
|
case "SUPPLIER_PRO_CPS"://过程控制项质量数据
|
|
var cpsservice = _builder.GetRequiredService<CherySupplierProCpsLogService>();
|
|
var cpstask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(cpstask);
|
|
var cpsresult = await cpsservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(cpsresult);
|
|
|
|
case "SUPPLIER_PRO_DATA"://生产过程数据
|
|
var dataservice = _builder.GetRequiredService<CherySupplierProDataLogService>();
|
|
var datatask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(datatask);
|
|
var dataresult = await dataservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(dataresult);
|
|
|
|
case "SUPPLIER_PRO_FIRST_PASSYIELD"://产品一次合格率
|
|
|
|
var passyieldservice = _builder.GetRequiredService<CherySupplierProFirstPassyieldLogService>();
|
|
var passyieldtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(passyieldtask);
|
|
var passyieldresult = await passyieldservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(passyieldresult);
|
|
|
|
|
|
case "SUPPLIER_PRO_STATION_FIRST_PASSYIELD"://工位一次合格率
|
|
var pasyservice = _builder.GetRequiredService<CherySupplierProStationFirstPassyieldLogService>();
|
|
var pasytask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(pasytask);
|
|
var pasyresult = await pasyservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(pasyresult);
|
|
|
|
case "SUPPLIER_PRO_FLAW"://缺陷业务数据
|
|
var flawservice = _builder.GetRequiredService<CherySupplierProFlawLogService>();
|
|
var flawtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(flawtask);
|
|
var flawresult = await flawservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(flawresult);
|
|
|
|
case "SUPPLIER_PRO_ENVIRONMENT"://环境业务数据
|
|
var envservice = _builder.GetRequiredService<CherySupplierProEnvironmentLogService>();
|
|
var envtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(envtask);
|
|
var envresult = await envservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(envresult);
|
|
|
|
case "SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE"://设备OEE达成率
|
|
var rateservice = _builder.GetRequiredService<CherySupplierProOeeAchievementRateLogService>();
|
|
var ratetask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(ratetask);
|
|
var rateresult = await rateservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(rateresult);
|
|
|
|
case "SUPPLIER_PRO_OEE_TIME_DETAILS"://OEE时间明细
|
|
var detailservice = _builder.GetRequiredService<CherySupplierProOeeTimeDetailsLogService>();
|
|
var detailtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(detailtask);
|
|
var detailresult = await detailservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(detailresult);
|
|
|
|
case "SUPPLIER_PRO_MATERIAL_DATA"://物料主数据
|
|
var materialservice = _builder.GetRequiredService<CherySupplierProMaterialDataLogService>();
|
|
var materialtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(materialtask);
|
|
var materialresult = await materialservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(materialresult);
|
|
|
|
case "SUPPLIER_PRO_ATTACHMENT_DATA":// 附件类数据
|
|
var attachment_dataservice = _builder.GetRequiredService<CherySupplierProAttachmentDataLogService>();
|
|
var attachment_datatask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(attachment_datatask);
|
|
var attachment_dataresult = await attachment_dataservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(attachment_dataresult);
|
|
|
|
case "SUPPLIER_PRO_PROCESS_EQUIPMENT":// 工艺装备
|
|
var eqservice = _builder.GetRequiredService<CherySupplierProProcessEquipmentLogService>();
|
|
var eqtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(eqtask);
|
|
var eqresult = await eqservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(eqresult);
|
|
|
|
case "SUPPLIER_PRO_PROCESS"://工艺
|
|
var processservice = _builder.GetRequiredService<CherySupplierProProcessLogService>();
|
|
var processtask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(processtask);
|
|
var processresult = await processservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(processresult);
|
|
|
|
case "SUPPLIER_CON_MMRP"://M+6月物料需求计划风险确认
|
|
var mmrpservice = _builder.GetRequiredService<CherySupplierConMmrpLogService>();
|
|
var mmrptask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(mmrptask);
|
|
var mmrpresult = await mmrpservice.GetLogDataPaged(requestInputBase);
|
|
return Ok(mmrpresult);
|
|
|
|
case "SUPPLIER_CON_DATE"://日物料需求计划风险确认
|
|
var con_dateservice = _builder.GetRequiredService<CherySupplierConDateService>();
|
|
var con_datetask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(con_datetask);
|
|
var con_dateresult = await con_dateservice.GetTaskDataPaged(requestInputBase);
|
|
return Ok(con_dateresult);
|
|
|
|
case "SUPPLIER_CON_PO"://采购订单风险确认
|
|
var con_poservice = _builder.GetRequiredService<CherySupplierConPoService>();
|
|
var con_potask = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(con_potask);
|
|
var con_poresult = await con_poservice.GetTaskDataPaged(requestInputBase);
|
|
return Ok(con_poresult);
|
|
case "SUPPLIER_SINV_DATA"://
|
|
var service1 = _builder.GetRequiredService<CherySupplierSinvDataLogService>();
|
|
var table = requestInputBase.Condition.Filters.FirstOrDefault(p => p.Column == "TableName");
|
|
requestInputBase.Condition.Filters.Remove(table);
|
|
var result1 = await service1.GetLogDataPaged(requestInputBase);
|
|
return Ok(result1);
|
|
|
|
|
|
}
|
|
return Ok();
|
|
}
|
|
/// <summary>
|
|
/// 撤销风险确认任务
|
|
/// </summary>
|
|
/// <param name="taskId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<ActionResult> CancelTask(Guid taskId)
|
|
{
|
|
var task = _context.TaskSub.FirstOrDefault(p => p.TaskId == taskId && p.WriteState == true && p.FailedCount > 0);
|
|
var list = new List<string>() {
|
|
"M+6月物料需求计划风险确认",
|
|
"日物料需求计划风险确认",
|
|
"采购订单风险确认"
|
|
};
|
|
if (!list.Contains(task.TaskName) && task.FailedCount == 0)
|
|
{
|
|
return new JsonResult(new { code = 400, message = "任务不是失败任务或不是风险确认单,不能取消 " });
|
|
}
|
|
switch (task.TableName)
|
|
{
|
|
case "SUPPLIER_CON_MMRP"://M+6月物料需求计划风险确认
|
|
await CancelTask<SUPPLIER_CON_MMRP>("SUPPLIER_CON_MMRP", taskId,task.TaskName);
|
|
break;
|
|
case "SUPPLIER_CON_DATE"://日物料需求计划风险确认
|
|
await CancelTask<SUPPLIER_CON_DATE>("SUPPLIER_CON_DATE", taskId, task.TaskName);
|
|
break;
|
|
case "SUPPLIER_CON_PO"://采购订单风险确认
|
|
await CancelTask<SUPPLIER_CON_PO>("SUPPLIER_CON_MMRP", taskId, task.TaskName);
|
|
break;
|
|
}
|
|
task.FailedInfo = "取消成功,失败记录已经还原到业务数据,重新填写!";
|
|
_context.TaskSub.Update(task);
|
|
_context.SaveChanges();
|
|
|
|
|
|
|
|
return new JsonResult(new { code = 200, message = "取消成功!" });
|
|
}
|
|
private async Task CancelTask<T>(string tablename, Guid taskId,string taskname) where T : CherryWriteBaseEnity, new()
|
|
{
|
|
try
|
|
{
|
|
var mmrplist = _context.Database.GetDbConnection().Query<T>($"select * from {tablename} where taskid='{taskId}' and writestate=0");
|
|
foreach (var item in mmrplist)
|
|
{
|
|
item.ReadState = false;
|
|
item.WriteState = false;
|
|
}
|
|
await _context.BulkUpdateAsync(mmrplist);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
await _log.AddError($"撤销任务风险确认任务{taskId}失败,原因:{ex.Message}", taskname, taskId, DateTime.Now.ToString("yyyyMMdd"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|