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.

194 lines
9.7 KiB

using System;
using System.Linq;
2 years ago
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Threading;
using Volo.Abp.Uow;
10 months ago
using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
2 years ago
using Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent;
public class MesIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
{
10 months ago
private readonly string Incoming = "MES接收";
2 years ago
private readonly IOptions<MesOptions> _options;
public MesIncomingBackgroundWorker(
AbpAsyncTimer timer,
IOptions<MesOptions> options,
IServiceScopeFactory serviceScopeFactory
) : base(timer, serviceScopeFactory)
{
_options = options;
Timer.Period = options.Value.IncomingOptions.PeriodSeconds * 1000; //default 10 minutes
}
[UnitOfWork]
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
10 months ago
Logger.LogInformation($"开始: 执行 {Incoming}");
10 months ago
var configManager = workerContext.ServiceProvider.GetRequiredService<IInterfaceConfigManager>();
var confitem = await configManager.GetInterfaceConfig("MES-IN").ConfigureAwait(false);
if (confitem == null)
2 years ago
{
10 months ago
if (!_options.Value.IncomingOptions.Active)
{
Logger.LogInformation($"{Incoming} 已关闭没有执行!");
return;
}
}
else
{
if (!confitem.Active)
{
Logger.LogInformation($"{Incoming} 已关闭没有执行!");
10 months ago
if (confitem.Status == 0)
{
await configManager.UpsertStatusAsync("MES-IN").ConfigureAwait(false);
Logger.LogInformation($"{Incoming} 运行已结束,更新接口运行状态!");
}
10 months ago
return;
}
2 years ago
}
10 months ago
int min = DateTime.Now.Hour*60+ DateTime.Now.Minute;//第二天00:05:00与当天23:55:00不执行避免tyrpnumber重复
if ( (24*60-5)<= min || min <= 5)
{
Logger.LogInformation($"{Incoming} 时间小于第二天00:05:00大于当天23:55:00");
return;
}
10 months ago
#region 缴库 MesOut
Logger.LogInformation($"读取缴库(MesOut)");//缴库
var mesOutReader = workerContext.ServiceProvider.GetRequiredService<MesOutReader>();
var mesOutConverter = workerContext.ServiceProvider.GetRequiredService<MesOutConverter>();
var TransferNoteConverter = workerContext.ServiceProvider.GetRequiredService<QtyrfeConverter>();
//读取mes缴库
var mesOutsFromExternalList = await mesOutReader.ReadAsync().ConfigureAwait(false);
var mesOutsFromExternalList_ProductReceipt = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.ProductReceipt.ToString()).ToList();
var mesOutsFromExternalList_TransferNote = mesOutsFromExternalList.Where(r => r.DataType == EnumIncomingDataType.TransferNote.ToString()).ToList();
//转换缴库数据(如果有质量补得数据直接生产移库数据移到客户库位)
await mesOutConverter.ConvertAsync(mesOutsFromExternalList_ProductReceipt).ConfigureAwait(false);
if (mesOutsFromExternalList_TransferNote.Count > 0)//如果有质量补则生产储位调拨任务
{
await TransferNoteConverter.ConvertAsync(mesOutsFromExternalList_TransferNote).ConfigureAwait(false);
}
Logger.LogInformation($"处理完工收货(缴库)【{mesOutsFromExternalList_ProductReceipt.Count}】条数据");
Logger.LogInformation($"处理储位调拨【{mesOutsFromExternalList_TransferNote.Count}】条数据");
#endregion
#region 冻结解冻 Frozen
Logger.LogInformation($"读取冻结解冻 (Frozen)");//冻结解冻
var FrozenReader = workerContext.ServiceProvider.GetRequiredService<FrozenReader>();
var FrozenConverter = workerContext.ServiceProvider.GetRequiredService<FrozenConverter>();
//读取并保存Frozen
var mesNoteFromExternalList = await FrozenReader.ReadAsync().ConfigureAwait(false);
//转换Frozen
await FrozenConverter.ConvertAsync(mesNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理冻结解冻【{mesNoteFromExternalList.Count}】条数据");
#endregion
#region 报废 Scrap
Logger.LogInformation($"读取报废(Scrap)");//报废
var scrapReader = workerContext.ServiceProvider.GetRequiredService<ScrapReader>();
var scrapConverter = workerContext.ServiceProvider.GetRequiredService<ScrapConverter>();
//读取并保存Scrap
var scrapsFromExternalList = await scrapReader.ReadAsync().ConfigureAwait(false);
//转换Scrap
await scrapConverter.ConvertAsync(scrapsFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理报废【{scrapsFromExternalList.Count}】条数据");
#endregion
#region 耗用单 BackFlush
Logger.LogInformation($"读取耗用单 (BackFlush)");//耗用单
var BackFlushReader = workerContext.ServiceProvider.GetRequiredService<BackFluReader>();
var BackFlushConverter = workerContext.ServiceProvider.GetRequiredService<BackFluConverter>();
//读取并保存BackFlush
var backFlushsFromExternalList = await BackFlushReader.ReadAsync().ConfigureAwait(false);
//转换BackFlush
await BackFlushConverter.ConvertAsync(backFlushsFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理耗用单【{backFlushsFromExternalList.Count}】条数据");
#endregion
#region 储位调拨 TransferNote
Logger.LogInformation($"读取储位调拨 (TransferNote)");//储位调拨
var TransferNoteReader = workerContext.ServiceProvider.GetRequiredService<QtyrfeReader>();
//读取并保存TransferNote
var transferNoteFromExternalList = await TransferNoteReader.ReadAsync().ConfigureAwait(false);
//转换TransferNote
await TransferNoteConverter.ConvertAsync(transferNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理储位调拨【{transferNoteFromExternalList.Count}】条数据");
#endregion
#region 成品发运 Delivery
Logger.LogInformation($"读取成品发运 (Delivery)");//成品发运
var DeliveryReader = workerContext.ServiceProvider.GetRequiredService<DeliveryReader>();
var DeliveryConverter = workerContext.ServiceProvider.GetRequiredService<DeliveryConverter>();
//读取并保存Delivery
var deliveryNoteFromExternalList = await DeliveryReader.ReadAsync().ConfigureAwait(false);
//转换Delivery
await DeliveryConverter.ConvertAsync(deliveryNoteFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理成品发运【{deliveryNoteFromExternalList.Count}】条数据");
#endregion
#region 自动叫料 CallMtl
Logger.LogInformation($"读取自动叫料 (CallMtl)");//自动叫料
var CallMtlReader = workerContext.ServiceProvider.GetRequiredService<CallMtlReader>();
var CallMtlConverter = workerContext.ServiceProvider.GetRequiredService<CallMtlConverter>();
//读取并保存Delivery
var callMtlFromExternalList = await CallMtlReader.ReadAsync().ConfigureAwait(false);
//转换Delivery
await CallMtlConverter.ConvertAsync(callMtlFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理自动叫料【{callMtlFromExternalList.Count}】条数据");
#endregion
12 months ago
10 months ago
#region 底盘 Chassis
Logger.LogInformation($"读取底盘(Chassis)");//底盘
var mesChassisReader = workerContext.ServiceProvider.GetRequiredService<MesChassisReader>();
var mesChassisConverter = workerContext.ServiceProvider.GetRequiredService<MesChassisConverter>();
//读取并保存Chassis
var mesChassisFromExternalList = await mesChassisReader.ReadAsync().ConfigureAwait(false);
//转换Chassis
await mesChassisConverter.ConvertAsync(mesChassisFromExternalList).ConfigureAwait(false);
Logger.LogInformation($"处理底盘【{mesChassisFromExternalList.Count}】条数据");
#endregion
10 months ago
Logger.LogInformation($"提交: 执行 {Incoming}");
12 months ago
#region 未启用接口启用时需要看逻辑修改
//上海和安徽无此接口
10 months ago
//Logger.LogInformation($"读取拉动任务 (PullTask)");//拉动任务
2 years ago
//var pullTaskReader = workerContext.ServiceProvider.GetRequiredService<PullTaskReader>();
//var pullTaskConverter = workerContext.ServiceProvider.GetRequiredService<PullTaskConverter>();
////读取并保存PullTask
//var pullTaskFromExternalList = await pullTaskReader.ReadAsync().ConfigureAwait(false);
////转换PullTask
//await pullTaskConverter.ConvertAsync(pullTaskFromExternalList).ConfigureAwait(false);
10 months ago
// Logger.LogInformation($"处理拉动任务【{pullTaskFromExternalList.Count}】条数据");
//上海和安徽无此接口
10 months ago
//Logger.LogInformation($"Read (Issue)");
2 years ago
//var pckHandleService = workerContext.ServiceProvider.GetRequiredService<IssueReader>();
//var pckConverter = workerContext.ServiceProvider.GetRequiredService<IssueConverter>();
////读取并保持Pck
//var pcksFromExternalList = await pckHandleService.ReadAsync().ConfigureAwait(false);
////转换Pck
//await pckConverter.ConvertAsync(pcksFromExternalList).ConfigureAwait(false);
12 months ago
#endregion
2 years ago
}
}