using Autofac; using Rhea.Common; using Sundial; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.Model; using Tiger.Model.Entitys.WMS.DTOS; using Tiger.Model.Minsun; namespace Tiger.Business.WMS { /// /// XCXJ据点到货单推T100 /// public class ReceiptHToErpXCSJJob : TigerJobBase, ITigerJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Tag { get; set; } = "Receipt Header To Erp Interface Job"; public string Name { get; set; } = "Receipt Header To Erp Interface Job"; public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { try { var result = iWMS.ReceiptHToErp("XCSJ", context.Trigger.ConvertToMonitor()); if (!result.IsSuccessed) { Logger.Scheduler.Error($"生成到货异常:{result.Message}"); } //SaveLog(context, "XCXJ据点到货单推T100"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "生成到货单异常"); } await Task.CompletedTask; } } /// /// DGXC据点到货单推T100 /// public class ReceiptHToErpDGXCJob : TigerJobBase, ITigerJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Tag { get; set; } = "Receipt Header To Erp Interface Job"; public string Name { get; set; } = "Receipt Header To Erp Interface Job"; public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { try { var result = iWMS.ReceiptHToErp("DGXC", context.Trigger.ConvertToMonitor()); //Thread.Sleep(10*60*1000); if (!result.IsSuccessed) { Logger.Scheduler.Error($"生成到货异常:{result.Message}"); } //SaveLog(context, "DGXC据点到货单推T100"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "生成到货单异常"); } await Task.CompletedTask; } } /// /// AHXC据点到货单推T100 /// public class ReceiptHToErpAHXCJob : TigerJobBase, ITigerJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Tag { get; set; } = "Receipt Header To Erp Interface Job"; public string Name { get; set; } = "Receipt Header To Erp Interface Job"; public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { try { var result = iWMS.ReceiptHToErp("AHXC", context.Trigger.ConvertToMonitor()); if (!result.IsSuccessed) { Logger.Scheduler.Error($"生成到货异常:{result.Message}"); } //SaveLog(context, "AHXC据点到货单推T100"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "生成到货单异常"); } await Task.CompletedTask; } } /// /// 从T100获取物料信息 /// public class MaterialInfoToT100Job : TigerJobBase, ITigerJob { /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); /// /// 构造函数 /// /// //public MaterialInfoToT100Job(IMaterialInfoBusiness materialInfoBusiness) //{ // _materialInfoBusiness = materialInfoBusiness; //} /// /// 同步物料信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); //计划任务开始日志 foreach (var item in BIZ_WMS_TRANSFER.strongHoldList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetMaterialFromT100(model); } SaveLog(context, "同步T100物料信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100物料信息数据异常"); } await Task.CompletedTask; } } /// /// 从T100获取物料信息 /// public class PurchaseInfoFromT100Job : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); ///// ///// 构造函数 ///// ///// //public PurchaseInfoFromT100Job(IMaterialInfoBusiness materialInfoBusiness) //{ // _materialInfoBusiness = materialInfoBusiness; //} #endregion DI /// /// 同步物料信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetPurchaseInfoFromT100(model); } SaveLog(context, "同步T100采购单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100采购单信息数据异常"); } await Task.CompletedTask; } } /// /// /// public class CustomerInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); ///// ///// 构造函数 ///// ///// //public CustomerInfoFromT100(IMaterialInfoBusiness materialInfoBusiness) //{ // _materialInfoBusiness = materialInfoBusiness; //} #endregion DI /// /// 同步采购单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetCustomerInfoFromT100(model); } SaveLog(context, "同步T10采购单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100采购单信息数据异常"); } await Task.CompletedTask; } } /// /// /// public class InspectionNoInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步送检单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var result = _materialInfoBusiness.GetInspectionNoFromT100(); SaveLog(context, "同步T100送检单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100采购单信息数据异常"); } await Task.CompletedTask; } } /// /// 其他出库单定时推送给T100——过账 /// public class OtherOutInfoToT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步其他出库单单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item }; var result = _materialInfoBusiness.GetOtherOutInfoToT100(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// 其他出库单定时推送给T100——过账 /// public class SaaleOutInfoToT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步送检单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item }; var result = _materialInfoBusiness.PutSaleOutInfoToT100(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// 过账调拨单定时推送给T100——创单并过账 /// public class TrasferInfoToT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 过账调拨单定时推送给T100——创单并过账 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); var DB = Biz.Db; var jobData = DB.Queryable().Where(i => i.JobName == "TrasferInfoToT100").First();// 获取定时任务内容 if (!jobData.IsNullOrEmpty() && jobData.ISRUNNING == 1) { Logger.Scheduler.Info("调拨定时任务正在执行中,本次任务已主动终止!"); //throw new Exception("调拨定时任务正在执行中,本次任务已主动终止!"); } else { jobData.ISRUNNING = 1; DB.Updateable(jobData).ExecuteCommand();// 如果当前定时任务不在执行中的状态,则在开始执行前,设定为执行中 } foreach (var item in orgList) { var model = new InputDTO() { site = item }; var result = _materialInfoBusiness.GetTrasferInfoToT100(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// 过账调拨单定时推送给T100——直接过账 /// public class TrasferInfoToT100Plan2 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 过账调拨单定时推送给T100——直接过账 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item }; var result = _materialInfoBusiness.GetTrasferInfoToT100Plan2(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// 过账调拨单定时推送给T100 /// public class TrasferInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步送检单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetTrasferInfoFromT100(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// 过账调拨单定时推送给T100 /// public class OtheroUTInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步送检单信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetOtherOutInfoFromT100(model); } SaveLog(context, "同步T100调拨单信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100调拨单信息数据异常"); } await Task.CompletedTask; } } /// /// /// public class WarehouseCodeInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步仓库信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); var orgList = WMS_ITEMExtension.GetOrgList(); foreach (var item in orgList) { var model = new InputDTO() { site = item, startdt = starttime.AddHours(-24), enddt = starttime }; var result = _materialInfoBusiness.GetWarehouseCodeInfoFromT100(model); } SaveLog(context, "同步T100仓库代码信息数据"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步T100仓库代码信息数据异常"); } await Task.CompletedTask; } } /// /// 从MES获取成品入库信息 /// public class ProductInputInfoFromT100 : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 同步MES成品入库信息定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var DB = Biz.Db; var jobData = DB.Queryable().Where(i => i.JobName == "ProductInputInfoFromT100").First();// 获取定时任务内容 if (!jobData.IsNullOrEmpty() && jobData.ISRUNNING == 1) { Logger.Scheduler.Info("成品入库定时任务正在执行中,本次任务已主动终止!"); return; //throw new Exception("成品入库定时任务正在执行中,本次任务已主动终止!"); } else { jobData.ISRUNNING = 1; DB.Updateable(jobData).ExecuteCommand();// 如果当前定时任务不在执行中的状态,则在开始执行前,设定为执行中 } var result = _materialInfoBusiness.ProductInputInfoFromT100(); SaveLog(context, "同步MES成品入库信息数据成功"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "同步MES成品入库信息数据异常"); } await Task.CompletedTask; } } /// /// 物料超期预警 /// public class MaterialExtended : TigerJobBase, ITigerJob { #region 常量 /// /// /// public new string Id { get; set; } = Guid.NewGuid().ToString("N"); /// /// /// public new string Tag { get; set; } = "Receipt Header To Erp Interface Job"; /// /// /// public new string Name { get; set; } = "Receipt Header To Erp Interface Job"; #endregion 常量 #region DI /// /// /// private readonly IMaterialInfoBusiness _materialInfoBusiness = BizContext.Container.Resolve(); #endregion DI /// /// 物料超期预警定时任务 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var starttime = DateTime.Now; try { var result = _materialInfoBusiness.MaterialExtended(); SaveLog(context, "物料超期预警定时任务执行成功"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "物料超期预警定时任务执行成功"); } await Task.CompletedTask; } } }