using MailKit.Search;
|
using Masuit.Tools;
|
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Logging;
|
using SixLabors.Fonts;
|
using SqlSugar;
|
using System;
|
using System.Net;
|
using System.Net.Mail;
|
using System.Text;
|
using WIDESEA_Cache;
|
using WIDESEA_Core.Const;
|
using WIDESEA_DTO.WMS;
|
using WIDESEA_IOrderRepository;
|
using WIDESEA_IServices;
|
using WIDESEA_Model.Models.ERP;
|
using WIDESEA_Model.Models.Order;
|
using WIDESEA_OrderRepository;
|
using WIDESEAWCS_BasicInfoRepository;
|
|
namespace WIDESEA_StorageTaskServices
|
{
|
public class MyBackgroundService : IHostedService, IDisposable
|
{
|
private readonly ILogger<MyBackgroundService> _logger;
|
private readonly IStockInfoRepository _stockInfoRepository;
|
private readonly IDt_AreaInfoRepository _areaInfoRepository; //区域
|
private readonly IDt_TaskRepository _taskRepository;
|
private readonly IDt_StationManagerRepository _stationManagerRepository;
|
private readonly ISys_ConfigService _configService;
|
private readonly ILocationInfoRepository _locationRepository;
|
private readonly IDt_InboundOrderRepository _inboundOrderRepository;
|
|
private Timer _timer;
|
|
public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService,IDt_InboundOrderRepository inboundOrderRepository)
|
{
|
_logger = logger;
|
_locationRepository = locationRepository;
|
_stockInfoRepository = stockInfoRepository;
|
_areaInfoRepository = areaInfoRepository;
|
_taskRepository = taskRepository;
|
_stationManagerRepository = stationManagerRepository;
|
_configService = configService;
|
_inboundOrderRepository = inboundOrderRepository;
|
}
|
|
public Task StartAsync(CancellationToken cancellationToken)
|
{
|
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
|
return Task.CompletedTask;
|
}
|
|
private void DoWork(object state)
|
{
|
try
|
{
|
List<WMS_采购入成品入库自动打印清单_ST> ERPPrintChecklist =SqlSugarHelper.DBERP.Queryable<WMS_采购入成品入库自动打印清单_ST>().Where(x => true).ToList();
|
|
|
var printCheckList = _inboundOrderRepository.QueryData(x => true);
|
List<Dt_InboundOrder> inboundOrderAdd = new List<Dt_InboundOrder>();
|
List<Dt_InboundOrder> inboundOrderUpdate = new List<Dt_InboundOrder>();
|
if (ERPPrintChecklist != null) return;
|
foreach (var item in ERPPrintChecklist)
|
{
|
var x = printCheckList.Where(x => x.MaterialNo == item.料号 && x.OrderNo == item.单号 && x.WarehouseName == item.入库仓库名称).FirstOrDefault();
|
if (x == null)
|
{
|
Dt_InboundOrder Print = new Dt_InboundOrder()
|
{
|
PrintCode = GetOrderPintCode(),
|
OrderNo = item.单号,
|
DemandClassification = item.需求分类,
|
OrderType = item.单据类型,
|
WarehouseName = item.入库仓库名称,
|
Datetime = item.日期.ToString(),
|
LineNumber = item.行号,
|
ProductDrawingNumber = item.产品图号,
|
MaterialNo = item.料号,
|
MaterialName = item.品名,
|
Weight = item.单重,
|
Specs = item.规格,
|
Unit = item.单位,
|
Texture = item.用友材质,
|
Quantity = item.入库数量,
|
OrderStatus = item.单据状态
|
|
};
|
inboundOrderAdd.Add(Print);
|
}
|
else
|
{
|
if (x.PrintCode == null || x.PrintCode == "")
|
{
|
x.PrintCode = GetOrderPintCode();
|
x.OrderNo = item.单号;
|
x.DemandClassification = item.需求分类;
|
x.OrderType = item.单据类型;
|
x.WarehouseName = item.入库仓库名称;
|
x.Datetime = item.日期.ToString();
|
x.LineNumber = item.行号;
|
x.ProductDrawingNumber = item.产品图号;
|
x.MaterialNo = item.料号;
|
x.MaterialName = item.品名;
|
x.Weight = item.单重;
|
x.Specs = item.规格;
|
x.Unit = item.单位;
|
x.Texture = item.用友材质;
|
x.Quantity = item.入库数量;
|
x.OrderStatus = item.单据状态;
|
inboundOrderUpdate.Add(x);
|
}
|
}
|
}
|
if (inboundOrderAdd.Count > 0)
|
{
|
_inboundOrderRepository.AddData(inboundOrderAdd);
|
}
|
if (inboundOrderUpdate.Count > 0)
|
{
|
_inboundOrderRepository.UpdateData(inboundOrderUpdate);
|
}
|
}
|
catch (Exception ex)
|
{
|
ConsoleHelper.WriteErrorLine($"错误信息:" + ex.Message);
|
}
|
}
|
|
public string GetOrderPintCode()
|
{
|
string PrintCode = "";
|
var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == "OrderNo").ToList().FirstOrDefault();
|
|
if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
|
{
|
PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
|
PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
|
}
|
else
|
{
|
PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
|
PrintSetting.PrintNo = 2;
|
PrintCode = PrintSetting.PrintCode + PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
|
}
|
SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
|
return PrintCode;
|
}
|
|
public Task StopAsync(CancellationToken cancellationToken)
|
{
|
_logger.LogInformation("MyBackgroundService is stopping.");
|
_timer?.Change(Timeout.Infinite, 0);
|
return Task.CompletedTask;
|
}
|
|
public void Dispose()
|
{
|
_timer?.Dispose();
|
}
|
}
|
}
|