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,国际运输商
ZTE中兴物流,zteexpress,国际运输商
中途国际速递,ztsdu,国内运输商
专线物流,zhuanxianwuliu,国内运输商

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

@ -146,13 +146,12 @@ namespace BBWYB.Server.Business
if (orderList.Count() > 0)
{
#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();
}
#region 查询关联信息
var orderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>().Where(ori => orderIdList.Contains(ori.OrderId)).ToList();
#endregion
#region 查询快递单信息
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
#endregion
#region 处理订单成本明细
@ -164,9 +163,6 @@ namespace BBWYB.Server.Business
#region 处理采购信息
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 purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
foreach (var order in orderList)
{
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();
}
}
#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
}
return new OrderListResponse()
@ -276,7 +320,7 @@ namespace BBWYB.Server.Business
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端采购单
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/Sql/ExecuteNonQuery",

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

@ -766,6 +766,8 @@ namespace BBWYB.Server.Business
}
else
{
if (dbPurchaserOrder.OrderId != request.OrderId)
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}不属于订单{request.OrderId}");
dbPurchaserOrder.PurchaseAccountId = purchaseOrder.PurchaseAccountId;
dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName;
//dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId));
@ -961,7 +963,7 @@ namespace BBWYB.Server.Business
OrderId = orderSku.OrderId,
SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount),
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;
assocationOrderCostDetailList.Add(assocationOrderCostDetail);
@ -992,25 +994,38 @@ namespace BBWYB.Server.Business
/// <param name="request"></param>
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 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
//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;
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.Update<OrderPurchaseInfo>()
fsql.Update<OrderPurchaseInfo>(historyPurchaseOrder.Id)
.Set(opi => opi.IsEnabled, false)
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.)
.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.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>
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 });
if (dbOrder == null)
throw new BusinessException($"订单号{request.OrderId}不存在");
@ -1103,6 +1120,10 @@ namespace BBWYB.Server.Business
/// <param name="request"></param>
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 准备数据库更新对象
List<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>();
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>();
@ -1173,7 +1194,7 @@ namespace BBWYB.Server.Business
#region 订阅快递100
bool isSubscribeKD100 = false;
if (!isExists)
if (request.ExpressId != "zhuanxianwuliu" && !isExists)
{
#region 订阅快递100
try
@ -1201,7 +1222,6 @@ namespace BBWYB.Server.Business
}
#endregion
}
#endregion
#region 创建快递单
@ -1552,21 +1572,24 @@ namespace BBWYB.Server.Business
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}");
#region 订阅失败发送钉钉通知
var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"错误:{ex.Message}");
dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}");
dingdingMsg.AppendLine($"拳探订单号:{orderId}");
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}");
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}");
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}");
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}");
dingdingMsg.AppendLine("触发环节:1688发货回调");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
if (!ex.Message.Contains("重复订阅"))
{
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}");
#region 订阅失败发送钉钉通知
var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"错误:{ex.Message}");
dingdingMsg.AppendLine($"采购订单号:{purchaseOrderId}");
dingdingMsg.AppendLine($"拳探订单号:{orderId}");
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}");
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}");
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}");
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}");
dingdingMsg.AppendLine("触发环节:1688发货回调");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
}
#endregion

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

@ -100,14 +100,13 @@ namespace BBWYB.Server.Business
//errorMsg = $"商品{purchaseSchemeProduct.PurchaseProductId}缺少sku信息";
return null;
}
var list = skuJArray.Select(j => new PurchaseSkuItemBasicInfoResponse()
{
PurchaseProductId = request.PurchaseProductId,
Price = j.Value<decimal>("price"),
PurchaseSkuId = j.Value<string>("sku_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"])
}).ToList();
@ -235,7 +234,7 @@ namespace BBWYB.Server.Business
{
PurchaseProductId = request.PurchaseProductId,
Price = skuPrice == 0M ? firstPrice : skuPrice,
Title = name,
Title = name.Replace("&gt", string.Empty),
PurchaseSkuId = value.Value<string>("skuId"),
PurchaseSkuSpecId = value.Value<string>("specId"),
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
{
// /// <summary>
// /// 采购方案
// /// </summary>
//public long SchemeId { get;set; }
// /// <summary>
// /// 采购方案
// /// </summary>
//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="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