Browse Source

Merge branch 'newOrderState' of http://code.qiyue666.com/pengcong001/bbwyb into newOrderState

yijia
shanji 2 years ago
parent
commit
7ce4ca2360
  1. 32
      BBWYB.Server.API/Controllers/DataRepairController.cs
  2. 25
      BBWYB.Server.API/Controllers/OrderController.cs
  3. 10
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  4. 133
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  5. 17
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs
  6. 59
      BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs
  7. 312
      BBWYB.Server.Business/Order/OrderBusiness.cs
  8. 163
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  9. 11
      BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs
  10. 15
      BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs
  11. 8
      BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs
  12. 5
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs
  13. 4
      BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs
  14. 9
      BBWYB.Server.Model/Enums.cs

32
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -14,18 +14,6 @@ namespace BBWYB.Server.API.Controllers
this.dataRepairBusiness = dataRepairBusiness;
}
[HttpPost]
public void RepairPurchaseExpressOrder()
{
dataRepairBusiness.RepairPurchaseExpressOrder();
}
[HttpPost]
public void ClearCancelOrderData()
{
dataRepairBusiness.ClearCancelOrderData();
}
/// <summary>
/// 手动订阅快递100
/// </summary>
@ -37,25 +25,5 @@ namespace BBWYB.Server.API.Controllers
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
}
/// <summary>
/// 修复订单状态
/// </summary>
/// <param name="orderId"></param>
[HttpPost("{orderId}")]
public void RepairOrderState([FromRoute] string orderId)
{
dataRepairBusiness.RepairOrderState(orderId);
}
/// <summary>
/// 修复订单状态
/// </summary>
/// <param name="orderId"></param>
[HttpPost]
public void BatchRepairOrderState([FromBody] IList<string> orderIds)
{
foreach (var orderId in orderIds)
dataRepairBusiness.RepairOrderState(orderId);
}
}
}

25
BBWYB.Server.API/Controllers/OrderController.cs

@ -23,7 +23,7 @@ namespace BBWYB.Server.API.Controllers
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public OrderListResponse GetOrderList([FromBody]QueryOrderRequest request)
public OrderListResponse GetOrderList([FromBody] QueryOrderRequest request)
{
return orderBusiness.GetOrderList(request);
}
@ -34,11 +34,22 @@ namespace BBWYB.Server.API.Controllers
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList([FromBody]QueryExpressOrderRequest request)
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList([FromBody] QueryExpressOrderRequest request)
{
return orderBusiness.GetPurchaseExpressOrderList(request);
}
/// <summary>
/// 批量查询快递单列表
/// </summary>
/// <param name="orderIds">订单Id数组</param>
/// <returns></returns>
[HttpPost]
public IList<PurchaseExpressOrderResponse> BatchGetPurchaseExpressOrderList([FromBody] IList<string> orderIds)
{
return orderBusiness.GetPurchaseExpressOrderList(orderIds);
}
///// <summary>
///// 出库
@ -93,6 +104,16 @@ namespace BBWYB.Server.API.Controllers
orderBusiness.EditOrderSkuRemark(request);
}
/// <summary>
/// 来源SKU验收
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void CheckSku([FromBody] CheckSkuRequest request)
{
orderBusiness.CheckSku(request);
}
/// <summary>
/// 齐库推送打包费
/// </summary>

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

@ -122,6 +122,16 @@ namespace BBWYB.Server.API.Controllers
purchaseOrderBusiness.ManualSign(request);
}
/// <summary>
/// 批量手动收货
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void BatchManualSign([FromBody] BatchManualSignRequest request)
{
purchaseOrderBusiness.BatchManualSign(request);
}
/// <summary>
/// 1688回调
/// </summary>

133
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

@ -1,6 +1,7 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Yitter.IdGenerator;
@ -14,138 +15,6 @@ namespace BBWYB.Server.Business
this.kuaiDi100Manager = kuaiDi100Manager;
}
public void RepairPurchaseExpressOrder()
{
#region 修复快递单
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => !string.IsNullOrEmpty(peo.PurchaseOrderId)).ToList();
var wayBillNos = purchaseExpressOrderList.Select(peo => peo.WaybillNo).ToList();
var relationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => wayBillNos.Contains(eori.WayBillNo)).ToList();
List<ExpressOrderRelationInfo> insertExpressOrderRelationInfoList = new List<ExpressOrderRelationInfo>();
foreach (var peo in purchaseExpressOrderList)
{
var relation = relationList.FirstOrDefault(r => r.WayBillNo == peo.WaybillNo && r.PurchaseOrderId == peo.PurchaseOrderId);
if (relation != null)
continue;
insertExpressOrderRelationInfoList.Add(new ExpressOrderRelationInfo()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
OrderId = peo.OrderId,
PurchaseOrderId = peo.PurchaseOrderId,
ShopId = peo.ShopId,
WayBillNo = peo.WaybillNo
});
}
fsql.Transaction(() =>
{
fsql.Insert(insertExpressOrderRelationInfoList).ExecuteAffrows();
});
#endregion
}
/// <summary>
/// 批量清理取消单数据
/// </summary>
public void ClearCancelOrderData()
{
var cancelOrderList = fsql.Select<Order>().Where(o => o.OrderState == Model.Enums.OrderState.).ToList();
var cancelOrderIds = cancelOrderList.Select(o => o.Id);
//var noUsingExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => !fsql.Select<ExpressOrderRelationInfo>()
// .As("b")
// .ToList(b => b.WayBillNo)
// .Contains(peo.WaybillNo))
// .ToList();
/*
select * from purchaseexpressorder peo where not exists (select r.waybillno from expressorderrelationinfo r where peo.WaybillNo=r.WaybillNo);
*/
fsql.Transaction(() =>
{
fsql.Delete<OrderPurchaseInfo>().Where(opi => cancelOrderIds.Contains(opi.OrderId)).ExecuteAffrows();
fsql.Delete<OrderPurchaseSkuInfo>().Where(posku => cancelOrderIds.Contains(posku.OrderId)).ExecuteAffrows();
fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => cancelOrderIds.Contains(opri.OrderId)).ExecuteAffrows();
fsql.Delete<OrderCost>().Where(oc => cancelOrderIds.Contains(oc.OrderId)).ExecuteAffrows();
fsql.Delete<OrderCostDetail>().Where(ocd => cancelOrderIds.Contains(ocd.OrderId)).ExecuteAffrows();
});
}
public void RepairOrderState(string orderId)
{
List<IUpdate<OrderPurchaseInfo>> updateOrderPurchaseList = new List<IUpdate<OrderPurchaseInfo>>();
IUpdate<Order> updateOrder = null;
var order = fsql.Select<Order>(orderId).ToOne();
#region 查询采购单
var purchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(ori => ori.IsEnabled == true && ori.OrderId == orderId).ToList();
if (purchaseOrderList.Count() == 0)
throw new Exception("未查询到任何采购单");
var purchaseOrderIds = purchaseOrderList.Select(po => po.PurchaseOrderId).ToList();
#endregion
#region 查询采购SKU
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>()
.Where(posku => purchaseOrderIds.Contains(posku.PurchaseOrderId))
.ToList();
#endregion
#region 查询采购sku关联信息
IList<OrderPurchaseRelationInfo> orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>()
.Where(ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
.ToList();
#endregion
#region 查询采购单关联的快递单
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => eori.OrderId == orderId).ToList((eori, peo) => new PurchaseExpressOrder
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
#endregion
foreach (var purchaseOrder in purchaseOrderList)
{
var currentPurchaseOrderSkuList = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
var currentPurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
var oldPurchaseOrderState = purchaseOrder.OrderState;
purchaseOrder.CalculationOrderState(fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList);
if (purchaseOrder.OrderState != oldPurchaseOrderState)
{
var update = fsql.Update<OrderPurchaseInfo>(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState);
updateOrderPurchaseList.Add(update);
}
}
var oldOrderState = order.OrderState;
order.CalculationOrderState(fsql, null, purchaseOrderList);
if (order.OrderState != oldOrderState)
updateOrder = fsql.Update<Order>(order.Id).Set(o => o.OrderState, order.OrderState);
fsql.Transaction(() =>
{
foreach (var update in updateOrderPurchaseList)
update.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
public void SubscribeKD100(string waybillNo, string targetCompanyCode)
{

17
BBWYB.Server.Business/Extensions/OrderStateExtension.cs

@ -21,8 +21,7 @@ namespace BBWYB.Server.Business
{
if (order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
order.OrderState == Enums.OrderState.)
return;
if (orderSkuList == null)
@ -102,11 +101,19 @@ namespace BBWYB.Server.Business
}
#endregion
#region 打包中
#region 待验收/待核算/已完成
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
if (order.IntoStoreType == Enums.IntoStoreType.)
{
if (orderSkuList.Any(osku => osku.IsCheck != true))
order.OrderState = Enums.OrderState.;
else
order.OrderState = Enums.OrderState.;
}
else
order.OrderState = Enums.OrderState.;
return;
}
#endregion
@ -146,7 +153,7 @@ namespace BBWYB.Server.Business
}
if (purchaseExpressOrderList == null)
purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(exo => exo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
return;
if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.) //支持采购sku和关联信息
{

59
BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs

@ -0,0 +1,59 @@
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
namespace BBWYB.Server.Business.Extensions
{
public static class PurchaseExpressOrderExtension
{
/// <summary>
/// 计算快递单归属
/// </summary>
/// <param name="purchaseExpressOrder">必须是经过与快递单关系表进行联合查询的结果 (ExpressOrderRelationInfo-PurchaseExpressOrder)</param>
/// <param name="orderPurchaseInfoList"></param>
/// <param name="orderPurchaseRelationInfoList"></param>
/// <param name="orderPurchaseSkuInfoList"></param>
public static void CalculationBelongOrderSku(this PurchaseExpressOrderResponse purchaseExpressOrder,
IList<OrderPurchaseInfoResponse> orderPurchaseInfoList,
IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList,
IList<OrderPurchaseSkuInfoResponse> orderPurchaseSkuInfoList)
{
var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
if (purchaseOrder == null)
return;
if (purchaseOrder.PurchasePlatform == Enums.Platform.)
{
var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo &&
posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId)
.Select(posku => posku.PurchaseSkuId).ToList();
var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
purchaseSkuIds.Contains(ori.PurchaseSkuId))
.Select(ori => ori.BelongSkuId)
.Distinct()
.ToList();
purchaseExpressOrder.BelongSkuIds = string.Join(",", orderSkuIds);
//var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// orderSkuIds.Contains(osku.SkuId)).ToList();
//foreach (var osku in currentOrderSkuList)
//{
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
//}
}
else
{
purchaseExpressOrder.BelongSkuIds = purchaseOrder.BelongSkuIds;
//var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
//foreach (var osku in currentOrderSkuList)
//{
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
//}
}
}
}
}

312
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -54,8 +54,8 @@ namespace BBWYB.Server.Business
select = select.Where((o, ocs, oct) => childSelect.Where(opi => opi.OrderId == o.Id).Any());
}
select = select.WhereIf(request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState.,
(o, ocs, oct) => o.OrderState == request.OrderState)
@ -206,40 +206,51 @@ namespace BBWYB.Server.Business
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
if (purchaseOrder == null)
continue;
if (purchaseOrder.PurchasePlatform == Enums.Platform.)
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList);
var currentOrderSkuList = orderSkuList.Where(osku => !string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds) &&
osku.OrderId == purchaseExpressOrder.OrderId &&
purchaseExpressOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
foreach (var osku in currentOrderSkuList)
{
var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo &&
posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId)
.Select(posku => posku.PurchaseSkuId).ToList();
var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
purchaseSkuIds.Contains(ori.PurchaseSkuId))
.Select(ori => ori.BelongSkuId)
.Distinct()
.ToList();
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
orderSkuIds.Contains(osku.SkuId)).ToList();
foreach (var osku in currentOrderSkuList)
{
if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
}
else
{
var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
foreach (var osku in currentOrderSkuList)
{
if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
//var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
//if (purchaseOrder == null)
// continue;
//if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
//{
// var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo &&
// posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId)
// .Select(posku => posku.PurchaseSkuId).ToList();
// var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// purchaseSkuIds.Contains(ori.PurchaseSkuId))
// .Select(ori => ori.BelongSkuId)
// .Distinct()
// .ToList();
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// orderSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
//else
//{
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
}
#endregion
}
@ -273,121 +284,91 @@ namespace BBWYB.Server.Business
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => op.OrderId == request.OrderId && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.OrderId == request.OrderId && opri.SourceSkuId == request.SourceSkuId).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => posku.OrderId == request.OrderId).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => posku.OrderId == request.OrderId).ToList<OrderPurchaseSkuInfoResponse>();
var orderSku = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SourceSkuId).ToOne();
IList<PurchaseExpressOrderResponse> list = new List<PurchaseExpressOrderResponse>();
#region 处理SKU的快递单
foreach (var purchaseOrder in orderPurchaseInfoList)
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
if (purchaseOrder.PurchasePlatform == Enums.Platform.)
{
var currentRelationList = orderPurchaseRelationList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
var waybillNos = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
currentRelationList.Any(opri => opri.PurchaseSkuId == posku.PurchaseSkuId))
.Select(x => x.WaybillNo)
.ToList();
foreach (var waybillNo in waybillNos)
{
var peo = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == waybillNo);
if (peo != null && !list.Any(x => x.WaybillNo == waybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
list.Add(peo);
}
}
else
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
if (!string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds))
{
var currentSkuList = orderSkuList.Where(osku => purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).Select(osku => osku.BelongSkuId).Distinct().ToList();
if (currentSkuList.Contains(request.SourceSkuId))
if (purchaseExpressOrder.BelongSkuIds.Contains(orderSku.SkuId))
{
var peoList = purchaseExpressOrderList.Where(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
foreach (var peo in peoList)
{
if (!list.Any(x => x.WaybillNo == peo.WaybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
list.Add(peo);
}
if (!list.Any(x => x.WaybillNo == purchaseExpressOrder.WaybillNo))
list.Add(purchaseExpressOrder);
}
}
}
//foreach (var purchaseOrder in orderPurchaseInfoList)
//{
// if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
// {
// var currentRelationList = orderPurchaseRelationList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// var waybillNos = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// currentRelationList.Any(opri => opri.PurchaseSkuId == posku.PurchaseSkuId))
// .Select(x => x.WaybillNo)
// .ToList();
// foreach (var waybillNo in waybillNos)
// {
// var peo = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == waybillNo);
// if (peo != null && !list.Any(x => x.WaybillNo == waybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// else
// {
// var currentSkuList = orderSkuList.Where(osku => purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).Select(osku => osku.BelongSkuId).Distinct().ToList();
// if (currentSkuList.Contains(request.SourceSkuId))
// {
// var peoList = purchaseExpressOrderList.Where(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// foreach (var peo in peoList)
// {
// if (!list.Any(x => x.WaybillNo == peo.WaybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// }
//}
#endregion
return list;
}
//public void OutStock(OutStockRequest request)
//{
// var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
// if (dbOrder == null)
// throw new BusinessException($"订单{request.OrderId}不存在");
// var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
// var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
// dbOrderPurchaseInfo.WaybillNo = request.WayBillNo;
// dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId;
// dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName;
// dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId;
// dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName;
// dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待收货;
// #region 订单状态
// dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList);
// #endregion
// if (!string.IsNullOrEmpty(request.TargetExpressId))
// {
// #region 订阅快递100
// #endregion
// //try
// //{
// // opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
// // .OutStock(new OP_OutStockRequest()
// // {
// // AppKey = request.AppKey,
// // AppSecret = request.AppSecret,
// // AppToken = request.AppToken,
// // ExpressId = request.TargetExpressId,
// // ExpressName = request.TargetExpressName,
// // OrderId = request.OrderId,
// // Platform = (AdapterEnums.PlatformType)request.Platform,
// // WayBillNo = request.WayBillNo
// // });
// //}
// //catch (Exception ex)
// //{
// // nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
// //}
// }
// #region 通知C端出库
// //通知C端
// try
// {
// restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/PurchaseOrder/QuanTanSendGoodsCallback",
// new
// {
// OrderId = request.OrderId,
// ExpressId = request.SourceExpressId,
// ExpressName = request.SourceExpressName,
// request.WayBillNo
// },
// null,
// HttpMethod.Post);
// }
// catch (Exception ex)
// {
// }
// #endregion
// fsql.Transaction(() =>
// {
// fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
// fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
// });
//}
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList(IList<string> orderIds)
{
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => orderIds.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIds.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => orderIds.Contains(opri.OrderId)).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => orderIds.Contains(posku.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
}
#endregion
return purchaseExpressOrderList;
}
public void CancelOrder(CancelOrderRequest request, string mdsToken)
{
@ -403,13 +384,26 @@ namespace BBWYB.Server.Business
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
//取消C端采购单
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/Sql/ExecuteNonQuery",
new { sql = sql.AESEncrypt() },
new Dictionary<string, string>() { { "Authorization", $"{mdsToken}" } },
HttpMethod.Post);
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = request.OrderId,
PurchaseOrderState = Enums.OrderState.
}, null, HttpMethod.Post);
}
catch
{
}
//var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
////取消C端采购单
//restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/Sql/ExecuteNonQuery",
// new { sql = sql.AESEncrypt() },
// new Dictionary<string, string>() { { "Authorization", $"Bearer {mdsToken}" } },
// HttpMethod.Post);
try
{
@ -516,5 +510,37 @@ namespace BBWYB.Server.Business
{
}
public void CheckSku(CheckSkuRequest request)
{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单{request.OrderId}不存在");
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == request.SourceSkuId);
if (orderSku == null)
throw new BusinessException($"订单{request.OrderId}的归属sku中不存在{request.SourceSkuId}");
if (orderSku.IsCheck == true)
throw new BusinessException("已验收,无需重复验收");
IUpdate<Order> updateOrder = null;
IUpdate<OrderSku> updateOrderSku = null;
orderSku.IsCheck = true;
updateOrderSku = fsql.Update<OrderSku>(orderSku.Id).Set(osku => osku.IsCheck, true);
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, orderSkuList, null);
if (oldOrderState != dbOrder.OrderState)
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
fsql.Transaction(() =>
{
updateOrderSku?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
}
}

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

@ -58,8 +58,7 @@ namespace BBWYB.Server.Business
{
Enums.OrderState.,
Enums.OrderState.,
Enums.OrderState.,
Enums.OrderState.
Enums.OrderState.
};
}
@ -1021,17 +1020,6 @@ namespace BBWYB.Server.Business
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
//try
//{
// dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost);
//}
//catch
//{
// dbOrderCost.PurchaseAmount = 0;
//}
//dbOrderCost.Profit = dbOrder.OrderTotalPrice -
// dbOrderCost.PurchaseAmount -
// dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
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;
@ -1099,6 +1087,9 @@ namespace BBWYB.Server.Business
public void EditPurchaseExpressOrder(EditPurchaseExpressOrderRequest request)
{
nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}");
throw new BusinessException("修改快递单已暂时下线,待调整后重新上线");
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn });
if (dbOrder == null)
throw new BusinessException($"订单号{request.OrderId}不存在");
@ -1109,8 +1100,8 @@ namespace BBWYB.Server.Business
var oldPeo = fsql.Select<PurchaseExpressOrder>(request.OldWaybillNo).ToOne();
if (oldPeo == null)
throw new BusinessException($"旧快递单号{request.OldWaybillNo}不存在");
if (oldPeo.OrderId != request.OrderId || oldPeo.PurchaseOrderId != request.PurchaseOrderId)
throw new BusinessException("快递单号不属于当前操作提交的订单或采购单");
//if (oldPeo.OrderId != request.OrderId || oldPeo.PurchaseOrderId != request.PurchaseOrderId)
// throw new BusinessException("快递单号不属于当前操作提交的订单或采购单");
var newPeo = fsql.Select<PurchaseExpressOrder>(request.NewWaybillNo).ToOne();
if (newPeo != null)
throw new BusinessException($"新快递单号{request.NewWaybillNo}已存在");
@ -1211,7 +1202,8 @@ namespace BBWYB.Server.Business
Id = o.Id,
OrderSn = o.OrderSn,
OrderState = o.OrderState,
ShopId = o.ShopId
ShopId = o.ShopId,
IntoStoreType = o.IntoStoreType
});
if (dbOrder == null)
throw new BusinessException("未查询到采购单的订单信息");
@ -1367,6 +1359,21 @@ namespace BBWYB.Server.Business
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
public void BatchManualSign(BatchManualSignRequest request)
{
if (request.WayBillNoList == null || request.WayBillNoList.Count() == 0)
throw new BusinessException("缺少快递单号");
if (request.WayBillNoList.Distinct().Count() < request.WayBillNoList.Count())
throw new BusinessException("不允许重复的快递单号");
Task.Factory.StartNew(() =>
{
foreach (var waybillNo in request.WayBillNoList)
OnExpressOrderChange(waybillNo, "QianShou", DateTime.Now, "手动签收");
}, CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
///// <summary>
///// 手动收货
///// </summary>
@ -1592,7 +1599,8 @@ namespace BBWYB.Server.Business
Id = o.Id,
OrderSn = o.OrderSn,
OrderState = o.OrderState,
ShopId = o.ShopId
ShopId = o.ShopId,
IntoStoreType = o.IntoStoreType
});
if (dbOrder == null)
throw new Exception("未查询到采购单的订单信息");
@ -2196,111 +2204,6 @@ namespace BBWYB.Server.Business
}
}
private void KuaiDi100PublishCore(string param)
{
JObject jobject = JObject.Parse(param);
var waybillNo = jobject["lastResult"].Value<string>("nu");
try
{
var state = jobject["lastResult"].Value<int>("state");
var convertState = kuaiDi100Manager.GetExpressState(state);
if (convertState == "Unknow")
return;
var dataArray = jobject["lastResult"]["data"].Children().Select(d => new
{
context = d.Value<string>("context"),
ftime = d.Value<DateTime>("ftime"),
statusCode = d.Value<int>("statusCode")
}).OrderByDescending(d => d.ftime).ToList();
var lastData = dataArray.FirstOrDefault();
IUpdate<PurchaseExpressOrder> updatePurchaseExpressOrder = null;
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null;
IUpdate<Order> updateOrder = null;
#region 查询该笔快递单
var tpeo = fsql.Select<PurchaseExpressOrder>(waybillNo).ToOne();
if (tpeo == null)
throw new Exception("未查询到快递单");
#endregion
#region 查询采购单
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == tpeo.OrderId && opi.IsEnabled == true).ToList();
var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == tpeo.PurchaseOrderId);
if (orderPurchaseInfo == null)
throw new Exception("未查询到采购单");
#endregion
#region 查询订单/采购sku/快递单/采购关系
var dbOrder = fsql.Select<Order>(tpeo.OrderId).ToOne(o => new Order
{
Id = o.Id,
ShopId = o.ShopId,
OrderState = o.OrderState
});
if (dbOrder == null)
throw new Exception("未查询到订单");
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null;
IList<OrderPurchaseRelationInfo> orderPurchaseRelationList = null;
if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
{
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息");
orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseRelationList.Count() == 0)
throw new BusinessException("未查询到采购单的关联信息");
}
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == waybillNo);
purchaseExpressOrder.ExpressState = convertState;
purchaseExpressOrder.ExpressChangedTime = lastData.ftime;
purchaseExpressOrder.ExpressContent = lastData.context;
updatePurchaseExpressOrder = fsql.Update<PurchaseExpressOrder>().SetSource(purchaseExpressOrder);
#endregion
#region 计算采购单状态
orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList);
updateOrderPurchase = fsql.Update<OrderPurchaseInfo>(orderPurchaseInfo.Id)
.Set(opi => opi.OrderState, orderPurchaseInfo.OrderState);
#endregion
#region 计算订单状态
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
updateOrder = fsql.Update<Order>(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState);
#endregion
#region 通知齐库打包落仓情况
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList),
CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
#region 通知C端状态
Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
fsql.Transaction(() =>
{
updatePurchaseExpressOrder?.ExecuteAffrows();
updateOrderPurchase?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
catch (Exception ex)
{
nLogManager.GetLogger("快递100").Error(ex, waybillNo);
}
}
/// <summary>
/// 快递单信息变更
/// </summary>
@ -2337,7 +2240,8 @@ namespace BBWYB.Server.Business
{
Id = o.Id,
ShopId = o.ShopId,
OrderState = o.OrderState
OrderState = o.OrderState,
IntoStoreType = o.IntoStoreType
});
if (orderList.Count() == 0)
throw new Exception("未查询到任何订单");
@ -2418,12 +2322,15 @@ namespace BBWYB.Server.Business
updateOrderPurchaseList.Add(update);
#region 通知齐库打包落仓情况
var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
if (order.IntoStoreType == Enums.IntoStoreType.)
{
var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList),
CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList),
CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
#endregion
}

11
BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs

@ -40,11 +40,6 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 100)]
public string ExpressState { get; set; }
[Column(StringLength = 100)]
public string OrderId { get; set; }
[Column(StringLength = 100)]
public string PurchaseOrderId { get; set; }
[Column(StringLength = 100)]
public long ShopId { get; set; }
@ -79,6 +74,12 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "bit")]
public bool IsSubscribeKD100 { get; set; } = false;
[Column(IsIgnore = true)]
public string OrderId { get; set; }
[Column(IsIgnore = true)]
public string PurchaseOrderId { get; set; }
}
}

15
BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs

@ -0,0 +1,15 @@
namespace BBWYB.Server.Model.Dto
{
public class CheckSkuRequest
{
/// <summary>
/// 订单Id
/// </summary>
public string OrderId { get; set; }
/// <summary>
/// 来源SKUID (JD)
/// </summary>
public string SourceSkuId { get; set; }
}
}

8
BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs

@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BBWYB.Server.Model.Dto
namespace BBWYB.Server.Model.Dto
{
public class QueryExpressOrderRequest
{

5
BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs

@ -18,4 +18,9 @@
public string WayBillNo { get; set; }
}
public class BatchManualSignRequest
{
public IList<string> WayBillNoList { get; set; }
}
}

4
BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs

@ -4,5 +4,9 @@ namespace BBWYB.Server.Model.Dto
{
public class PurchaseExpressOrderResponse: PurchaseExpressOrder
{
/// <summary>
/// 归属SkuId,逗号间隔 (拳探SKU)
/// </summary>
public string BelongSkuIds { get; set; }
}
}

9
BBWYB.Server.Model/Enums.cs

@ -83,8 +83,8 @@
/// <para>暂停 = 7</para>
/// <para>已退款 = 8</para>
/// <para>Unknow = 100</para>
/// <para>打包中 = 140</para>
/// <para>待完结 = 150</para>
/// <para>待验收 = 140</para>
/// <para>待核算 = 150</para>
/// </summary>
public enum OrderState
{
@ -101,9 +101,8 @@
= 7,
退 = 8,
Unknow = 100,
= 140,
= 150
= 140,
= 150
//待配置 = 101,
}

Loading…
Cancel
Save