Browse Source

Merge branch 'newOrderState'

yijia
shanji 2 years ago
parent
commit
bb0b1d0797
  1. 25
      BBWYB.Client/APIServices/TestApiService.cs
  2. 10
      BBWYB.Server.API/Controllers/OrderController.cs
  3. 33
      BBWYB.Server.Business/Order/OrderBusiness.cs
  4. 190
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  5. 4
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  6. 9
      BBWYB.Server.Model/Enums.cs

25
BBWYB.Client/APIServices/TestApiService.cs

@ -0,0 +1,25 @@
using BBWYB.Common.Http;
using BBWYB.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BBWYB.Client.APIServices
{
public class TestApiService : BaseApiService, IDenpendency
{
public TestApiService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
{
}
public ApiResponse<object> BatchManualSign()
{
return SendRequest<object>(globalContext.BBWYApiHost, "Api/PurchaseOrder/BatchManualSign", new
{
wayBillNoList = new string[] { "ceshi123456" }
}, null, System.Net.Http.HttpMethod.Post);
}
}
}

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

@ -114,6 +114,16 @@ namespace BBWYB.Server.API.Controllers
orderBusiness.CheckSku(request);
}
/// <summary>
/// 核算订单
/// </summary>
/// <param name="orderId"></param>
[HttpPost("{orderId}")]
public void CheckComputationOrder([FromRoute]string orderId)
{
orderBusiness.CheckComputationOrder(orderId);
}
/// <summary>
/// 齐库推送打包费
/// </summary>

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

@ -542,5 +542,38 @@ namespace BBWYB.Server.Business
updateOrder?.ExecuteAffrows();
});
}
public void CheckComputationOrder(string orderId)
{
var order = fsql.Select<Order>(orderId).ToOne();
if (order == null)
throw new BusinessException("未查询到订单");
if (order.OrderState != Enums.OrderState.)
throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算");
var orderCost = fsql.Select<OrderCost>(orderId).ToOne();
if (orderCost == null)
throw new BusinessException("未查询到订单成本");
if (Math.Abs(orderCost.Profit ?? 0) > 1M)
throw new BusinessException("订单利润绝对值不能大于1");
fsql.Update<Order>(orderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
SendPurchaseOrderStateToC(orderId, Enums.OrderState.);
}
private void SendPurchaseOrderStateToC(string orderId, Enums.OrderState orderState)
{
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = orderId,
PurchaseOrderState = orderState
}, null, HttpMethod.Post);
}
catch
{
}
}
}
}

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

@ -1088,67 +1088,167 @@ namespace BBWYB.Server.Business
{
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 });
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单号{request.OrderId}不存在");
var shopIds = dbOrder.ShopId.ToString();
var shop = fsqlManager.MDSfsql.Select<Shops>().Where(s => s.ShopId == shopIds).ToOne();
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("快递单号不属于当前操作提交的订单或采购单");
var newPeo = fsql.Select<PurchaseExpressOrder>(request.NewWaybillNo).ToOne();
if (newPeo != null)
throw new BusinessException($"新快递单号{request.NewWaybillNo}已存在");
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
if (purchaseOrder == null)
throw new BusinessException($"未查询到采购单号{request.PurchaseOrderId}");
IInsert<PurchaseExpressOrder> insertPEO = null;
IInsert<ExpressOrderRelationInfo> insertEORI = null;
IDelete<ExpressOrderRelationInfo> deleteEORI = null;
IDelete<PurchaseExpressOrder> deletePEO = null;
IUpdate<OrderPurchaseSkuInfo> updatePurchaseOrderSku = null;
IUpdate<OrderPurchaseInfo> updatePurchaseOrder = null;
IUpdate<Order> updateOrder = null;
var waybillNos = new List<string>() { request.OldWaybillNo, request.NewWaybillNo };
var expressOrderRelationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => waybillNos.Contains(eori.WayBillNo)).ToList();
var oldWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.OldWaybillNo).ToList();
var newWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.NewWaybillNo).ToList();
#region 旧快递单号验证
if (!oldWaybillNoRelationList.Any())
throw new BusinessException("未查询到旧快递单号");
if (!oldWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId))
throw new BusinessException($"旧快递单号{request.OldWaybillNo}不属于采购单{request.PurchaseOrderId},无权修改");
if (oldWaybillNoRelationList.Count() == oldWaybillNoRelationList.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId))
deletePEO = fsql.Delete<PurchaseExpressOrder>(request.OldWaybillNo);
deleteEORI = fsql.Delete<ExpressOrderRelationInfo>().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId && eori.WayBillNo == request.OldWaybillNo);
#endregion
newPeo = new PurchaseExpressOrder()
#region 新快递单号验证
if (!newWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId))
{
WaybillNo = request.NewWaybillNo,
TargetExpressId = request.NewExpressId,
TargetExpressName = request.NewExpressName,
CreateTime = DateTime.Now,
OrderId = request.OrderId,
PurchaseOrderId = request.PurchaseOrderId,
ShopId = oldPeo.ShopId,
ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收
};
try
var eori = new ExpressOrderRelationInfo()
{
Id = idGenerator.NewLong(),
OrderId = request.OrderId,
PurchaseOrderId = request.PurchaseOrderId,
CreateTime = DateTime.Now,
ShopId = dbOrder.ShopId,
WayBillNo = request.NewWaybillNo
};
insertEORI = fsql.Insert(eori);
}
else
throw new BusinessException("请勿重复为同一采购单设置相同的快递单号");
PurchaseExpressOrder newPeo = null;
if (!newWaybillNoRelationList.Any())
{
newPeo = new PurchaseExpressOrder()
{
WaybillNo = request.NewWaybillNo,
TargetExpressId = request.NewExpressId,
TargetExpressName = request.NewExpressName,
CreateTime = DateTime.Now,
ShopId = dbOrder.ShopId.Value,
IsSubscribeKD100 = false,
ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收
};
try
{
kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
newPeo.IsSubscribeKD100 = true;
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}");
#region 订阅失败发送钉钉通知
var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"错误:{ex.Message}");
dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}");
dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}");
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}");
dingdingMsg.AppendLine($"源物流公司:无");
dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}");
dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}");
dingdingMsg.AppendLine("触发环节:修改物流单号");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
insertPEO = fsql.Insert(newPeo);
}
#endregion
#region 更新采购sku使用的快递单号
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null;
if (purchaseOrder.PurchasePlatform == Enums.Platform.)
{
kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
newPeo.IsSubscribeKD100 = true;
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => posku.PurchaseOrderId == request.PurchaseOrderId).ToList();
foreach (var posku in orderPurchaseSkuList)
{
if (posku.WaybillNo == request.OldWaybillNo)
posku.WaybillNo = request.NewWaybillNo;
}
updatePurchaseOrderSku = fsql.Update<OrderPurchaseSkuInfo>().Set(psku => psku.WaybillNo, request.NewWaybillNo)
.Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId)
.Where(psku => psku.WaybillNo == request.OldWaybillNo);
}
catch (Exception ex)
#endregion
#region 计算采购单状态
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => eori.PurchaseOrderId == request.PurchaseOrderId).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
});
if (newPeo != null)
purchaseExpressOrderList.Add(newPeo);
var oldPurchaseOrderState = purchaseOrder.OrderState;
purchaseOrder.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList);
if (oldPurchaseOrderState != purchaseOrder.OrderState)
updatePurchaseOrder = fsql.Update<OrderPurchaseInfo>(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState);
#endregion
#region 计算订单状态
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
if (oldOrderState != dbOrder.OrderState)
{
nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}");
#region 订阅失败发送钉钉通知
var dingdingMsg = new StringBuilder();
dingdingMsg.AppendLine($"错误:{ex.Message}");
dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}");
dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}");
dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}");
dingdingMsg.AppendLine($"源物流公司:无");
dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}");
dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}");
dingdingMsg.AppendLine("触发环节:修改物流单号");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
#region 通知C端状态
Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
#endregion
fsql.Transaction(() =>
{
fsql.Delete<PurchaseExpressOrder>(request.OldWaybillNo).ExecuteAffrows();
fsql.Update<OrderPurchaseSkuInfo>().Set(psku => psku.WaybillNo, request.NewWaybillNo)
.Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId)
.Where(psku => psku.WaybillNo == request.OldWaybillNo)
.ExecuteAffrows();
fsql.Insert(newPeo).ExecuteAffrows();
insertPEO?.ExecuteAffrows();
insertEORI?.ExecuteAffrows();
deleteEORI?.ExecuteAffrows();
deletePEO?.ExecuteAffrows();
updatePurchaseOrderSku?.ExecuteAffrows();
updatePurchaseOrder?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}

4
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -239,7 +239,7 @@ namespace BBWYB.Server.Business.Sync
}
}
private Enums.OrderState ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased)
private Enums.OrderState? ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased)
{
/*
-1
@ -267,7 +267,7 @@ namespace BBWYB.Server.Business.Sync
return Enums.OrderState.;
if (qtOrderState == "3")
return Enums.OrderState.;
return Enums.OrderState.Unknow;
return null;
}
}
}

9
BBWYB.Server.Model/Enums.cs

@ -78,11 +78,7 @@
/// <para>待发货 = 2, 部分发货 = 120</para>
/// <para>待收货 = 3, 部分收货 = 130</para>
/// <para>已完成 = 4</para>
/// <para>锁定 = 5</para>
/// <para>已取消 = 6</para>
/// <para>暂停 = 7</para>
/// <para>已退款 = 8</para>
/// <para>Unknow = 100</para>
/// <para>待验收 = 140</para>
/// <para>待核算 = 150</para>
/// </summary>
@ -96,14 +92,9 @@
= 3,
= 130,
= 4,
= 5,
= 6,
= 7,
退 = 8,
Unknow = 100,
= 140,
= 150
//待配置 = 101,
}
/// <summary>

Loading…
Cancel
Save