using MyCode.Project.Domain.Model; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.Enumeration; using MyCode.Project.Infrastructure.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyCode.Project.Services.BLL { /// /// 宝典公共计算 /// public class CommonPlanCalBLL { #region 初始化 /// /// 初始化 /// public IRepository _repository; /// /// 单据id /// public string SheetId { get; set; } /// /// 备注字段 /// public string Info { get; set; } /// /// 订单 /// public LxmSheet Sheet { get; set; } /// /// 版本时间 /// public DateTime VersionTime { get; set; } public CommonPlanCalBLL(IRepository repository) { _repository = repository; } #endregion #region Init(初始化) /// /// 初始化 /// public void Init(string sheetId) { this.Sheet = _repository .Queryable() .Where(p => p.Id == sheetId) .First(); this.SheetId = sheetId; this.VersionTime = this.Sheet.CreateTime.Value.GetFirstDayOfMonth(); } #endregion #region GetSourceSimpleOrder(得到退款时的原始订单信息,如果是预售单,则要再取一下得到预售单) /// /// 得到退款时的原始订单信息,如果是预售单,则要再取一下得到预售单 /// /// /// public LxmSheet GetSourceSimpleOrder(string sourceOrderId) { var sourceOrder = _repository.Queryable().Where(p => p.Id == Sheet.SourceOrderId).First(); if (sourceOrder.IsPorderToSorder == 1) { sourceOrder = _repository.Queryable().Where(p => p.Id == sourceOrder.OrderPreorderId).First(); } return sourceOrder; } #endregion #region CheckPassed(数据验证) /// /// 数据验证 /// /// /// public bool CheckPassed(PlanType planType) { if (this.Sheet.IsPorderToSorder == 1) { LogHelper.Info($"{SheetId}是预售单,不参与宝典计划运算"); return false; } //只对60天内的数据做运算,超过就不运算了 if ((DateTime.Now - this.Sheet.CreateTime.Value).TotalDays > 60) { LogHelper.Info($"{SheetId}是60天前的数据,就不再宝典计划运算了"); return false; } ////如果中间表中已经有该数据了,也不运算 var existCal = _repository.IsExist(p => p.OrderId == SheetId && p.PlanType == (int)planType); if (existCal) { LogHelper.Info($"{SheetId}之前已经运算过,不再运算"); return false; } return true; } #endregion } }