继续优化订单读取和展示

This commit is contained in:
wule committed 2026-10-17 09:37:11 +08:00
1 parent 1509e0a11d
commit 2f9c98b105
6 files changed
+1682 -1646

No files matched your search

@@ -1132,8 +1132,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}
bool isUpdate = false;
PddBuyerAfterSaleLiteInfo afterSale = null;
if (!lstPddBuyerAfterSaleInfoLite.Any(or => or.afterSalesId == af.afterSalesId))
PddBuyerAfterSaleLiteInfo afterSale = lstPddBuyerAfterSaleInfoLite.ToList().FirstOrDefault(aft => aft.afterSalesId == af.afterSalesId);
if (afterSale == null)
{
isUpdate = true;
afterSale = af;
@@ -1141,7 +1141,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}
else
{
afterSale = lstPddBuyerAfterSaleInfoLite.FirstOrDefault(aft => aft.afterSalesId == af.afterSalesId);
var afterSaleTmp = JsonHelper.DeserializeJsonToObject<PddBuyerAfterSaleLiteInfo>(JsonHelper.SerializeObject(afterSale));
//afterSaleTmp.sendStatus = ""; // 比较订单变化,如果有变化,才写库或者处理(设置为空强制变化)
afterSaleTmp.AfterSaleStatusOldStr = null; // 设置null,比较订单变化,如果有变化,才写
File diff suppressed because it is too large. Load diff
@@ -355,7 +355,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
return;
}
if (!GetIsAbnormalOrderRebuy(orderItem) && GlobalConfig.lstOrder.Any(o => o.orderItems
if (!orderItem.GetIsAbnormalOrderRebuy() && GlobalConfig.lstOrder.Any(o => o.orderItems
.Any(oi => oi.ItemTransitOrder?.order_no == orderItem.order_id && oi.ItemTransitOrder?.order_sku_id == orderItem.sku_id)))
{
OrderListCtrl.InitOrderItemObservableProp(orderItem);
@@ -795,25 +795,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}));
});
// 作废重拍
if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null)
{
btnVoidTransitOrder.Visibility = Visibility.Visible;
}
else
{
btnVoidTransitOrder.Visibility = Visibility.Collapsed;
}
// 异常重拍
if (GetIsAbnormalOrderRebuy(order_item))
{
btnAbnormalOrderRebuy.Visibility = Visibility.Visible;
}
else
{
btnAbnormalOrderRebuy.Visibility = Visibility.Collapsed;
}
// 待采购不显示所有采购信息状态(否则会显示作废订单状态)
if (GlobalConfig.OrderTabHeaderStr.StartsWith("待采购"))
@@ -831,30 +812,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
}
/// <summary>
/// 判断中转仓订单是否可以异常重拍
/// </summary>
/// <param name="order_item"></param>
/// <returns></returns>
static bool GetIsAbnormalOrderRebuy(oms_wei_order_item_info order_item)
{
// 不是异常单的不可异常重拍
if (order_item?.ItemOrder?.IsAbnormal != true)
return false;
// 买手未退款的,中转正式取号以后的,不可异常重拍
if (order_item.ItemTransitOrder?.refund_status != "买手退款成功" ||
order_item.WarehouseWaybillStatusStr == "中转已取号" || order_item.WarehouseWaybillStatusStr == "中转已入库" || order_item.WarehouseWaybillStatusStr == "中转已出库")
return false;
// 已正式取号的,不可异常重拍
if (order_item.ItemTransitOrder?.pre_allocated_order_no == 1 || order_item.ItemTransitOrder?.pre_allocated_order_no == 3)
return false;
// 仓库异常的异常单不可异常重拍
List<string> rawMsgKeyWords = new List<string> { "取号异常", "无法调用" };
if (rawMsgKeyWords.Any(k => (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)
return false;
return true;
}
private void TransitOrderBuy_Click(object sender, MouseButtonEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
+112 -116
View File
@@ -74,74 +74,35 @@ namespace AllBase.Model.DBModel
/// 售后订单(不含售后关闭) -- 改为售后完成单 260726
/// </summary>
public bool IsRefund
{
get
{
// return refundItems?.Count > 0 && refundItems.Any(r => r.status != "USER_CANCELD");
if (!orderItems.Any(oi => oi.refund_status > 1))
return false;
if (IsEmergency)
return false;
return true;
}
set { }
}
{
get { return this.GetValue(x => x.IsRefund); }
set { this.SetValue(x => x.IsRefund, value); }
}
/// <summary>
/// 紧急订单
/// </summary>
public bool IsEmergency
{
get
{
if (this.order_id == "3737858759084367872")
{
}
// 微信订单退货中
if (orderItems.Any(oi => oi.refund_status == 2 || oi.refund_status == 3))
{
return true;
}
// 微信订单退款中或退款成功,但是买手订单未完成退款
if (orderItems.Any(oi => oi.refund_status > 1 && oi.ItemTransitOrders.Count > 0 && oi.ItemTransitOrders.Any(t => !t.refund_status.Contains("退款成功"))))
{
return true;
}
if (orderItems.Any(oi => oi.refund_status > 1) && !out_order_no.IsNullOrEmpty() && this.out_after_sale_status != "退款成功")
{
return true;
}
return false;
}
set { }
{
get { return this.GetValue(x => x.IsEmergency); }
set { this.SetValue(x => x.IsEmergency, value); }
}
public bool IsEmergencyDistribReturnOrder
{
get
{
return IsEmergency && IsDistribReturnOrder;
}
set { }
get { return this.GetValue(x => x.IsEmergencyDistribReturnOrder); }
set { this.SetValue(x => x.IsEmergencyDistribReturnOrder, value); }
}
public bool IsEmergencyManualReturnOrder
{
get
{
return IsEmergency && !IsDistribReturnOrder;
}
set { }
get { return this.GetValue(x => x.IsEmergencyManualReturnOrder); }
set { this.SetValue(x => x.IsEmergencyManualReturnOrder, value); }
}
public bool IsDistribReturnOrder
{
get
{
//return this.orderItems.All(oi => !string.IsNullOrEmpty(oi.ItemRefund?.return_waybill_id)) && this.orderItems.All(oi => oi.ItemRefund?.return_detail == GlobalConfig.TransitReturnOrderReturnAddress);
//return this.orderItems.All(oi => oi.ItemRefund?.return_detail == GlobalConfig.TransitReturnOrderReturnAddress);
return this.orderItems.All(oi => oi.ItemRefund?.return_detail?.ToUpper().Contains(GlobalConfig.TransitReturnOrderReturnAddressLite) == true);
}
set { }
get { return this.GetValue(x => x.IsDistribReturnOrder); }
set { this.SetValue(x => x.IsDistribReturnOrder, value); }
}
/// <summary>
/// 异常单(买手异常退货)异常需重拍
@@ -219,42 +180,49 @@ namespace AllBase.Model.DBModel
/// <summary>
/// 订单发货完成时间
/// </summary>
public string ship_done_time_str
{
get { return BaseClass.StampToDateTime(this.ship_done_time.ParseToInt()).ToString("yy-MM-dd HH:mm:ss"); }
set { }
}
public string ShipDoneTimeStr
{
get { return this.GetValue(x => x.ShipDoneTimeStr); }
set { this.SetValue(x => x.ShipDoneTimeStr, value); }
}
/// <summary>
/// 订单发货完成时间可见
/// </summary>
public Visibility ship_done_time_visibility
{
get { return this.ship_done_time.ParseToInt() > 0 ? Visibility.Visible : Visibility.Collapsed; }
set { }
}
public Visibility ShipDoneTimeVisibility
{
get { return this.GetValue(x => x.ShipDoneTimeVisibility); }
set { this.SetValue(x => x.ShipDoneTimeVisibility, value); }
}
void SetShipDoneTimeStr()
{
ShipDoneTimeStr = BaseClass.StampToDateTime(this.ship_done_time.ParseToInt()).ToString("yy-MM-dd HH:mm:ss");
ShipDoneTimeVisibility = this.ship_done_time.ParseToInt() > 0 ? Visibility.Visible : Visibility.Collapsed;
}
/// <summary>
/// 订单总状态文本
/// </summary>
public string DeliveryDeadlineStatusStr
/// <summary>
/// 订单总状态文本
/// </summary>
public string DeliveryDeadlineStatusStr
{
get
get { return this.GetValue(x => x.DeliveryDeadlineStatusStr); }
set { this.SetValue(x => x.DeliveryDeadlineStatusStr, value); }
}
void SetDeliveryDeadlineStatusStr()
{
if (this.refundItems.Any(r => "商家受理中,待买家退货,待商家收货,平台退款中,待用户确认,待用户处理商家协商,待用户处理商家代发起的售后申请,物流拦截中".Contains(r.RefundStatusStr)))
DeliveryDeadlineStatusStr = "退款中";
else if (this.refundItems.Any(r => r.RefundStatusStr == "退款完成" || r.RefundStatusStr == "退货退款完成"))
DeliveryDeadlineStatusStr = "退款完成";
// 用户取消申请
else if ((GlobalConfig.OrderTabHeaderStr.StartsWith("售后完成单") || GlobalConfig.OrderTabHeaderStr.StartsWith("需处理售后单") || GlobalConfig.OrderTabHeaderStr.StartsWith("退货仓自动售后单")) &&
this.refundItems.Any(r => !r.RefundStatusStr.IsNullOrEmpty()))
DeliveryDeadlineStatusStr = this.refundItems.FirstOrDefault(r => !r.RefundStatusStr.IsNullOrEmpty()).RefundStatusStr;
else if (this.status == 20 || this.status == 21)
{
if (this.refundItems.Any(r => "商家受理中,待买家退货,待商家收货,平台退款中,待用户确认,待用户处理商家协商,待用户处理商家代发起的售后申请,物流拦截中".Contains(r.RefundStatusStr)))
return "退款中";
else if (this.refundItems.Any(r => r.RefundStatusStr == "退款完成" || r.RefundStatusStr == "退货退款完成"))
return "退款完成";
// 用户取消申请
else if ((GlobalConfig.OrderTabHeaderStr.StartsWith("售后完成单") || GlobalConfig.OrderTabHeaderStr.StartsWith("需处理售后单") || GlobalConfig.OrderTabHeaderStr.StartsWith("退货仓自动售后单")) &&
this.refundItems.Any(r => !r.RefundStatusStr.IsNullOrEmpty()))
return this.refundItems.FirstOrDefault(r => !r.RefundStatusStr.IsNullOrEmpty()).RefundStatusStr;
if (this.status == 20 || this.status == 21)
{
return "剩余";
}
return "剩余";
DeliveryDeadlineStatusStr = "剩余";
}
set { }
else
DeliveryDeadlineStatusStr = "剩余";
}
/// <summary>
@@ -332,26 +300,24 @@ namespace AllBase.Model.DBModel
}
public string OutExpressNoStr
{
get
{
if (order_id == "3738634560083228416")
{
}
if (this.out_shipped == 2 && !string.IsNullOrEmpty(this.out_express_no))
return this.out_express_no + " ×";
return this.out_express_no;
}
set { }
}
{
get { return this.GetValue(x => x.OutExpressNoStr); }
set { this.SetValue(x => x.OutExpressNoStr, value); }
}
public SolidColorBrush OutExpressNoBrush
{
get
{
return OutExpressNoStr.EndsWith(" ×") ? GlobalConfig.RedTextBrush : GlobalConfig.BlackBrush;
}
}
{
get { return this.GetValue(x => x.OutExpressNoBrush); }
set { this.SetValue(x => x.OutExpressNoBrush, value); }
}
void SetOutExpressNo()
{
if (this.out_shipped == 2 && !string.IsNullOrEmpty(this.out_express_no))
OutExpressNoStr = this.out_express_no + " ×";
else
OutExpressNoStr = this.out_express_no;
OutExpressNoBrush = OutExpressNoStr.EndsWith(" ×") ? GlobalConfig.RedTextBrush : GlobalConfig.BlackBrush;
}
public string GiftOrderStatusStr
{
@@ -744,11 +710,11 @@ namespace AllBase.Model.DBModel
IsWaitBuy = GetIsWaitBuy();
IsWaitSend = GetIsWaitSend();
IsWaitReceive = GetIsWaitReceive();
if (order_id == "3739089000222605568")
{
}
IsRefund = GetIsRefund();
IsEmergency = GetIsEmergency();
IsDistribReturnOrder = GetIsDistribReturnOrder();
IsEmergencyDistribReturnOrder = IsEmergency && IsDistribReturnOrder;
IsEmergencyManualReturnOrder = IsEmergency && !IsDistribReturnOrder;
IsAbnormal = GetIsAbnormal();
if (IsWaitBuy/* || IsWaitSend*/)
@@ -760,7 +726,11 @@ namespace AllBase.Model.DBModel
IsShowTransitExtraPackagesBtn = false;
else
IsShowTransitExtraPackagesBtn = true;
}
SetDeliveryDeadlineStatusStr();
SetOutExpressNo();
SetShipDoneTimeStr();
}
public bool GetIsWaitBuy()
{
@@ -817,11 +787,6 @@ namespace AllBase.Model.DBModel
private bool GetIsWaitReceive()
{
if (order_id == "3738622310043515392")
{
}
if (refundItems?.Any(r => r.IsRefund) == true)
return false;
if (orderItems?.Any(oi => oi.refund_status > 1) == true)
@@ -833,11 +798,6 @@ namespace AllBase.Model.DBModel
public bool GetIsAbnormal()
{
if (order_id == "3739720775494980096")
{
}
// 三退或者两退,为退款完成单
//if (orderItems.All(oi => (oi.refund_status == 4 || oi.refund_status == 11) && (oi.ItemTransitOrder != null || string.IsNullOrWhiteSpace(out_order_no)) &&
// (oi.ItemTransitOrder == null || oi.ItemTransitOrder?.refund_status == "买手退款成功") && (string.IsNullOrWhiteSpace(out_order_no) || out_after_sale_status == "退款成功")))
@@ -870,5 +830,41 @@ namespace AllBase.Model.DBModel
return true;
return false;
}
public bool GetIsRefund()
{
// return refundItems?.Count > 0 && refundItems.Any(r => r.status != "USER_CANCELD");
if (!orderItems.Any(oi => oi.refund_status > 1))
return false;
if (GetIsEmergency())
return false;
return true;
}
public bool GetIsEmergency()
{
// 微信订单退货中
if (orderItems.Any(oi => oi.refund_status == 2 || oi.refund_status == 3))
{
return true;
}
// 微信订单退款中或退款成功,但是买手订单未完成退款
if (orderItems.Any(oi => oi.refund_status > 1 && oi.ItemTransitOrders.Count > 0 && oi.ItemTransitOrders.Any(t => !t.refund_status.Contains("退款成功"))))
{
return true;
}
if (orderItems.Any(oi => oi.refund_status > 1) && !out_order_no.IsNullOrEmpty() && this.out_after_sale_status != "退款成功")
{
return true;
}
return false;
}
public bool GetIsDistribReturnOrder()
{
//return this.orderItems.All(oi => !string.IsNullOrEmpty(oi.ItemRefund?.return_waybill_id)) && this.orderItems.All(oi => oi.ItemRefund?.return_detail == GlobalConfig.TransitReturnOrderReturnAddress);
//return this.orderItems.All(oi => oi.ItemRefund?.return_detail == GlobalConfig.TransitReturnOrderReturnAddress);
return this.orderItems.All(oi => oi.ItemRefund?.return_detail?.ToUpper().Contains(GlobalConfig.TransitReturnOrderReturnAddressLite) == true);
}
}
}
@@ -115,10 +115,16 @@ namespace AllBase.Model.DBModel
public string ShopWaybillExceptionStr
{
get { return this.GetValue(x => x.ShopWaybillExceptionStr); }
set { this.SetValue(x => x.ShopWaybillExceptionStr, value); }
set { this.SetValue(x => x.ShopWaybillExceptionStr, value); ShopWaybillExceptionStrVisibility = value.IsNullOrEmpty() ? Visibility.Collapsed : Visibility.Visible; }
}
public Visibility ShopWaybillExceptionStrVisibility
{
get { return this.GetValue(x => x.ShopWaybillExceptionStrVisibility); }
set { this.SetValue(x => x.ShopWaybillExceptionStrVisibility, value); }
}
public oms_wei_order_info ItemOrder
public oms_wei_order_info ItemOrder
{
get { return this.GetValue(x => x.ItemOrder); }
set { this.SetValue(x => x.ItemOrder, value); }
@@ -166,12 +172,17 @@ namespace AllBase.Model.DBModel
public string RefundResultStr
{
get { return this.GetValue(x => x.RefundResultStr); }
set { this.SetValue(x => x.RefundResultStr, value); }
set { this.SetValue(x => x.RefundResultStr, value); RefundResultStrVisibility = value.IsNullOrEmpty() ? Visibility.Collapsed : Visibility.Visible; }
}
/// <summary>
/// 微信小店用户退款快递单号
/// </summary>
public string ReturnWaybillIdStr
public Visibility RefundResultStrVisibility
{
get { return this.GetValue(x => x.RefundResultStrVisibility); }
set { this.SetValue(x => x.RefundResultStrVisibility, value); }
}
/// <summary>
/// 微信小店用户退款快递单号
/// </summary>
public string ReturnWaybillIdStr
{
get { return this.GetValue(x => x.ReturnWaybillIdStr); }
set { this.SetValue(x => x.ReturnWaybillIdStr, value); }
@@ -1310,14 +1321,30 @@ namespace AllBase.Model.DBModel
public string RefundStatusStr
{
get { return this.GetValue(x => x.RefundStatusStr); }
set { this.SetValue(x => x.RefundStatusStr, value); }
set { this.SetValue(x => x.RefundStatusStr, value); RefundStatusStrVisibility = value.IsNullOrEmpty() ? Visibility.Collapsed : Visibility.Visible; }
}
public Visibility RefundStatusStrVisibility
{
get { return this.GetValue(x => x.RefundStatusStrVisibility); }
set { this.SetValue(x => x.RefundStatusStrVisibility, value); }
}
public Visibility BtnVoidTransitOrderVisibility
{
get { return this.GetValue(x => x.BtnVoidTransitOrderVisibility); }
set { this.SetValue(x => x.BtnVoidTransitOrderVisibility, value); }
}
public Visibility BtnAbnormalOrderRebuyVisibility
{
get { return this.GetValue(x => x.BtnAbnormalOrderRebuyVisibility); }
set { this.SetValue(x => x.BtnAbnormalOrderRebuyVisibility, value); }
}
/// <summary>
/// 订单商品表数据库id
/// </summary>
public long id { get; set; }
/// <summary>
/// 订单商品表数据库id
/// </summary>
public long id { get; set; }
public long shop_id { get; set; }
/// <summary>
/// 商户ID
@@ -1524,10 +1551,10 @@ namespace AllBase.Model.DBModel
LatestDirectEWaybill = null;
}
public void UpdateOrderItemBuyButton()
{
var order_item = this;
order_item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.shop_id.ParseToString());
public void UpdateOrderItemBuyButton()
{
var order_item = this;
order_item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.shop_id.ParseToString());
// 关联商品sku
if (GlobalConfig.CurrentBuyPlatform == "pdd")
@@ -1597,6 +1624,44 @@ namespace AllBase.Model.DBModel
order_item.BuyGoodsBtnBackColor = GlobalConfig.PurpleBrush35;
order_item.BuyGoodsBtnColor = GlobalConfig.PurpleBrush;
}
}
}
// 作废重拍
if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null)
BtnVoidTransitOrderVisibility = Visibility.Visible;
else
BtnVoidTransitOrderVisibility = Visibility.Collapsed;
// 异常重拍
if (order_item.GetIsAbnormalOrderRebuy())
BtnAbnormalOrderRebuyVisibility = Visibility.Visible;
else
BtnAbnormalOrderRebuyVisibility = Visibility.Collapsed;
}
/// <summary>
/// 判断中转仓订单是否可以异常重拍
/// </summary>
/// <param name="order_item"></param>
/// <returns></returns>
public bool GetIsAbnormalOrderRebuy()
{
var order_item = this;
// 不是异常单的不可异常重拍
if (order_item?.ItemOrder?.IsAbnormal != true)
return false;
// 买手未退款的,中转正式取号以后的,不可异常重拍
if (order_item.ItemTransitOrder?.refund_status != "买手退款成功" ||
order_item.WarehouseWaybillStatusStr == "中转已取号" || order_item.WarehouseWaybillStatusStr == "中转已入库" || order_item.WarehouseWaybillStatusStr == "中转已出库")
return false;
// 已正式取号的,不可异常重拍
if (order_item.ItemTransitOrder?.pre_allocated_order_no == 1 || order_item.ItemTransitOrder?.pre_allocated_order_no == 3)
return false;
// 仓库异常的异常单不可异常重拍
List<string> rawMsgKeyWords = new List<string> { "取号异常", "无法调用" };
if (rawMsgKeyWords.Any(k => (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)
return false;
return true;
}
}
}
+31 -12
View File
@@ -1,10 +1,12 @@
using AllBase.Helper;
using AllBase.Model.MvvmBaseClasses;
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
namespace AllBase.Model.DBModel
@@ -14,9 +16,15 @@ namespace AllBase.Model.DBModel
public string RefundStatusStr
{
get { return this.GetValue(x => x.status); }
set { this.SetValue(x => x.status, value); }
set { this.SetValue(x => x.status, value); RefundStatusStrVisibility = RefundStatusStr.IsNullOrEmpty() ? Visibility.Collapsed : Visibility.Visible; }
}
public bool IsRefund
public Visibility RefundStatusStrVisibility
{
get { return this.GetValue(x => x.RefundStatusStrVisibility); }
set { this.SetValue(x => x.RefundStatusStrVisibility, value); }
}
public bool IsRefund
{
get { return this.GetValue(x => x.IsRefund); }
set { this.SetValue(x => x.IsRefund, value); }
@@ -32,17 +40,20 @@ namespace AllBase.Model.DBModel
/// <summary>
/// 售后原因文字
/// </summary>
public string reasonTextStr
{
get
{
return string.IsNullOrEmpty(reason_text) ? string.Empty : "售后原因:" + reason_text;
}
set { }
}
public string ReasonTextStr
{
get { return this.GetValue(x => x.ReasonTextStr); }
set { this.SetValue(x => x.ReasonTextStr, value); ReasonTextStrVisibility = value.IsNullOrEmpty() ? Visibility.Collapsed : Visibility.Visible; }
}
public Visibility ReasonTextStrVisibility
{
get { return this.GetValue(x => x.ReasonTextStrVisibility); }
set { this.SetValue(x => x.ReasonTextStrVisibility, value); }
}
public long id { get; set; }
public long id { get; set; }
public long? shop_id { get; set; }
public string after_sale_order_id { get; set; }
/// <summary>
@@ -183,7 +194,15 @@ namespace AllBase.Model.DBModel
/// <summary>
/// 退款原因解释
/// </summary>
public string reason_text { get; set; }
public string reason_text
{
get { return this.GetValue(x => x.reason_text); }
set
{
this.SetValue(x => x.reason_text, value);
ReasonTextStr = string.IsNullOrEmpty(reason_text) ? string.Empty : "售后原因:" + reason_text;
}
}
/// <summary>
/// 售后类型。REFUND:退款;RETURN:退货退款。
/// </summary>