Browse Source

新增采购单删除接口

yijia
shanji 2 years ago
parent
commit
2443a4ef0b
  1. 10
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  2. 88
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 6
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs

10
BBWYB.Server.API/Controllers/PurchaseOrderController.cs

@ -91,6 +91,16 @@ namespace BBWYB.Server.API.Controllers
purchaseOrderBusiness.SetHistoryPurchaseOrder(request);
}
/// <summary>
/// 删除历史采购单
/// </summary>
/// <param name="request"></param>
[HttpDelete]
public void DeletePurchaseOrder([FromBody] DeletePurchaseOrderRequest request)
{
purchaseOrderBusiness.DeletePurchaseOrder(request);
}
/// <summary>
/// 手动签收采购单
/// </summary>

88
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -1127,6 +1127,12 @@ namespace BBWYB.Server.Business
public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request)
{
nLogManager.Default().Info($"SetHistoryPurchaseOrder {JsonConvert.SerializeObject(request)}");
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
if (historyPurchaseOrder == null)
throw new BusinessException("未查询到采购单");
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId &&
ocd.PurchaseOrderId != request.PurchaseOrderId).ToList();
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
@ -1137,12 +1143,6 @@ namespace BBWYB.Server.Business
var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M;
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M);
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
var historyPurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
if (historyPurchaseOrder == null)
throw new BusinessException("未查询到采购单");
#region 找出失效的快递单
List<string> deleteWaybillNoList = new List<string>();
@ -1161,7 +1161,6 @@ namespace BBWYB.Server.Business
}
#endregion
orderPurchaseInfoList.Remove(historyPurchaseOrder);
dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList);
@ -1194,6 +1193,81 @@ namespace BBWYB.Server.Business
});
}
public void DeletePurchaseOrder(DeletePurchaseOrderRequest request)
{
nLogManager.Default().Info($"DeletePurchaseOrder {JsonConvert.SerializeObject(request)}");
//var po = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId).ToOne();
//if (po == null)
// throw new BusinessException("采购单不不存在");
//var orderId = po.OrderId;
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList();
var deletePurchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
if (deletePurchaseOrder == null)
throw new BusinessException("采购单不不存在");
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId &&
ocd.PurchaseOrderId != request.PurchaseOrderId).ToList();
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
var purchaseProductAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount) ?? 0M;
var purchaseFreight = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight) ?? 0M;
var outPackAmount = dbOrderCostDetailList.Count() == 0 ? 0M : dbOrderCostDetailList.Sum(ocd => ocd.OutPackAmount) ?? 0M;
dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice.Value, purchaseProductAmount, purchaseFreight, outPackAmount, 0M);
#region 找出失效的快递单
List<string> deleteWaybillNoList = new List<string>();
//查询该采购单所使用的快递单号
var useWaybillNos = fsql.Select<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ToList(eori => eori.WayBillNo);
//查询使用上述快递单号的快递单关系
var expressOrderRelationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => useWaybillNos.Contains(eori.WayBillNo)).ToList();
//以快递单号进行分组
var expressOrderRelationGroups = expressOrderRelationList.GroupBy(eori => eori.WayBillNo);
foreach (var group in expressOrderRelationGroups)
{
if (group.Count() == group.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId))
deleteWaybillNoList.Add(group.Key);
}
#endregion
orderPurchaseInfoList.Remove(deletePurchaseOrder);
while (orderPurchaseInfoList.Any(opi => opi.IsEnabled == false))
{
var historyPo = orderPurchaseInfoList.FirstOrDefault(opi => opi.IsEnabled == false);
orderPurchaseInfoList.Remove(historyPo);
}
dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList);
fsql.Transaction(() =>
{
fsql.Delete<OrderPurchaseInfo>(deletePurchaseOrder.Id).ExecuteAffrows();
fsql.Update<OrderCostDetail>()
.Set(ocd => ocd.IsEnabled, false)
.Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId)
.ExecuteAffrows();
fsql.Delete<OrderPurchaseSkuInfo>().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Delete<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
if (deleteWaybillNoList.Count() > 0)
fsql.Delete<PurchaseExpressOrder>(deleteWaybillNoList).ExecuteAffrows();
fsql.Delete<InStorePurchaseOrdeRrelationInfo>().Where(i => i.OrderId == request.OrderId && i.PurchaseOrderId == request.PurchaseOrderId)
.ExecuteAffrows();
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
});
}
/// <summary>
/// 修改采购快递单
/// </summary>

6
BBWYB.Server.Model/Dto/Request/PurchaseOrder/DeletePurchaseOrderRequest.cs

@ -0,0 +1,6 @@
namespace BBWYB.Server.Model.Dto
{
public class DeletePurchaseOrderRequest : SetHistoryPurchaseOrderRequest
{
}
}
Loading…
Cancel
Save