169 lines
5.6 KiB
C#
169 lines
5.6 KiB
C#
using MyCode.Project.Domain.Message.Response.Lxm;
|
|
using MyCode.Project.Domain.Model;
|
|
using MyCode.Project.Domain.Repositories;
|
|
using MyCode.Project.Infrastructure.Enumeration;
|
|
using MyCode.Project.Infrastructure.Exceptions;
|
|
using MyCode.Project.Repositories.Lxm;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MyCode.Project.Services.BLL
|
|
{
|
|
public class PreOrderBLL
|
|
{
|
|
private readonly LxmInfraRepository _lxmInfraRepository;
|
|
private readonly IRepository _repository;
|
|
|
|
public PreOrderBLL(LxmInfraRepository lxmInfraRepository,
|
|
IRepository repository)
|
|
{
|
|
_lxmInfraRepository = lxmInfraRepository;
|
|
_repository = repository;
|
|
}
|
|
|
|
#region HandlePreOrder(处理单个的预售单)
|
|
/// <summary>
|
|
/// 处理单个的预售单
|
|
/// </summary>
|
|
public void HandlePreOrder(ChangeRecordResp record)
|
|
{
|
|
var strSheetId = record.SheetId.ToString();
|
|
|
|
//因为有些数据是删除了
|
|
if (record.Flag != 100)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var sheet = ToPreLxmSheet(record);
|
|
|
|
//补充单号
|
|
var mssqlSheet = _lxmInfraRepository.GetPreSheet(record.SheetId);
|
|
|
|
if (mssqlSheet == null) { throw new BaseException($"预售单sheetid={record.SheetId}在BusPresalesSheet中找不到数据"); }
|
|
|
|
sheet.Sheet = mssqlSheet.Sheet;
|
|
|
|
var items = ToPreLxmSheetItem(record.SheetId);
|
|
|
|
_repository.AddQueue<LxmSheet>(sheet);
|
|
_repository.AddQueue<LxmSheetItem>(items);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region ToLxmSheet(转换为MYSQL订单主表的实体)
|
|
/// <summary>
|
|
/// 转换为MYSQL订单主表的实体
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private LxmSheet ToPreLxmSheet(ChangeRecordResp record)
|
|
{
|
|
var sheet = new LxmSheet();
|
|
|
|
if (record.TotalAmount < 0)
|
|
{
|
|
sheet.Direct = -1;
|
|
}
|
|
else
|
|
{
|
|
sheet.Direct = 1;
|
|
}
|
|
|
|
sheet.Id = record.SheetId.ToString();
|
|
sheet.ShopId = record.ShopId.ToString();
|
|
sheet.Balance = Math.Abs(record.Balance);
|
|
sheet.CreateTime = record.CreateTime;
|
|
sheet.CustomerId = record.CustomerId?.ToString();
|
|
sheet.CustomerName = record.CustomerName;
|
|
|
|
sheet.TotalAmount = Math.Abs(record.TotalAmount);
|
|
|
|
sheet.Type = (int)LxmRecordType.PreSalesSheet;
|
|
sheet.EditTime = record.EditTime;
|
|
sheet.UpdateTime = DateTime.Now;
|
|
|
|
//add by florent 2023-10-30
|
|
sheet.IsFirstOrder = record.IsFirstOrder;
|
|
sheet.IsNewMemberOrder = record.IsNewMemberOrder;
|
|
|
|
if (record.MemberId != null)
|
|
{
|
|
sheet.MemberId = record.MemberId.ToString();
|
|
sheet.MemberName = record.MemberName;
|
|
sheet.MemberMobile = record.MemberMobile;
|
|
}
|
|
|
|
if (record.ClerkId != null)
|
|
{
|
|
sheet.OrderClerkId = record.ClerkId.ToString();
|
|
sheet.OrderClerkName = record.ClerkName;
|
|
sheet.OrderClerkMobile = record.ClerkMobile;
|
|
}
|
|
if (record.PlatformSource != null) { sheet.PlatformSource = record.PlatformSource; }
|
|
if (record.IsRepurchase != null) { sheet.IsRepurchase = record.IsRepurchase; }
|
|
//预售的实际支付金额
|
|
sheet.NoBalancePayAmount = Math.Abs(record.TotalAmount-record.Balance);
|
|
|
|
return sheet;
|
|
}
|
|
#endregion
|
|
|
|
#region ToPreLxmSheetItem(转换层流行美的订单明细)
|
|
/// <summary>
|
|
/// 转换层流行美的订单明细
|
|
/// </summary>
|
|
/// <param name="sheetId"></param>
|
|
/// <returns></returns>
|
|
private List<LxmSheetItem> ToPreLxmSheetItem(Guid sheetId)
|
|
{
|
|
var items = _lxmInfraRepository.GetPreSheetItems(sheetId);
|
|
|
|
if (items == null || items.Count == 0) { throw new BaseException($"预售单SheetId={sheetId}找不到明细"); }
|
|
|
|
var returnList = new List<LxmSheetItem>();
|
|
|
|
foreach (var item in items)
|
|
{
|
|
var returnItem = new LxmSheetItem()
|
|
{
|
|
Id = item.Id.ToString(),
|
|
NoBalanceUnitPrice = Math.Abs(item.NoBalanceUnitPrice),
|
|
NoBalanceAmount = Math.Abs(item.NoBalanceUnitPrice) * Math.Abs(item.Qty),
|
|
Qty = Math.Abs(item.Qty),
|
|
SalesSheetId = sheetId.ToString(),
|
|
TopCategoryId = item.TopId.ToString(),
|
|
Name = item.Name,
|
|
ItemId = item.ItemId.ToString(),
|
|
HasChildNode = 0,
|
|
//预售单全部都是商品
|
|
ItemType = (int)OrderItemType.Goods,
|
|
InBlanceUnitPrice = Math.Abs(item.InBlanceUnitPrice)
|
|
};
|
|
|
|
returnItem.InBlanceAmount = returnItem.InBlanceUnitPrice * returnItem.Qty;
|
|
|
|
returnItem.NoBalancePayAmount = returnItem.NoBalanceAmount;
|
|
returnItem.NoBalancePayUnitPrice = returnItem.NoBalanceUnitPrice;
|
|
|
|
if (item.Qty < 0)
|
|
{
|
|
returnItem.Direct = -1;
|
|
}
|
|
else
|
|
{
|
|
returnItem.Direct = 1;
|
|
}
|
|
|
|
returnList.Add(returnItem);
|
|
}
|
|
|
|
return returnList;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|