From 3aa122263ef76188c437002a8f165d9136f451b4 Mon Sep 17 00:00:00 2001 From: whm Date: Wed, 27 Dec 2023 14:26:54 +0800 Subject: [PATCH] list --- .../BookingOrder/BookingOrderService.cs | 659 +++++++++++++++++- .../BookingOrder/Dto/BookingOrderInput.cs | 8 + Myshipping.Web.Core/dbsettings.json | 2 +- 3 files changed, 651 insertions(+), 18 deletions(-) diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index 051f4f9d..52db4443 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -223,11 +223,11 @@ namespace Myshipping.Application [HttpPost("/BookingOrder/PageData")] public async Task PageData(BookingOrderInput input) { - var traceTime = false; + var reqId = Guid.NewGuid().ToString(); //请求id,跟踪请求耗时 var ticks = DateTime.Now; - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { - _logger.LogInformation($"PageData Stage 0 "); + _logger.LogWarning($"PageData {reqId} Stage 0 "); } //获取菜单列表权限 List userlist = await _right.GetDataScopeList(MenuConst.MenuBookingOrder); @@ -242,11 +242,11 @@ namespace Myshipping.Application var etoday = DateTime.Now.AddDays(30); //List userlist = await DataFilterExtensions.GetDataScopeIdList(); - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 1 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 1 {et.TotalMilliseconds}"); } //按部门查询 @@ -264,11 +264,11 @@ namespace Myshipping.Application opUserList = tmpList.Select(x => x.ToString()).ToList(); } - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 2 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 2 {et.TotalMilliseconds}"); } #region @@ -458,20 +458,20 @@ namespace Myshipping.Application var entities = await query.ToPagedListAsync(input.PageNo, input.PageSize); //var sql = query.ToSqlString(); - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 3 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 3 {et.TotalMilliseconds}"); } var list = entities.Adapt>(); - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 4 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 4 {et.TotalMilliseconds}"); } var bookingidlist = list.Items.Select(x => x.Id).ToList(); @@ -550,11 +550,11 @@ namespace Myshipping.Application } - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 5 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 5 {et.TotalMilliseconds}"); } //提箱返场 var statusloglist = _repStatuslog.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains((long)x.BookingId) && (x.Status == "提箱" || x.Status == "返场") && x.IsDeleted == false).ToList(); @@ -568,11 +568,11 @@ namespace Myshipping.Application var bookingremarkList = _bookingremark.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains(x.PId)).ToList(); - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 6 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageData {reqId} Stage 6 {et.TotalMilliseconds}"); } foreach (var item in list.Items) @@ -793,11 +793,636 @@ namespace Myshipping.Application } - if (traceTime) + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageData {reqId} Stage 7 {et.TotalMilliseconds}"); + } + + return list; + } + + /// + /// 分页查询订舱主表(新) + /// + /// + /// + [HttpPost("/BookingOrder/PageDataNew")] + public async Task PageDataNew(BookingOrderInputNew input) + { + var reqId = Guid.NewGuid().ToString(); //请求id,跟踪请求耗时 + var ticks = DateTime.Now; + if (!string.IsNullOrEmpty(reqId)) + { + _logger.LogWarning($"PageDataNew {reqId} Stage 0 "); + } + //获取菜单列表权限 + List userlist = await _right.GetDataScopeList(MenuConst.MenuBookingOrder); + List userlistString = userlist?.Select(u => u.ToString())?.ToList(); + List pidlist = new List(); + if (!string.IsNullOrWhiteSpace(input.SEALNO) || !string.IsNullOrWhiteSpace(input.CNTRNO)) + { + pidlist = await _repCtn.AsQueryable().WhereIF(!string.IsNullOrWhiteSpace(input.SEALNO), x => x.SEALNO.StartsWith(input.SEALNO)).WhereIF(!string.IsNullOrWhiteSpace(input.CNTRNO), x => x.CNTRNO.StartsWith(input.CNTRNO)).Select(x => x.BILLID).ToListAsync(); + } + //默认首次查询取开船日期范围 + var ftoday = DateTime.Now.AddDays(-15); + var etoday = DateTime.Now.AddDays(30); + //List userlist = await DataFilterExtensions.GetDataScopeIdList(); + + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 1 {et.TotalMilliseconds}"); + } + + //按部门查询 + List saleUserList = null; + List opUserList = null; + if (input.OrgSale.HasValue) + { + var tmpList = await _orgService.GetUserIdListInOrg(input.OrgSale.Value); + saleUserList = tmpList.Select(x => x.ToString()).ToList(); + } + + if (input.OrgOp.HasValue) + { + var tmpList = await _orgService.GetUserIdListInOrg(input.OrgOp.Value); + opUserList = tmpList.Select(x => x.ToString()).ToList(); + } + + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 2 {et.TotalMilliseconds}"); + } + + #region + var query = _rep.AsQueryable().Filter(null, true).Where(x => x.TenantId == UserManager.TENANT_ID) + .WhereIF(!input.ISDel, x => x.IsDeleted == false) + .WhereIF(input.ISDel, x => x.IsDeleted == true) + .WhereIF(input.firstFlag, x => (x.ETD <= etoday && x.ETD >= ftoday || x.ETD == null) && (x.CreatedUserId == UserManager.UserId || x.OPID == UserManager.UserId.ToString() || x.DOCID == UserManager.UserId.ToString() || x.ROUTEID == UserManager.UserId.ToString() || x.LineManageID == UserManager.UserId.ToString() || x.CUSTSERVICEID == UserManager.UserId.ToString() || x.SALEID == UserManager.UserId.ToString())) //首次加载数据:ETD前后15天,且创建人、操作是当前人 + .Where(x => x.ParentId == 0 || x.ParentId == null) //台账只查询主单!! + .WhereIF(input.Id != 0, x => x.Id == input.Id) + .WhereIF(pidlist != null && pidlist.Count > 0, x => pidlist.Contains(x.Id)) + .WhereIF(!string.IsNullOrWhiteSpace(input.BSNO), u => u.BSNO.Contains(input.BSNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.BSSTATUS), u => u.BSSTATUS == input.BSSTATUS) + .WhereIF(input.BBSDATE != null, u => u.BSDATE >= input.BBSDATE) + .WhereIF(input.EBSDATE != null, u => u.BSDATE <= input.EBSDATE) + .WhereIF(!string.IsNullOrWhiteSpace(input.MBLNO) && !input.MBLNO.Contains(','), u => u.MBLNO.Contains(input.MBLNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.TMBLNO) && !input.TMBLNO.Contains(','), u => u.TMBLNO.Contains(input.TMBLNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.HBLNO) && !input.HBLNO.Contains(','), u => u.HBLNO.Contains(input.HBLNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.MBLNO) && input.MBLNO.Contains(','), u => input.MBLNO.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Contains(u.MBLNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.HBLNO) && input.HBLNO.Contains(','), u => input.HBLNO.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Contains(u.HBLNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.BOOKINGNO), u => u.BOOKINGNO.Contains(input.BOOKINGNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONTRACTNO), u => u.CONTRACTNO.Contains(input.CONTRACTNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SERVICECONTRACTNO), u => u.SERVICECONTRACTNO.Contains(input.SERVICECONTRACTNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPER), u => u.SHIPPER.Contains(input.SHIPPER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEE), u => u.CONSIGNEE.Contains(input.CONSIGNEE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTY), u => u.NOTIFYPARTY.Contains(input.NOTIFYPARTY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTY2), u => u.NOTIFYPARTY2.Contains(input.NOTIFYPARTY2)) + .WhereIF(!string.IsNullOrWhiteSpace(input.YARDID), u => u.YARDID == input.YARDID) + .WhereIF(!string.IsNullOrWhiteSpace(input.VESSELID), u => u.VESSELID.Contains(input.VESSELID)) + .WhereIF(!string.IsNullOrWhiteSpace(input.VESSEL), u => u.VESSEL.ToLower().Contains(input.VESSEL.ToLower())) + .WhereIF(!string.IsNullOrWhiteSpace(input.VOYNO), u => u.VOYNO.Contains(input.VOYNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.VOYNOINNER), u => u.VOYNOINNER.Contains(input.VOYNOINNER)) + .WhereIF(input.BETD != null, u => u.ETD >= input.BETD) + .WhereIF(input.EETD != null, u => u.ETD < input.EETD.Value.AddDays(1)) + .WhereIF(input.BATD != null, u => u.ATD >= input.BATD) + .WhereIF(input.EATD != null, u => u.ATD < input.EATD.Value.AddDays(1)) + .WhereIF(input.BCLOSINGDATE != null, u => u.CLOSINGDATE >= input.BCLOSINGDATE) + .WhereIF(input.ECLOSINGDATE != null, u => u.CLOSINGDATE <= input.ECLOSINGDATE) + .WhereIF(input.BCLOSEDOCDATE != null, u => u.CLOSEDOCDATE >= input.BCLOSEDOCDATE) + .WhereIF(input.ECLOSEDOCDATE != null, u => u.CLOSEDOCDATE <= input.ECLOSEDOCDATE) + .WhereIF(input.BCLOSEVGMDATE != null, u => u.CLOSEVGMDATE >= input.BCLOSEVGMDATE) + .WhereIF(input.ECLOSEVGMDATE != null, u => u.CLOSEVGMDATE <= input.ECLOSEVGMDATE) + .WhereIF(input.BETA != null, u => u.ETA >= input.BETA) + .WhereIF(input.EETA != null, u => u.ETA < input.EETA.Value.AddDays(1)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PLACERECEIPT), u => u.PLACERECEIPT.Contains(input.PLACERECEIPT)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PORTLOAD), u => u.PORTLOAD.Contains(input.PORTLOAD)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PORTLOADID), u => u.PORTLOADID == input.PORTLOADID) + .WhereIF(!string.IsNullOrWhiteSpace(input.PORTDISCHARGEID), u => u.PORTDISCHARGEID == input.PORTDISCHARGEID) + .WhereIF(!string.IsNullOrWhiteSpace(input.PORTDISCHARGE), u => u.PORTDISCHARGE.Contains(input.PORTDISCHARGE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PLACEDELIVERY), u => u.PLACEDELIVERY.Contains(input.PLACEDELIVERY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PLACEDELIVERYID), u => u.PLACEDELIVERYID == input.PLACEDELIVERYID) + .WhereIF(!string.IsNullOrWhiteSpace(input.DESTINATION), u => u.DESTINATION.Contains(input.DESTINATION)) + .WhereIF(!string.IsNullOrWhiteSpace(input.DESTINATIONID), u => u.DESTINATIONID == input.DESTINATIONID) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOBILL), u => u.NOBILL == input.NOBILL) + .WhereIF(!string.IsNullOrWhiteSpace(input.COPYNOBILLL), u => u.COPYNOBILL == input.COPYNOBILLL) + .WhereIF(!string.IsNullOrWhiteSpace(input.ISSUETYPE), u => u.ISSUETYPE == input.ISSUETYPE) + .WhereIF(input.BISSUEDATE != null, u => u.ISSUEDATE >= input.BISSUEDATE) + .WhereIF(input.EISSUEDATE != null, u => u.ISSUEDATE < input.EISSUEDATE.Value.AddDays(1)) + .WhereIF(!string.IsNullOrWhiteSpace(input.ISSUEPLACE), u => u.ISSUEPLACE.Contains(input.ISSUEPLACE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.ISSUEPLACEID), u => u.ISSUEPLACEID == input.ISSUEPLACEID) + .WhereIF(!string.IsNullOrWhiteSpace(input.BLFRT), u => u.BLFRT == input.BLFRT) + .WhereIF(!string.IsNullOrWhiteSpace(input.PREPARDATID), u => u.PREPARDATID == input.PREPARDATID) + .WhereIF(!string.IsNullOrWhiteSpace(input.PREPARDAT), u => u.PREPARDAT == input.PREPARDAT) + .WhereIF(!string.IsNullOrWhiteSpace(input.PAYABLEAT), u => u.PAYABLEAT.Contains(input.PAYABLEAT)) + .WhereIF(!string.IsNullOrWhiteSpace(input.PAYABLEATID), u => u.PAYABLEATID == input.PAYABLEATID) + .WhereIF(!string.IsNullOrWhiteSpace(input.SERVICE), u => u.SERVICE.Contains(input.SERVICE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.MARKS), u => u.MARKS.Contains(input.MARKS)) + .WhereIF(!string.IsNullOrWhiteSpace(input.HSCODE), u => u.HSCODE.Contains(input.HSCODE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.DESCRIPTION), u => u.DESCRIPTION.Contains(input.DESCRIPTION)) + .WhereIF(!string.IsNullOrWhiteSpace(input.KINDPKGS), u => u.KINDPKGS == input.KINDPKGS) + .WhereIF(!string.IsNullOrWhiteSpace(input.CNTRTOTAL), u => u.CNTRTOTAL.StartsWith(input.CNTRTOTAL)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CARRIERID), u => u.CARRIERID == input.CARRIERID) + .WhereIF(!string.IsNullOrWhiteSpace(input.CARRIER), u => u.CARRIER.Contains(input.CARRIER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CARGOID), u => u.CARGOID == input.CARGOID) + .WhereIF(!string.IsNullOrWhiteSpace(input.DCLASS), u => u.DCLASS == input.DCLASS) + .WhereIF(!string.IsNullOrWhiteSpace(input.DUNNO), u => u.DUNNO == input.DUNNO) + .WhereIF(!string.IsNullOrWhiteSpace(input.DPAGE), u => u.DPAGE == input.DPAGE) + .WhereIF(!string.IsNullOrWhiteSpace(input.DLABEL), u => u.DLABEL == input.DLABEL) + .WhereIF(!string.IsNullOrWhiteSpace(input.LINKMAN), u => u.LINKMAN == input.LINKMAN) + .WhereIF(!string.IsNullOrWhiteSpace(input.TEMPID), u => u.TEMPID == input.TEMPID) + .WhereIF(!string.IsNullOrWhiteSpace(input.TEMPSET), u => u.TEMPSET == input.TEMPSET) + .WhereIF(!string.IsNullOrWhiteSpace(input.REEFERF), u => u.REEFERF == input.REEFERF) + .WhereIF(!string.IsNullOrWhiteSpace(input.HUMIDITY), u => u.HUMIDITY == input.HUMIDITY) + .WhereIF(!string.IsNullOrWhiteSpace(input.TEMPMIN), u => u.TEMPMIN == input.TEMPMIN) + .WhereIF(!string.IsNullOrWhiteSpace(input.TEMPMAX), u => u.TEMPMAX == input.TEMPMAX) + .WhereIF(input.ISCONTAINERSOC != null, u => u.ISCONTAINERSOC == input.ISCONTAINERSOC) + .WhereIF(!string.IsNullOrWhiteSpace(input.SOREMARK), u => u.SOREMARK.Contains(input.SOREMARK)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SIREMARK), u => u.SIREMARK.Contains(input.SIREMARK)) + .WhereIF(!string.IsNullOrWhiteSpace(input.YARDREMARK), u => u.YARDREMARK.Contains(input.YARDREMARK)) + .WhereIF(!string.IsNullOrWhiteSpace(input.COMPID), u => u.COMPID == input.COMPID) + .WhereIF(!string.IsNullOrWhiteSpace(input.COMPNAME), u => u.COMPNAME.Contains(input.COMPNAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERNAME), u => u.SHIPPERNAME.Contains(input.SHIPPERNAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERCITY), u => u.SHIPPERCITY.Contains(input.SHIPPERCITY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERPROVINCE), u => u.SHIPPERPROVINCE == input.SHIPPERPROVINCE) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERPOSTCODE), u => u.SHIPPERPOSTCODE == input.SHIPPERPOSTCODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERCOUNTRY), u => u.SHIPPERCOUNTRY == input.SHIPPERCOUNTRY) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERATTN), u => u.SHIPPERATTN.Contains(input.SHIPPERATTN)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPPERTEL), u => u.SHIPPERTEL == input.SHIPPERTEL) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEENAME), u => u.CONSIGNEENAME.Contains(input.CONSIGNEENAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEECITY), u => u.CONSIGNEECITY.Contains(input.CONSIGNEECITY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEEPROVINCE), u => u.CONSIGNEEPROVINCE == input.CONSIGNEEPROVINCE) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEEPOSTCODE), u => u.CONSIGNEEPOSTCODE == input.CONSIGNEEPOSTCODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEERCOUNTRY), u => u.CONSIGNEERCOUNTRY == input.CONSIGNEERCOUNTRY) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEEATTN), u => u.CONSIGNEEATTN.Contains(input.CONSIGNEEATTN)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CONSIGNEETEL), u => u.CONSIGNEETEL == input.CONSIGNEETEL) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYNAME), u => u.NOTIFYPARTYNAME.Contains(input.NOTIFYPARTYNAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYCITY), u => u.NOTIFYPARTYCITY.Contains(input.NOTIFYPARTYCITY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYPROVINCE), u => u.NOTIFYPARTYPROVINCE == input.NOTIFYPARTYPROVINCE) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYPOSTCODE), u => u.NOTIFYPARTYPOSTCODE == input.NOTIFYPARTYPOSTCODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYCOUNTRY), u => u.NOTIFYPARTYCOUNTRY == input.NOTIFYPARTYCOUNTRY) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYATTN), u => u.NOTIFYPARTYATTN.Contains(input.NOTIFYPARTYATTN)) + .WhereIF(!string.IsNullOrWhiteSpace(input.NOTIFYPARTYTEL), u => u.NOTIFYPARTYTEL == input.NOTIFYPARTYTEL) + .WhereIF(!string.IsNullOrWhiteSpace(input.PONO), u => u.PONO.Contains(input.PONO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.OPID), u => u.OPID == input.OPID) + .WhereIF(!string.IsNullOrWhiteSpace(input.DOCID), u => u.DOCID == input.DOCID) + .WhereIF(!string.IsNullOrWhiteSpace(input.OP), u => u.OP == input.OP) + .WhereIF(!string.IsNullOrWhiteSpace(input.DOC), u => u.DOC == input.DOC) + .WhereIF(!string.IsNullOrWhiteSpace(input.SALEID), u => u.SALEID == input.SALEID) + .WhereIF(!string.IsNullOrWhiteSpace(input.SALE), u => u.SALE.Contains(input.SALE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTSERVICEID), u => u.CUSTSERVICEID == input.CUSTSERVICEID) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTSERVICE), u => u.CUSTSERVICE.Contains(input.CUSTSERVICE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTOMERNAME), u => u.CUSTOMERNAME.Contains(input.CUSTOMERNAME)) + .WhereIF(input.CUSTOMERID != null && input.CUSTOMERID != 0, u => u.CUSTOMERID == input.CUSTOMERID) + .WhereIF(!string.IsNullOrWhiteSpace(input.FORWARDER), u => u.FORWARDER.Contains(input.FORWARDER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.AGENTID), u => u.AGENTID == input.AGENTID) + .WhereIF(!string.IsNullOrWhiteSpace(input.FORWARDERID), u => u.FORWARDERID == input.FORWARDERID) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPAGENCY), u => u.SHIPAGENCY.Contains(input.SHIPAGENCY)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SHIPAGENCYID), u => u.SHIPAGENCYID == input.SHIPAGENCYID) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTOMSER), u => u.CUSTOMSER.Contains(input.CUSTOMSER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTOMSERID), u => u.CUSTOMSERID == input.CUSTOMSERID) + .WhereIF(!string.IsNullOrWhiteSpace(input.TRUCKER), u => u.TRUCKER.Contains(input.TRUCKER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.TRUCKERID), u => u.TRUCKERID == input.TRUCKERID) + .WhereIF(!string.IsNullOrWhiteSpace(input.AGENTNAME), u => u.AGENTNAME.Contains(input.AGENTNAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.WEITUO), u => u.WEITUO.Contains(input.WEITUO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.SCACCODE), u => u.SCACCODE == input.SCACCODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.ITNCODE), u => u.ITNCODE == input.ITNCODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.CUSTNO), u => u.CUSTNO.Contains(input.CUSTNO)) + .WhereIF(!string.IsNullOrWhiteSpace(input.TRANSPORTID), u => u.TRANSPORTID == input.TRANSPORTID) + .WhereIF(!string.IsNullOrWhiteSpace(input.TRANSPORT), u => u.TRANSPORT.Contains(input.TRANSPORT)) + .WhereIF(!string.IsNullOrWhiteSpace(input.YARDCONTRACTTEL), u => u.YARDCONTRACTTEL == input.YARDCONTRACTTEL) + .WhereIF(!string.IsNullOrWhiteSpace(input.YARDCONTRACTEMAIL), u => u.YARDCONTRACTEMAIL == input.YARDCONTRACTEMAIL) + .WhereIF(!string.IsNullOrWhiteSpace(input.LANECODE), u => u.LANECODE == input.LANECODE) + .WhereIF(!string.IsNullOrWhiteSpace(input.LANENAME), u => u.LANENAME.Contains(input.LANENAME)) + .WhereIF(!string.IsNullOrWhiteSpace(input.ROUTEID), u => u.ROUTEID == input.ROUTEID) + .WhereIF(!string.IsNullOrWhiteSpace(input.ROUTE), u => u.ROUTE.Contains(input.ROUTE)) + .WhereIF(!string.IsNullOrWhiteSpace(input.LineManageID), u => u.LineManageID == input.LineManageID) + .WhereIF(!string.IsNullOrWhiteSpace(input.LineManage), u => u.LineManage.Contains(input.LineManage)) + .WhereIF(!string.IsNullOrWhiteSpace(input.ShippingMethod), u => u.ShippingMethod.Contains(input.ShippingMethod)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CreatedUserName), u => u.CreatedUserName.Contains(input.CreatedUserName)) + .WhereIF(!string.IsNullOrWhiteSpace(input.FREIGHTPAYER), u => u.FREIGHTPAYER.Contains(input.FREIGHTPAYER)) + .WhereIF(!string.IsNullOrWhiteSpace(input.DZRemark), u => u.DZRemark.Contains(input.DZRemark)) + .WhereIF(!string.IsNullOrWhiteSpace(input.CZRemark), u => u.CZRemark.Contains(input.CZRemark)) + .WhereIF(!string.IsNullOrWhiteSpace(input.ZhanCangFlag), u => u.ZhanCangFlag == input.ZhanCangFlag) + .WhereIF(!string.IsNullOrWhiteSpace(input.BSSTATUSNAME), u => u.BSSTATUSNAME == input.BSSTATUSNAME) + .WhereIF(input.BDELETETIME != null, u => u.DeleteTime >= input.BDELETETIME) + .WhereIF(input.EDELETETIME != null, u => u.DeleteTime < input.EDELETETIME.Value.AddDays(1)) + .WhereIF(saleUserList != null && saleUserList.Count > 0, o => saleUserList.Contains(o.SALEID)) + .WhereIF(opUserList != null && opUserList.Count > 0, o => opUserList.Contains(o.OPID)) + .WhereIF(userlist != null && userlist.Count() > 0, u => userlist.Contains((long)u.CreatedUserId) || + UserManager.UserId.ToString() == u.ROUTEID || UserManager.Name.ToString() == u.ROUTE || + UserManager.UserId.ToString() == u.LineManageID || UserManager.Name.ToString() == u.LineManage || + UserManager.UserId.ToString() == u.SALEID || UserManager.Name.ToString() == u.SALE || + userlistString.Contains(u.OPID) || UserManager.Name.ToString() == u.OP || + userlistString.Contains(u.DOCID) || UserManager.Name.ToString() == u.DOC || + UserManager.UserId.ToString() == u.CUSTSERVICEID || UserManager.Name.ToString() == u.CUSTSERVICE); + + var selector = new List() + { + new SelectModel() { FiledName = "Id" } + }; + var ordProps = typeof(BookingOrder).GetProperties(); + foreach (var sc in input.ShowColumns) + { + var prop = ordProps.FirstOrDefault(x => x.Name.ToLower() == sc.ToLower()); + if (prop != null) + { + selector.Add(new SelectModel() { FiledName = prop.Name }); + } + else + { + _logger.LogWarning($"找不到对象上的列:{sc}"); + } + } + + + query = query.Select(selector); + + if (!string.IsNullOrEmpty(input.SortField) || input.MultiSort == null || input.MultiSort.Count == 0) + { + query = query.OrderBy(PageInputOrder.OrderBuilder(input.SortField, input.DescSort)); + } + else + { + query = query.OrderBy(PageInputOrder.MultiOrderBuilder(input.MultiSort)); + } + #endregion + + + var entities = await query.ToPagedListAsync(input.PageNo, input.PageSize); + //var sql = query.ToSqlString(); + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 3 {et.TotalMilliseconds}"); + } + + var list = entities.Adapt>(); + + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 4 {et.TotalMilliseconds}"); + } + + var bookingidlist = list.Items.Select(x => x.Id).ToList(); + + var itgoodsStatus = new List(); + var itconfigs = new List(); + + var pageColsCfg = _djyUserConfigService.Multi(new string[] { "booking_list_column" }) + .GetAwaiter().GetResult().FirstOrDefault(); + + bool isUseGoodsStatus = true; + + //这里因为个人配置的不是标准的格式化数据,所以这里只做了正则匹配 + if (pageColsCfg != null && !string.IsNullOrWhiteSpace(pageColsCfg.ConfigJson)) + { + isUseGoodsStatus = Regex.IsMatch(pageColsCfg.ConfigJson, "\\\"field\\\"\\s?\\:\\s?\\\"goodsStatusList\\\""); + + _logger.LogInformation("取到个人配置里是否展示 goodsStatusList(货物状态)={rlt}", (isUseGoodsStatus ? "展示" : "隐藏")); + } + + List statusList = new List(); + if (App.Configuration["ServiceStatusOpenAuto"] == "1") + { + if (isUseGoodsStatus) + { + QueryServiceProjectWithStatusBatch batchQuery = new QueryServiceProjectWithStatusBatch + { + BookingIds = bookingidlist.ToArray(), + QueryType = TrackingQueryTypeEnum.QUERY_SERVICE_ALL, + TenantId = list.Items.FirstOrDefault().TenantId.Value + }; + var queryRlt = _serviceWorkFlowManageService.GetEnableStatusListByBusinessBatch(batchQuery) + .GetAwaiter().GetResult(); + + if (queryRlt.succ) + { + statusList = JSON.Deserialize>(JSON.Serialize(queryRlt.ext)); + } + } + } + else + { + //货物状态 + itgoodsStatus = _goodsStatus.AsQueryable().LeftJoin(_goodsStatusConfig.AsQueryable(), + (goods, config) => config.Id == goods.ConfigId && bookingidlist.Contains((long)goods.bookingId)). + OrderBy((goods, config) => config.Sort). + Select((goods, config) => new ITGoodsStatusDto + { + bookingid = goods.bookingId, + ConfigId = goods.ConfigId, + SystemCode = config.SystemCode, + StatusName = config.StatusName, + FinishTime = goods.FinishTime, + ExtData = goods.ExtData, + Remark = goods.Remark, + CreatedUserId = config.CreatedUserId, + Sort = config.Sort + }).ToList(); + + var configID = itgoodsStatus.Select(x => x.ConfigId) + .Distinct().ToList(); + + itconfigs = _goodsStatusConfig.AsQueryable() + .Where(x => configID.Contains(x.Id)).Select(config => new ITConfigsDto + { + bookingid = "", + ConfigId = config.Id, + SystemCode = config.SystemCode, + StatusName = config.StatusName, + FinishTime = "", + ExtData = "", + Remark = "", + CreatedUserId = config.CreatedUserId, + Sort = config.Sort + }).ToList(); + } + + + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 5 {et.TotalMilliseconds}"); + } + + List statusloglist = null; + List statuslogdetaillist = null; + if (input.ShowColumns.Contains("statuslogs")) + { + //提箱返场 + statusloglist = _repStatuslog.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains((long)x.BookingId) && (x.Status == "提箱" || x.Status == "返场") && x.IsDeleted == false).ToList(); + + var statuslogId = statusloglist.Select(x => x.Id).ToList(); + //运踪状态详情 + statuslogdetaillist = _statuslogdetail.AsQueryable().Where(x => statuslogId.Contains(x.PId)).ToList(); + } + + //运踪状态 + List BookingStatusList = null; + if (input.ShowColumns.Contains("bookstatus")) + { + BookingStatusList = _repBookingStatus.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains((long)x.BookingId)).ToList(); + } + + //备注 + List bookingremarkList = null; + if (input.ShowColumns.Contains("bookremark")) + { + bookingremarkList = _bookingremark.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains(x.PId)).ToList(); + } + + + if (!string.IsNullOrEmpty(reqId)) + { + var et = DateTime.Now - ticks; + ticks = DateTime.Now; + _logger.LogWarning($"PageDataNew {reqId} Stage 6 {et.TotalMilliseconds}"); + } + + if (input.ShowColumns.Contains("isVGM") + || input.ShowColumns.Contains("isCanDan") + || input.ShowColumns.Contains("isZZFX") + || input.ShowColumns.Contains("goodsStatusList") + || input.ShowColumns.Contains("statuslogs") + || input.ShowColumns.Contains("txxp")) + { + foreach (var item in list.Items) + { + #region 查询条件 + //运踪 + if (input.ShowColumns.Contains("bookstatus")) + { + var sta = BookingStatusList.Where(x => x.BookingId == item.Id).ToList(); + if (sta != null) + { + + item.bookstatus = sta; + } + } + + //备注 + if (input.ShowColumns.Contains("bookremark")) + { + var st = bookingremarkList.Where(x => x.PId == item.Id).ToList(); + if (st != null) + { + item.bookremark = st; + } + } + + //变更日期类型 + if (!string.IsNullOrWhiteSpace(item.ETD)) + { + item.ETD = Convert.ToDateTime(item.ETD).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.ETA)) + { + item.ETA = Convert.ToDateTime(item.ETA).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.YgtETD)) + { + item.YgtETD = Convert.ToDateTime(item.YgtETD).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.ATD)) + { + item.ATD = Convert.ToDateTime(item.ATD).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.StartETA)) + { + item.StartETA = Convert.ToDateTime(item.StartETA).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.StartATA)) + { + item.StartATA = Convert.ToDateTime(item.StartATA).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.MiddleETA)) + { + item.MiddleETA = Convert.ToDateTime(item.MiddleETA).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.MiddleETD)) + { + item.MiddleETD = Convert.ToDateTime(item.MiddleETD).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.MiddleATA)) + { + item.MiddleATA = Convert.ToDateTime(item.MiddleATA).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.MiddleATD)) + { + item.MiddleATD = Convert.ToDateTime(item.MiddleATD).ToString("yyyy-MM-dd"); + } + if (!string.IsNullOrWhiteSpace(item.ATA)) + { + item.ATA = Convert.ToDateTime(item.ATA).ToString("yyyy-MM-dd"); + } + #endregion + + if (App.Configuration["ServiceStatusOpenAuto"] == "1") + { + if (isUseGoodsStatus) + { + var currStatusList = statusList.Where(a => long.Parse(a.BusiId) == item.Id).ToList(); + + if (currStatusList.Count > 0) + { + if (currStatusList.Any(a => a.StatusSKUCode.Equals("YFVGM", StringComparison.OrdinalIgnoreCase) && a.IsYield)) + { + var currStus = currStatusList.FirstOrDefault(a => + a.StatusSKUCode.Equals("YFVGM", StringComparison.OrdinalIgnoreCase) && a.IsYield); + + if (currStus != null) + item.IsVGM = currStus?.ActDate.Value; + } + if (currStatusList.Any(a => a.StatusSKUCode.Equals("YFCD", StringComparison.OrdinalIgnoreCase) && a.IsYield)) + { + var currStus = currStatusList.FirstOrDefault(a => + a.StatusSKUCode.Equals("YFCD", StringComparison.OrdinalIgnoreCase) && a.IsYield); + + if (currStus != null) + item.IsCanDan = currStus?.ActDate.Value; + } + if (currStatusList.Any(a => a.StatusSKUCode.Equals("ZZFX", StringComparison.OrdinalIgnoreCase) && a.IsYield)) + { + var currStus = currStatusList.FirstOrDefault(a => + a.StatusSKUCode.Equals("ZZFX", StringComparison.OrdinalIgnoreCase) && a.IsYield); + + if (currStus != null) + item.IsZZFX = currStus?.ActDate.Value; + } + + //货物状态列 + if (input.ShowColumns.Contains("goodsStatusList")) + { + item.GoodsStatusList = currStatusList.OrderBy(a => a.CalcSortNo) + .Select(a => new GoodsStatusList + { + FinishTime = a.ActDate, + IsLast = a.IsEnd, + Sort = a.ActSortNo, + StatusName = a.ShowName, + SystemCode = a.StatusSKUCode, + ExtData = !string.IsNullOrWhiteSpace(a.ActVal) ? a.ActVal : string.Empty, + Remark = !string.IsNullOrWhiteSpace(a.ActRemark) ? a.ActRemark : string.Empty + }).ToList(); + } + } + } + } + else + { + var itgoods = itgoodsStatus.Where(x => x.CreatedUserId == item.CreatedUserId && x.bookingid == item.Id).OrderBy(x => x.Sort). + Select(x => new GoodsStatusList + { + ConfigId = x.ConfigId, + StatusName = x.StatusName, + SystemCode = x.SystemCode, + FinishTime = x.FinishTime, + ExtData = x.ExtData, + Remark = x.Remark, + Sort = x.Sort + }).ToList(); + + var itconfig = itconfigs.Where(x => x.CreatedUserId == item.CreatedUserId).OrderBy(x => x.Sort). + Select(x => new GoodsStatusList + { + ConfigId = x.ConfigId, + StatusName = x.StatusName, + SystemCode = x.SystemCode, + FinishTime = null, + ExtData = x.ExtData, + Remark = x.Remark, + Sort = x.Sort + }).ToList(); + + foreach (var ii in itgoods) + { + itconfig.RemoveAll(x => x.ConfigId == ii.ConfigId); + } + item.IsVGM = itgoods.Where(x => x.SystemCode == "YFVGM").FirstOrDefault() == null ? null : itgoods.Where(x => x.SystemCode == "YFVGM").Select(x => x.FinishTime).FirstOrDefault(); + item.IsCanDan = itgoods.Where(x => x.SystemCode == "YFCD").FirstOrDefault() == null ? null : itgoods.Where(x => x.SystemCode == "YFCD").Select(x => x.FinishTime).FirstOrDefault(); + item.IsZZFX = itgoods.Where(x => x.SystemCode == "ZZFX").FirstOrDefault() == null ? null : itgoods.Where(x => x.SystemCode == "ZZFX").Select(x => x.FinishTime).FirstOrDefault(); + item.GoodsStatusList = itgoods.Union(itconfig).OrderBy(x => x.Sort).ToList(); + } + + //获取提箱返场状态 + if (input.ShowColumns.Contains("statuslogs")) + { + var statusids = statusloglist.Where(x => x.BookingId == item.Id).Select(x => x.Id).ToList(); + var dto = statuslogdetaillist.Where(x => statusids.Contains(x.PId)).ToList(); + List CNTRNODtolist = new List(); + foreach (var d in dto) + { + var ctn = CNTRNODtolist.Where(x => x.CNTRNO == d.CNTRNO).FirstOrDefault(); + if (ctn == null) + { + if (d.Status == "提箱") + { + CNTRNODtolist.Add(new CNTRNODto + { + BookingId = item.Id, + CNTRNO = d.CNTRNO, + TXOPTime = d.OPTime, + FCOPTime = null + }); + } + if (d.Status == "返场") + { + + CNTRNODtolist.Add(new CNTRNODto + { + BookingId = item.Id, + CNTRNO = d.CNTRNO, + FCOPTime = d.OPTime, + TXOPTime = null + }); + } + } + else + { + + if (d.Status == "提箱") + { + ctn.TXOPTime = d.OPTime; + } + if (d.Status == "返场") + { + ctn.FCOPTime = d.OPTime; + } + } + } + + item.statuslogs1 = CNTRNODtolist; + } + + //扩展表(小票相关) + if (input.ShowColumns.Contains("txxp")) + { + var extendstate = await _repextendstate.FirstOrDefaultAsync(x => x.bookingId == item.Id); + if (extendstate != null) + { + + item.ExtendState = extendstate; + } + } + + } + } + + if (!string.IsNullOrEmpty(reqId)) { var et = DateTime.Now - ticks; ticks = DateTime.Now; - _logger.LogInformation($"PageData Stage 7 {et.TotalMilliseconds}"); + _logger.LogWarning($"PageDataNew {reqId} Stage 7 {et.TotalMilliseconds}"); } return list; diff --git a/Myshipping.Application/Service/BookingOrder/Dto/BookingOrderInput.cs b/Myshipping.Application/Service/BookingOrder/Dto/BookingOrderInput.cs index b74f8dbb..d8e33df3 100644 --- a/Myshipping.Application/Service/BookingOrder/Dto/BookingOrderInput.cs +++ b/Myshipping.Application/Service/BookingOrder/Dto/BookingOrderInput.cs @@ -849,6 +849,14 @@ namespace Myshipping.Application public DateTime? EDELETETIME { get; set; } } + public class BookingOrderInputNew : BookingOrderInput + { + /// + /// 要显示的列 + /// + public List ShowColumns { get; set; } = new List(); + } + public class SaveBookingOrderInput : BookingOrderDto { /// diff --git a/Myshipping.Web.Core/dbsettings.json b/Myshipping.Web.Core/dbsettings.json index 27ffc63f..8166e650 100644 --- a/Myshipping.Web.Core/dbsettings.json +++ b/Myshipping.Web.Core/dbsettings.json @@ -12,7 +12,7 @@ { "DbNumber": "common", "DbType": "SqlServer", - "DbString": "Server=60.209.125.238,32009;Database=DevCommonDB;User=sa;Password=sa@djy.net;MultipleActiveResultSets=True;" + "DbString": "Server=60.209.125.238,32009;Database=DevCommonDB;User=sa;Password=Djy@Sql2022.test;MultipleActiveResultSets=True;" }, { "DbNumber": "pingtai",