using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Syc.Basic.Web.WMS.Entitys;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace Syc.Basic.Web.WMS
{
///
/// 程序启动时从数据库同步队列数据
///
public class SyncDataFromDbBackgroupService : BackgroundService
{
private readonly IRepository silkRepository;
private readonly ILogger logger;
public SyncDataFromDbBackgroupService(
IRepository silkRepository
,ILogger logger)
{
this.silkRepository = silkRepository;
this.logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var status = new int[]
{
0,1
};
var data = await silkRepository.GetListAsync(x => status.Contains(x.Status) && x.IsDelete == 0);
logger.LogInformation($"已从 Silk 表检索到{data.Count}条待处理数据");
/* 加载已扫码未称重的 */
var list1 = data.Where(e => e.Status == 0).OrderBy(e => e.Createtime).ToList();
logger.LogInformation($"已扫码未称重 {list1.Count} 条,分别是:{string.Join(",", list1)},已加载进队列");
foreach ( var item in list1)
if(!QueueManage.YarnBalanceQueue.Any(e => e.Code == item.Code))
QueueManage.YarnBalanceQueue.Enqueue(item);
/* 加载已称重未装箱的 */
var list2 = data.Where(e => e.Status == 1).OrderBy(e => e.Createtime).ToList();
logger.LogInformation($"已称重待装箱 {list2.Count} 条,分别是:{string.Join(",",list2)},已加载进队列");
foreach (var item in list2)
if(!QueueManage.BoxQueue.Contains(item.Code))
QueueManage.BoxQueue.Add(item.Code);
}
}
}