From 15c46a750d81bdca2c4ba0c78918459af62d06da Mon Sep 17 00:00:00 2001 From: jianghaiqing Date: Mon, 29 Jul 2024 16:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E8=88=B1=E7=9A=84?= =?UTF-8?q?=E6=A3=80=E7=B4=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookingOrder/BookingOrderService.cs | 87 +++++++++++++++++++ .../Dto/SeaExportOrderExtension.cs | 75 ++++++++++++++++ .../BookingOrder/IBookingOrderService.cs | 7 ++ 3 files changed, 169 insertions(+) create mode 100644 Myshipping.Application/Service/BookingOrder/Dto/SeaExportOrderExtension.cs diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index 24c5a77e..194c5836 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -13542,5 +13542,92 @@ namespace Myshipping.Application return rlt; } #endregion + + #region 检索订单信息 + /// + /// 检索订单信息(如果当前为拆、合票,内包含分票信息) + /// + /// 提单号 + /// + public async Task SearchOrderInfo(string mblNo) + { + SeaExportOrderExtension model = new SeaExportOrderExtension(); + + /* + 1、先用主提单号检索,如果没有取到结果,再用订舱编号检索。 + 2、是拆票的,找到主票和其他分票,并返回当前订单的完整详情。 + 3、是合票的,找到主票和其他分票,并返回当前订单的完整详情。 + */ + var orderList = await _rep.AsQueryable().Filter(null, true) + .Where(a => (a.MBLNO == mblNo || a.CUSTNO == mblNo) && a.IsDeleted == false).ToListAsync(); + + var currOrder = orderList.FirstOrDefault(a => a.MBLNO == mblNo); + + if (currOrder != null) + { + model.currOrder = currOrder.Adapt(); + model.splitOrMergeFlag = currOrder.SPLIT_OR_MERGE_FLAG.HasValue ? currOrder.SPLIT_OR_MERGE_FLAG.Value : 0; + + if (!currOrder.SPLIT_OR_MERGE_FLAG.HasValue || (currOrder.SPLIT_OR_MERGE_FLAG.HasValue && currOrder.SPLIT_OR_MERGE_FLAG.Value > 0)) + { + //拆票 + if (currOrder.SPLIT_OR_MERGE_FLAG.Value == 1) + { + //如果分单号和订舱编号不一致表示分票已经改成正式的提单号 + if (!currOrder.HBLNO.Equals(currOrder.CUSTNO)) + { + model.finalMBLNo = currOrder.HBLNO; + } + + model.orderNo = currOrder.CUSTNO; + + //找到所有相关的分票 + var list = await _rep.AsQueryable().Filter(null, true) + .Where(a => a.CUSTNO == mblNo && a.IsDeleted == false && a.Id != currOrder.Id).ToListAsync(); + + model.otherOrderList = list.Select(b => new SeaExportOrderExtensionSubInfo + { + Id = b.Id, + OrderNo = b.CUSTNO, + MBLNO = b.MBLNO, + HBLNO = b.HBLNO + }).ToList(); + } + else if (currOrder.SPLIT_OR_MERGE_FLAG.Value == 2) + { + //合票 + if (currOrder.CUSTNO.Equals(currOrder.HBLNO)) + { + //如果订舱编号和分单号一致,表示当前为主合票信息 + model.isMaster = true; + model.masterId = currOrder.Id; + model.orderNo = currOrder.MBLNO; + } + + //找到所有相关的分票 + var list = await _rep.AsQueryable().Filter(null, true) + .Where(a => a.HBLNO == currOrder.HBLNO && a.IsDeleted == false && a.Id != currOrder.Id).ToListAsync(); + + model.otherOrderList = list.Select(b => new SeaExportOrderExtensionSubInfo + { + Id = b.Id, + OrderNo = b.CUSTNO, + MBLNO = b.MBLNO, + HBLNO = b.HBLNO + }).ToList(); + + var masterOrder = model.otherOrderList.FirstOrDefault(x => x.OrderNo == x.HBLNO); + + if (masterOrder != null) + { + model.masterId = masterOrder.Id; + model.orderNo = masterOrder.OrderNo; + } + } + } + } + return model; + } + #endregion } } diff --git a/Myshipping.Application/Service/BookingOrder/Dto/SeaExportOrderExtension.cs b/Myshipping.Application/Service/BookingOrder/Dto/SeaExportOrderExtension.cs new file mode 100644 index 00000000..11bf234b --- /dev/null +++ b/Myshipping.Application/Service/BookingOrder/Dto/SeaExportOrderExtension.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Myshipping.Application.Service.BookingOrder.Dto +{ + /// + /// 检索海运订单 + /// + public class SeaExportOrderExtension + { + /// + /// 当前订单 + /// + public BookingOrderDto currOrder { get; set; } + + /// + /// 是否主票 true-主票;false-分票 + /// + public bool isMaster { get; set; } + + /// + /// 拆票或合票标志 1-拆票 2-合票 + /// + public int splitOrMergeFlag { get; set; } + + /// + /// 主票主键 + /// + public long masterId { get; set; } + + /// + /// 主票订舱编号 + /// + public string orderNo { get; set; } + + /// + /// 最终提单号(拆票后最终提单号) + /// + public string finalMBLNo { get; set; } + + /// + /// 分票订单信息 + /// + public List otherOrderList { get; set; } + } + + /// + /// 分单号详情 + /// + public class SeaExportOrderExtensionSubInfo + { + /// + /// 海运订单主键 + /// + public long Id { get; set; } + + /// + /// Desc:订舱编号 + /// + public string OrderNo { get; set; } + + /// + /// 主提单号 + /// + public string MBLNO { get; set; } + + /// + /// 分提单号 + /// + public string HBLNO { get; set; } + } +} diff --git a/Myshipping.Application/Service/BookingOrder/IBookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/IBookingOrderService.cs index 91a087cd..44013555 100644 --- a/Myshipping.Application/Service/BookingOrder/IBookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/IBookingOrderService.cs @@ -163,5 +163,12 @@ namespace Myshipping.Application /// 舱位拆票或者合票请求 /// 返回舱位拆票或者合票结果 Task GetBookingSlotMergeOrSplitResult(BookingSlotMergeOrSplitRequestDto model); + + /// + /// 检索订单信息(如果当前为拆、合票,内包含分票信息) + /// + /// 提单号 + /// + Task SearchOrderInfo(string mblNo); } } \ No newline at end of file