506583276@qq.com 2 years ago
parent
commit
598b238837
  1. 1
      BBWYB.Server.Business/KuaiDi100ExpressCompany.txt
  2. 66
      BBWYB.Server.Business/Order/OrderBusiness.cs
  3. 85
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 5
      BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs
  5. 17
      BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs
  6. 4
      SDKAdapter/ExpressCompanyNameConverter.cs

1
BBWYB.Server.Business/KuaiDi100ExpressCompany.txt

@ -1398,3 +1398,4 @@ yikonn,yikonn,国际运输商
振捷国际货运,zjgj56,国际运输商 振捷国际货运,zjgj56,国际运输商
ZTE中兴物流,zteexpress,国际运输商 ZTE中兴物流,zteexpress,国际运输商
中途国际速递,ztsdu,国内运输商 中途国际速递,ztsdu,国内运输商
专线物流,zhuanxianwuliu,国内运输商

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

@ -146,13 +146,12 @@ namespace BBWYB.Server.Business
if (orderList.Count() > 0) if (orderList.Count() > 0)
{ {
#region 处理Sku #region 查询关联信息
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && var orderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>().Where(ori => orderIdList.Contains(ori.OrderId)).ToList();
orderIdList.Contains(osku.OrderId)).ToList<OrderSkuResponse>(); #endregion
foreach (var order in orderList)
{ #region 查询快递单信息
order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
}
#endregion #endregion
#region 处理订单成本明细 #region 处理订单成本明细
@ -164,9 +163,6 @@ namespace BBWYB.Server.Business
#region 处理采购信息 #region 处理采购信息
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>(); var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>(); var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
foreach (var order in orderList) foreach (var order in orderList)
{ {
order.OrderPurchaseInfoList = orderPurchaseInfoList.Where(op => op.OrderId == order.Id).ToList(); order.OrderPurchaseInfoList = orderPurchaseInfoList.Where(op => op.OrderId == order.Id).ToList();
@ -176,7 +172,55 @@ namespace BBWYB.Server.Business
orderPurchaseInfo.PurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); orderPurchaseInfo.PurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
} }
} }
#endregion
#region 处理SKU
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 &&
orderIdList.Contains(osku.OrderId)).ToList<OrderSkuResponse>();
foreach (var order in orderList)
{
order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList();
}
#endregion
#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.)
{
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 #endregion
} }
return new OrderListResponse() return new OrderListResponse()
@ -276,7 +320,7 @@ namespace BBWYB.Server.Business
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows(); fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
var sql = $"update purchaseorderv2 set OrderState=7 where Id='{request.OrderId}'"; var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
//取消C端采购单 //取消C端采购单
restApiService.SendRequest("https://bbwy.qiyue666.com", restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/Sql/ExecuteNonQuery", "/Api/Sql/ExecuteNonQuery",

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

@ -766,6 +766,8 @@ namespace BBWYB.Server.Business
} }
else else
{ {
if (dbPurchaserOrder.OrderId != request.OrderId)
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}不属于订单{request.OrderId}");
dbPurchaserOrder.PurchaseAccountId = purchaseOrder.PurchaseAccountId; dbPurchaserOrder.PurchaseAccountId = purchaseOrder.PurchaseAccountId;
dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName;
//dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)); //dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId));
@ -961,7 +963,7 @@ namespace BBWYB.Server.Business
OrderId = orderSku.OrderId, OrderId = orderSku.OrderId,
SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount),
PurchaseQuantity = orderSku.ItemTotal.Value, PurchaseQuantity = orderSku.ItemTotal.Value,
PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (1.0M * orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount)
}; };
assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight; assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight;
assocationOrderCostDetailList.Add(assocationOrderCostDetail); assocationOrderCostDetailList.Add(assocationOrderCostDetail);
@ -992,25 +994,38 @@ namespace BBWYB.Server.Business
/// <param name="request"></param> /// <param name="request"></param>
public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request)
{ {
var dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId).ToList(); 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 dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
try //try
{ //{
dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost); // dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost);
} //}
catch //catch
{ //{
dbOrderCost.PurchaseAmount = 0; // dbOrderCost.PurchaseAmount = 0;
} //}
dbOrderCost.Profit = dbOrder.OrderTotalPrice - //dbOrderCost.Profit = dbOrder.OrderTotalPrice -
dbOrderCost.PurchaseAmount - // dbOrderCost.PurchaseAmount -
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount // 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;
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("未查询到采购单");
orderPurchaseInfoList.Remove(historyPurchaseOrder);
dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList);
fsql.Transaction(() => fsql.Transaction(() =>
{ {
fsql.Update<OrderPurchaseInfo>() fsql.Update<OrderPurchaseInfo>(historyPurchaseOrder.Id)
.Set(opi => opi.IsEnabled, false) .Set(opi => opi.IsEnabled, false)
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.) .Set(opi => opi.OrderState, Enums.PurchaseOrderState.)
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId)
@ -1026,6 +1041,7 @@ namespace BBWYB.Server.Business
fsql.Delete<PurchaseExpressOrder>().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows(); fsql.Delete<PurchaseExpressOrder>().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
}); });
} }
@ -1035,6 +1051,7 @@ namespace BBWYB.Server.Business
/// <param name="request"></param> /// <param name="request"></param>
public void EditPurchaseExpressOrder(EditPurchaseExpressOrderRequest request) public void EditPurchaseExpressOrder(EditPurchaseExpressOrderRequest request)
{ {
nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}");
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn }); var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn });
if (dbOrder == null) if (dbOrder == null)
throw new BusinessException($"订单号{request.OrderId}不存在"); throw new BusinessException($"订单号{request.OrderId}不存在");
@ -1103,6 +1120,10 @@ namespace BBWYB.Server.Business
/// <param name="request"></param> /// <param name="request"></param>
public void ManualDelivery(ManualDeliveryRequest request) public void ManualDelivery(ManualDeliveryRequest request)
{ {
nLogManager.Default().Info($"ManualDelivery {JsonConvert.SerializeObject(request)}");
if (request.ExpressId == "zhuanxianwuliu" && string.IsNullOrEmpty(request.WaybillNo))
request.WaybillNo = $"wdh{idGenerator.NewLong()}";
#region 准备数据库更新对象 #region 准备数据库更新对象
List<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); List<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>();
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>();
@ -1173,7 +1194,7 @@ namespace BBWYB.Server.Business
#region 订阅快递100 #region 订阅快递100
bool isSubscribeKD100 = false; bool isSubscribeKD100 = false;
if (!isExists) if (request.ExpressId != "zhuanxianwuliu" && !isExists)
{ {
#region 订阅快递100 #region 订阅快递100
try try
@ -1201,7 +1222,6 @@ namespace BBWYB.Server.Business
} }
#endregion #endregion
} }
#endregion #endregion
#region 创建快递单 #region 创建快递单
@ -1552,21 +1572,24 @@ namespace BBWYB.Server.Business
} }
catch (Exception ex) catch (Exception ex)
{ {
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}"); if (!ex.Message.Contains("重复订阅"))
{
#region 订阅失败发送钉钉通知 nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}");
var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"错误:{ex.Message}"); #region 订阅失败发送钉钉通知
dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}"); var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"拳探订单号:{orderId}"); dingdingMsg.AppendLine($"错误:{ex.Message}");
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}");
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}"); dingdingMsg.AppendLine($"拳探订单号:{orderId}");
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}"); dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}");
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}"); dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}");
dingdingMsg.AppendLine("触发环节:1688发货回调"); dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}");
dingdingMsg.Append($"店铺名:{shop.ShopName}"); dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); dingdingMsg.AppendLine("触发环节:1688发货回调");
#endregion dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
} }
#endregion #endregion

5
BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs

@ -100,14 +100,13 @@ namespace BBWYB.Server.Business
//errorMsg = $"商品{purchaseSchemeProduct.PurchaseProductId}缺少sku信息"; //errorMsg = $"商品{purchaseSchemeProduct.PurchaseProductId}缺少sku信息";
return null; return null;
} }
var list = skuJArray.Select(j => new PurchaseSkuItemBasicInfoResponse() var list = skuJArray.Select(j => new PurchaseSkuItemBasicInfoResponse()
{ {
PurchaseProductId = request.PurchaseProductId, PurchaseProductId = request.PurchaseProductId,
Price = j.Value<decimal>("price"), Price = j.Value<decimal>("price"),
PurchaseSkuId = j.Value<string>("sku_id"), PurchaseSkuId = j.Value<string>("sku_id"),
PurchaseSkuSpecId = j.Value<string>("spec_id"), PurchaseSkuSpecId = j.Value<string>("spec_id"),
Title = j.Value<string>("properties_name"), Title = Regex.Replace(j.Value<string>("properties_name"), @"\d:\d:.{2,5}:", string.Empty),
Logo = GetOneBoundSkuLogo(j, (JArray)jobject["item"]["prop_imgs"]["prop_img"]) Logo = GetOneBoundSkuLogo(j, (JArray)jobject["item"]["prop_imgs"]["prop_img"])
}).ToList(); }).ToList();
@ -235,7 +234,7 @@ namespace BBWYB.Server.Business
{ {
PurchaseProductId = request.PurchaseProductId, PurchaseProductId = request.PurchaseProductId,
Price = skuPrice == 0M ? firstPrice : skuPrice, Price = skuPrice == 0M ? firstPrice : skuPrice,
Title = name, Title = name.Replace("&gt", string.Empty),
PurchaseSkuId = value.Value<string>("skuId"), PurchaseSkuId = value.Value<string>("skuId"),
PurchaseSkuSpecId = value.Value<string>("specId"), PurchaseSkuSpecId = value.Value<string>("specId"),
Logo = colorsProperty.FirstOrDefault(c => c.name == matchName)?.imageUrl ?? "pack://application:,,,/Resources/Images/defaultItem.png" Logo = colorsProperty.FirstOrDefault(c => c.name == matchName)?.imageUrl ?? "pack://application:,,,/Resources/Images/defaultItem.png"

17
BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs

@ -4,10 +4,19 @@ namespace BBWYB.Server.Model.Dto
{ {
public class OrderSkuResponse : OrderSku public class OrderSkuResponse : OrderSku
{ {
// /// <summary> // /// <summary>
// /// 采购方案 // /// 采购方案
// /// </summary> // /// </summary>
//public long SchemeId { get;set; } //public long SchemeId { get;set; }
public OrderSkuResponse()
{
PurchaseExpressOrderList = new List<PurchaseExpressOrderResponse>();
}
/// <summary>
/// 快递单列表
/// </summary>
public IList<PurchaseExpressOrderResponse> PurchaseExpressOrderList { get; set; }
} }
} }

4
SDKAdapter/ExpressCompanyNameConverter.cs

@ -122,7 +122,9 @@ namespace SDKAdapter
new LogisticsCompanyRelationship(){SourceName="优速",TargetName="优速物流",TargetCode="youshuwuliu"}, new LogisticsCompanyRelationship(){SourceName="优速",TargetName="优速物流",TargetCode="youshuwuliu"},
new LogisticsCompanyRelationship(){SourceName="优速物流",TargetName="优速物流",TargetCode="youshuwuliu"}, new LogisticsCompanyRelationship(){SourceName="优速物流",TargetName="优速物流",TargetCode="youshuwuliu"},
new LogisticsCompanyRelationship(){SourceName="加运美速递",TargetName="加运美",TargetCode="jiayunmeiwuliu"}, new LogisticsCompanyRelationship(){SourceName="加运美速递",TargetName="加运美",TargetCode="jiayunmeiwuliu"},
new LogisticsCompanyRelationship(){SourceName="加运美",TargetName="加运美",TargetCode="jiayunmeiwuliu"} new LogisticsCompanyRelationship(){SourceName="加运美",TargetName="加运美",TargetCode="jiayunmeiwuliu"},
new LogisticsCompanyRelationship(){SourceName="信丰物流",TargetName="信丰物流",TargetCode="xinfengwuliu"},
new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"}
}); });
} }

Loading…
Cancel
Save