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 platformSDKBusinessList; public PurchaseOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator, IEnumerable 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().Where(po => po.SkuId == addPurchaseOrderRequest.SkuId && po.PurchaseOrderId == addPurchaseOrderRequest.PurchaseOrderId && po.StorageType == addPurchaseOrderRequest.StorageType).Any()) throw new BusinessException("同一个SkuId和同一种仓储类型中不能存在重复的采购单号"); var purchaseOrder = addPurchaseOrderRequest.Map(); purchaseOrder.Id = idGenerator.NewLong(); purchaseOrder.CreateTime = DateTime.Now; fsql.Insert(purchaseOrder).ExecuteAffrows(); } public void EditPurchaseOrder(EditPurchaseOrderRequest editPurchaseOrderRequest) { fsql.Update(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 GetList(QueryPurchaseOrderRequest queryPurchaseOrderRequest) { return fsql.Select().Where(po => po.ShopId == queryPurchaseOrderRequest.ShopId && queryPurchaseOrderRequest.SkuIdList.Contains(po.SkuId) && po.StorageType == queryPurchaseOrderRequest.StorageType) .ToList() .Map>(); } public void DeletePurchaseOrder(long id) { fsql.Delete(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); } } }