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
}
}