You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
4.9 KiB
83 lines
4.9 KiB
using BBWY.Common.Extensions;
|
|
using BBWY.Common.Models;
|
|
using BBWY.Server.Model.Db;
|
|
using BBWY.Server.Model.Dto;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Yitter.IdGenerator;
|
|
|
|
namespace BBWY.Server.Business
|
|
{
|
|
public class PurchaseOrderBusiness : BaseBusiness, IDenpendency
|
|
{
|
|
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
|
|
public PurchaseOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator, IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, logger, idGenerator)
|
|
{
|
|
this.platformSDKBusinessList = platformSDKBusinessList;
|
|
}
|
|
|
|
public void AddPurchaseOrder(AddPurchaseOrderRequest addPurchaseOrderRequest)
|
|
{
|
|
if (string.IsNullOrEmpty(addPurchaseOrderRequest.PurchaseOrderId) ||
|
|
string.IsNullOrEmpty(addPurchaseOrderRequest.SkuId) ||
|
|
string.IsNullOrEmpty(addPurchaseOrderRequest.ProductId))
|
|
throw new BusinessException("缺少采购单必要信息");
|
|
|
|
if (fsql.Select<PurchaseOrder>().Where(po => po.SkuId == addPurchaseOrderRequest.SkuId &&
|
|
po.PurchaseOrderId == addPurchaseOrderRequest.PurchaseOrderId &&
|
|
po.StorageType == addPurchaseOrderRequest.StorageType).Any())
|
|
throw new BusinessException("同一个SkuId和同一种仓储类型中不能存在重复的采购单号");
|
|
|
|
var purchaseOrder = addPurchaseOrderRequest.Map<PurchaseOrder>();
|
|
purchaseOrder.Id = idGenerator.NewLong();
|
|
purchaseOrder.CreateTime = DateTime.Now;
|
|
fsql.Insert(purchaseOrder).ExecuteAffrows();
|
|
}
|
|
|
|
public void EditPurchaseOrder(EditPurchaseOrderRequest editPurchaseOrderRequest)
|
|
{
|
|
fsql.Update<PurchaseOrder>(editPurchaseOrderRequest.Id).Set(po => po.PurchaseQuantity, editPurchaseOrderRequest.PurchaseQuantity)
|
|
.Set(po => po.RemainingQuantity, editPurchaseOrderRequest.RemainingQuantity)
|
|
.Set(po => po.SingleSkuAmount, editPurchaseOrderRequest.SingleSkuAmount)
|
|
.Set(po => po.SingleFreight, editPurchaseOrderRequest.SingleFreight)
|
|
.Set(po => po.SingleFirstFreight, editPurchaseOrderRequest.SingleFirstFreight)
|
|
.Set(po => po.SingleOperationAmount, editPurchaseOrderRequest.SingleOperationAmount)
|
|
.Set(po => po.SingleConsumableAmount, editPurchaseOrderRequest.SingleConsumableAmount)
|
|
.Set(po => po.SingleStorageAmount, editPurchaseOrderRequest.SingleStorageAmount)
|
|
.Set(po => po.SingleDeliveryFreight, editPurchaseOrderRequest.SingleDeliveryFreight)
|
|
.ExecuteAffrows();
|
|
}
|
|
|
|
public IList<PurchaseOrderResponse> GetList(QueryPurchaseOrderRequest queryPurchaseOrderRequest)
|
|
{
|
|
return fsql.Select<PurchaseOrder>().Where(po => po.ShopId == queryPurchaseOrderRequest.ShopId &&
|
|
queryPurchaseOrderRequest.SkuIdList.Contains(po.SkuId) &&
|
|
po.StorageType == queryPurchaseOrderRequest.StorageType)
|
|
.ToList()
|
|
.Map<IList<PurchaseOrderResponse>>();
|
|
}
|
|
|
|
public void DeletePurchaseOrder(long id)
|
|
{
|
|
fsql.Delete<PurchaseOrder>(id).ExecuteAffrows();
|
|
}
|
|
|
|
public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderReuqest previewOrderReuqest)
|
|
{
|
|
if (previewOrderReuqest.Platform != Model.Enums.Platform.阿里巴巴)
|
|
throw new NotImplementedException();
|
|
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == previewOrderReuqest.Platform).PreviewOrder(previewOrderReuqest);
|
|
}
|
|
|
|
public void FastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
|
|
{
|
|
if (createOnlinePurchaseOrderRequest.Platform != Model.Enums.Platform.阿里巴巴)
|
|
throw new NotImplementedException();
|
|
var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
|
|
.FastCreateOrder(createOnlinePurchaseOrderRequest);
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|