|
|
@ -28,7 +28,7 @@ namespace BBWYB.Server.Business |
|
|
|
private PurchaseSchemeBusiness purchaseSchemeBusiness; |
|
|
|
private ExpressCompanyNameConverter expressCompanyNameConverter; |
|
|
|
private RestApiService restApiService; |
|
|
|
|
|
|
|
private IList<Enums.OrderState> cantPurchaseOrderStateList; |
|
|
|
public PurchaseOrderBusiness(IFreeSql fsql, |
|
|
|
NLogManager nLogManager, |
|
|
|
IIdGenerator idGenerator, |
|
|
@ -49,6 +49,13 @@ namespace BBWYB.Server.Business |
|
|
|
this.expressCompanyNameConverter = expressCompanyNameConverter; |
|
|
|
this.restApiService = restApiService; |
|
|
|
this.purchaseSchemeBusiness = purchaseSchemeBusiness; |
|
|
|
cantPurchaseOrderStateList = new List<Enums.OrderState>() |
|
|
|
{ |
|
|
|
Enums.OrderState.已取消, |
|
|
|
Enums.OrderState.已完成, |
|
|
|
Enums.OrderState.待付款, |
|
|
|
Enums.OrderState.待完结 |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -179,8 +186,8 @@ namespace BBWYB.Server.Business |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); |
|
|
|
if (dbOrder == null) |
|
|
|
throw new BusinessException("订单不存在"); |
|
|
|
if (dbOrder.OrderState != Enums.OrderState.等待采购 && dbOrder.OrderState != Enums.OrderState.待出库) |
|
|
|
throw new BusinessException("只能为等待采购或待出库的订单进行采购"); |
|
|
|
if (cantPurchaseOrderStateList.Contains(dbOrder.OrderState.Value)) |
|
|
|
throw new BusinessException($"当前订单状态:{dbOrder.OrderState},不允许采购"); |
|
|
|
|
|
|
|
if (request.Consignee == null || |
|
|
|
string.IsNullOrEmpty(request.Consignee.Address) || |
|
|
@ -194,7 +201,7 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
var isRepurchase = fsql.Select<OrderCost>(dbOrder.Id).Any(); |
|
|
|
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); |
|
|
|
|
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
|
|
|
|
var extJArray = JsonConvert.DeserializeObject<JArray>(request.Extensions); |
|
|
|
|
|
|
@ -396,6 +403,10 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单状态
|
|
|
|
dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList()); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
if (updatePurchaseOrderIdList.Count() > 0) |
|
|
@ -411,8 +422,7 @@ namespace BBWYB.Server.Business |
|
|
|
insertOrderCost?.ExecuteAffrows(); |
|
|
|
if (updatePurchaseTimeSchemeIdList.Count() > 0) |
|
|
|
fsql.Update<PurchaseScheme>(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(request.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState.待付款 || |
|
|
|
dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Model.Enums.OrderState.待出库) |
|
|
|
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) |
|
|
|
.SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) |
|
|
|
.Set(o => o.IsPurchased, true) |
|
|
|
.Set(o => o.PackConfigState, Enums.PackConfigState.待配置) |
|
|
@ -480,12 +490,21 @@ namespace BBWYB.Server.Business |
|
|
|
/// <param name="request"></param>
|
|
|
|
public void AssociatePurchaseOrder(AssociationOrderRequest request) |
|
|
|
{ |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); |
|
|
|
if (dbOrder == null) |
|
|
|
throw new BusinessException("订单不存在"); |
|
|
|
|
|
|
|
if (cantPurchaseOrderStateList.Contains(dbOrder.OrderState.Value)) |
|
|
|
throw new BusinessException($"当前订单状态:{dbOrder.OrderState},不允许关联"); |
|
|
|
|
|
|
|
if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) |
|
|
|
throw new BusinessException("缺少采购单信息"); |
|
|
|
|
|
|
|
var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList(); |
|
|
|
var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); |
|
|
|
|
|
|
|
var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList(); |
|
|
|
|
|
|
|
if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId))) |
|
|
|
throw new BusinessException("关联采购单时不能包含历史采购单"); |
|
|
|
|
|
|
@ -518,7 +537,7 @@ namespace BBWYB.Server.Business |
|
|
|
var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); |
|
|
|
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); |
|
|
|
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne(); |
|
|
|
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<OrderPurchaseInfo> insertOrderPurchaseInfoList = new List<OrderPurchaseInfo>(); |
|
|
@ -738,6 +757,10 @@ namespace BBWYB.Server.Business |
|
|
|
else |
|
|
|
updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost); |
|
|
|
|
|
|
|
#region 订单状态
|
|
|
|
dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbvalidPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList()); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
if (insertOrderPurchaseInfoList.Count() > 0) |
|
|
@ -762,8 +785,7 @@ namespace BBWYB.Server.Business |
|
|
|
insertOrderCost?.ExecuteAffrows(); |
|
|
|
updateOrderCost?.ExecuteAffrows(); |
|
|
|
|
|
|
|
fsql.Update<Order>(dbOrder.Id).SetIf(dbOrder.OrderState == Enums.OrderState.待付款 || |
|
|
|
dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Enums.OrderState.待出库) |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState) |
|
|
|
.Set(o => o.IsPurchased, true) |
|
|
|
.ExecuteAffrows(); |
|
|
|
}); |
|
|
@ -822,7 +844,9 @@ namespace BBWYB.Server.Business |
|
|
|
if (dbOrder.OrderState == Enums.OrderState.已完成) |
|
|
|
throw new BusinessException("订单已完成无需签收"); |
|
|
|
|
|
|
|
var dbOrderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true).ToOne(); |
|
|
|
var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); |
|
|
|
|
|
|
|
var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
if (dbOrderPurchaseInfo == null) |
|
|
|
throw new BusinessException("无效采购单号"); |
|
|
|
if (!dbOrderPurchaseInfo.IsEnabled) |
|
|
@ -834,11 +858,14 @@ namespace BBWYB.Server.Business |
|
|
|
dbOrderPurchaseInfo.IsSign = true; |
|
|
|
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收; |
|
|
|
|
|
|
|
dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList); |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); |
|
|
|
fsql.Update<Order>(dbOrder.Id).Set(o => o.IsWaitPack, true).ExecuteAffrows(); |
|
|
|
Enums.OrderState.待收货; |
|
|
|
fsql.Update<Order>(dbOrder.Id) |
|
|
|
.Set(o => o.OrderState, dbOrder.OrderState) |
|
|
|
.Set(o => o.IsWaitPack, true).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -904,7 +931,7 @@ namespace BBWYB.Server.Business |
|
|
|
{ |
|
|
|
#region 查询代发信息
|
|
|
|
currentProgress = "查询代发信息"; |
|
|
|
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && orderPurchaseInfo.IsEnabled == true).ToOne(); |
|
|
|
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne(); |
|
|
|
if (orderPurchaseInfo == null) |
|
|
|
throw new Exception("未查询到代发信息"); |
|
|
|
orderId = orderPurchaseInfo.OrderId; |
|
|
|