diff --git a/EntrustSettle.Api/Controllers/OpenController.cs b/EntrustSettle.Api/Controllers/OpenController.cs index 8abdcb6..5399d67 100644 --- a/EntrustSettle.Api/Controllers/OpenController.cs +++ b/EntrustSettle.Api/Controllers/OpenController.cs @@ -613,6 +613,67 @@ namespace EntrustSettle.Api.Controllers } } + + /// + /// 进口运踪接口推送状态 + /// + [HttpPost] + [ApiUser(ApiCode = "PushBilltrace")] + public async Task PushBilltrace([FromBody] List input) + { + var gidList = input.Select(x => x.Gid); + var orderList = await orderService.AsQueryable().Where(x => gidList.Contains(x.BilltraceGid)).ToListAsync(x => new + { + x.Id, + x.Bsno, + x.BilltraceGid + }); + + foreach (var item in input) + { + var order = orderList.FirstOrDefault(x => x.BilltraceGid == item.Gid); + if (order == null) + { + string msg = $"进口运踪接口推送状态时未找到订单,Gid:{item.Gid}"; + logger.LogInformation(msg); + continue; + } + + // 记录订单状态历史(不在页面显示) + await orderHistoryService.Add(new OrderHistory() + { + Pid = order.Id, + StatusTime = DateTime.Now, + Status = 10, + IsDeleted = true, + Remark = "(状态接收)", + }); + + // 反馈陆海 + var feedbackList = new List() + { + new HydFeedbackDto() + { + orderNo = order.Bsno, + remark = "【集装箱已提取完毕】" + } + }; + await App.GetService().FeedBack(feedbackList); + + // 记录反馈信息 + var id = await annexService.Add(new Annex() + { + Remark = "【集装箱已提取完毕】", + Type = 2 + }); + await orderAnnexService.Add(new OrderAnnex() + { + AnnexId = id, + OrderId = order.Id + }); + } + return SuccessMsg(); + } //[HttpGet] //public string TestTime() //{ diff --git a/EntrustSettle.Api/Controllers/OrderController.cs b/EntrustSettle.Api/Controllers/OrderController.cs index aa677e2..7fe061a 100644 --- a/EntrustSettle.Api/Controllers/OrderController.cs +++ b/EntrustSettle.Api/Controllers/OrderController.cs @@ -8,6 +8,7 @@ using EntrustSettle.IServices.Base; using EntrustSettle.Model; using EntrustSettle.Model.Dtos; using EntrustSettle.Model.Models; +using EntrustSettle.Model.Models.BillTrace; using EntrustSettle.Model.Models.DJY; using EntrustSettle.Model.Validator; using EntrustSettle.Repository.UnitOfWorks; @@ -15,7 +16,9 @@ using FluentValidation; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; +using SqlSugar; using System.Text; namespace EntrustSettle.Api.Controllers @@ -38,6 +41,9 @@ namespace EntrustSettle.Api.Controllers private readonly IQueueService queueService; private readonly IInvoiceApplyService invoiceApplyService; + private readonly IBaseServices billtraceService; + private readonly IBaseServices billtraceCtnService; + public OrderController(IOrderService orderService, IOrderAnnexService orderFileService, @@ -48,7 +54,9 @@ namespace EntrustSettle.Api.Controllers IAnnexService annexService, IOrderFeeService orderFeeService, IQueueService queueService, - IInvoiceApplyService invoiceApplyService) + IInvoiceApplyService invoiceApplyService, + IBaseServices billtraceService, + IBaseServices billtraceCtnService) { this.orderService = orderService; this.orderAnnexService = orderFileService; @@ -60,6 +68,8 @@ namespace EntrustSettle.Api.Controllers this.orderFeeService = orderFeeService; this.queueService = queueService; this.invoiceApplyService = invoiceApplyService; + this.billtraceService = billtraceService; + this.billtraceCtnService = billtraceCtnService; } /// /// 获取订单列表 @@ -75,6 +85,25 @@ namespace EntrustSettle.Api.Controllers } } + // 运踪筛选条件 + List queryBilltraceGidList = null; + if (input.BillTraceState != null || input.AtaStart != null || input.AtaEnd != null) + { + var billtraceGidPageList = await billtraceService.AsQueryable() + .Where(x => x.IsOuter == true && x.CompID == App.User.CompanyId) + .WhereIF(input.BillTraceState == 1, x => x.StaCangDan == "Y") + .WhereIF(input.BillTraceState == 2, x => x.StaHaiGuan == "Y") + .WhereIF(input.BillTraceState == 3, x => x.StaTiHuo == "Y") + .WhereIF(input.BillTraceState == 4, x => x.StaFanKong == "Y") + .WhereIF(input.AtaStart != null, x => x.ATA >= input.AtaStart) + .WhereIF(input.AtaEnd != null, x => x.ATA <= input.AtaEnd.Value.AddDays(1)) + .OrderByDescending(x => x.CreateTime) + .Select(x => x.GID) + .ToPageListAsyncExtension(input.pageIndex, input.pageSize); + + queryBilltraceGidList = billtraceGidPageList.data; + } + // 可以查看所有数据的用户Gid列表 var seeAllDataUserGids = AppSettings.app("Startup", "SeeAllDataUserGids"); @@ -87,16 +116,18 @@ namespace EntrustSettle.Api.Controllers .WhereIF(input.Status != null, x => x.Status == (int)input.Status) .WhereIF(input.CreateTimeStart != null, x => x.CreateTime >= input.CreateTimeStart) .WhereIF(input.CreateTimeEnd != null, x => x.CreateTime <= input.CreateTimeEnd) + .WhereIF(queryBilltraceGidList != null, x => queryBilltraceGidList.Contains(x.BilltraceGid)) .Select() .OrderBy("id desc") .ToPageListAsyncExtension(input.pageIndex, input.pageSize); //var sql = orderService.AsQueryable() - //.WhereIF(!seeAllDataUserGids.Contains(App.User.ID) && input.QueryType != 2, x => x.CompanyId == App.User.CompanyId).ToSqlString(); + //.WhereIF(!seeAllDataUserGids.Contains(App.User.ID) && input.QueryType != 2, x => x.CompanyId == App.User.CompanyId).ToSqlString(); var orderIdList = result.data.Select(x => x.Id).ToList(); if (orderIdList.Count > 0) { + // 为订单列表绑定发票及账单状态 var orderWithTypeList = await orderAnnexService.AsQueryable() .LeftJoin((o, a) => o.AnnexId == a.Id) .Where((o, a) => orderIdList.Contains(o.OrderId) && (a.Type == 3 || a.Type == 4)) @@ -116,17 +147,88 @@ namespace EntrustSettle.Api.Controllers order.IsHasInvoiceAnnex = true; } } + + // 查询运踪信息 + var billtraceGidList = result.data.Where(x => !string.IsNullOrEmpty(x.BilltraceGid)).Select(x => x.BilltraceGid).ToList(); + var billtraceList = await billtraceService.AsQueryable() + .Where(x => billtraceGidList.Contains(x.GID)) + .Select() + .ToListAsync(); + + var ctnBilltraceList = await billtraceCtnService.AsQueryable() + .Where(x => billtraceGidList.Contains(x.PID)) + .GroupBy(x => x.PID) + .Select(x => new + { + x.PID, + numAll = SqlFunc.AggregateCount(x.GID), + numTiXiang = SqlFunc.AggregateSum(SqlFunc.IIF(x.StaTiHuo == "Y", 1, 0)), + numFanKong = SqlFunc.AggregateSum(SqlFunc.IIF(x.StaFanKong == "Y", 1, 0)) + }).ToListAsync(); + result.data.ForEach(x => { if (!string.IsNullOrWhiteSpace(x.MailBillNo)) { x.IsHasInvoiceAnnex = true; } + + // 绑定主要运踪 + var billtrace = billtraceList.FirstOrDefault(b => b.GID == x.BilltraceGid); + if (billtrace != null) + { + x.IsCangdan = billtrace.StaCangDan == "Y"; + x.IsHaifang = billtrace.StaHaiGuan == "Y"; + x.TimeHaiFang = billtrace.TimeHaiGuan; + + x.StaTiXiang = billtrace.StaTiHuo; + x.StaFanKong = billtrace.StaFanKong; + + x.ATA = billtrace.ATA; + } + + // 绑定箱信息运踪 + var ctnBilltrace = ctnBilltraceList.FirstOrDefault(c => c.PID == x.BilltraceGid); + if (ctnBilltrace != null) + { + x.CtnNumAll = ctnBilltrace.numAll; + x.CtnNumTiXiang = ctnBilltrace.numTiXiang; + x.CtnNumFanKong = ctnBilltrace.numFanKong; + } }); } return SuccessPage(result); } + + + /// + /// 查询箱信息运踪详情 + /// + [HttpGet] + public async Task>> GetCtnBilltraceList(long id) + { + var order = await orderService.QueryFirst(x => x.Id == id, x => new + { + x.BilltraceGid + }); + + if (string.IsNullOrEmpty(order.BilltraceGid)) + { + throw new Exception("运踪未订阅"); + } + + var ctnList = await billtraceCtnService.Query(x => x.PID == order.BilltraceGid, x => new CtnBilltraceDto() + { + Cntrno = x.CNTRNO, + FanKongTime = x.TimeFanKong, + StockpilingDays = x.StoreDays, + TiXiangTime = x.TimeTiHuo, + }); + + return Success(ctnList); + } + [HttpGet] [AllowAnonymous] //[ApiUser(ApiCode = "OrderSubmit")] @@ -175,12 +277,31 @@ namespace EntrustSettle.Api.Controllers var custBalanceService = App.GetService>(); var taxCode = await custBalanceService.Db.Queryable().Where(x => x.CompId == inputDto.CompanyId).Select(x => x.TaxCode).FirstAsync(); - var orderList = new List(); + var orderList = new List(inputDto.MblnoList.Length); + var billtraceList = new List(inputDto.MblnoList.Length); foreach (var item in inputDto.MblnoList) { + var billtrace = new OpSeaiBillTrace + { + GID = Guid.NewGuid().ToString(), + UserID = App.User.ID, + UserName = App.User.Name, + CompID = inputDto.CompanyId, + CompName = inputDto.CompanyName, + MBLNO = item, + StaCangDan = "N", + StaHaiGuan = "N", + StaTiHuo = "N", + StaFanKong = "N", + IsOuter = true, + CreateTime = DateTime.Now + }; + billtraceList.Add(billtrace); + var order = new Order { Mblno = item, + BilltraceGid = billtrace.GID, CompanyId = inputDto.CompanyId, CompanyName = inputDto.CompanyName, TaxCode = taxCode, @@ -238,6 +359,9 @@ namespace EntrustSettle.Api.Controllers unitOfWorkManage.CommitTran(); + // 保存到运踪表中 + await billtraceService.Add(billtraceList); + // 查询所有待处理订单列表 var pendingOrderList = await orderService.Query(x => x.IsSend == false && orderIdList.Contains(x.Id)); @@ -326,6 +450,52 @@ namespace EntrustSettle.Api.Controllers return Success(result); } + + /// + /// 补充订阅运踪 + /// + [HttpPost] + public async Task SubcribeBilltrace([FromBody] long[] ids) + { + var billtraceList = new List(ids.Length); + + var orderList = await orderService.Query(x => ids.Contains(x.Id)); + foreach (var item in orderList) + { + if (!string.IsNullOrEmpty(item.BilltraceGid) && await billtraceService.AsQueryable().AnyAsync(x => x.GID == item.BilltraceGid)) + { + continue; + } + + var billtrace = new OpSeaiBillTrace + { + GID = Guid.NewGuid().ToString(), + UserID = item.CreateId, + UserName = item.CreateBy, + CompID = item.CompanyId, + CompName = item.CompanyName, + MBLNO = item.Mblno, + StaCangDan = "N", + StaHaiGuan = "N", + StaTiHuo = "N", + StaFanKong = "N", + IsOuter = true, + CreateTime = DateTime.Now + }; + billtraceList.Add(billtrace); + + if (await billtraceService.AsInsertable(billtrace).ExecuteCommandAsync() > 0) + { + await orderService.Update(x => new Order + { + BilltraceGid = billtrace.GID + }, x => x.Id == item.Id); + } + } + + return SuccessMsg(); + } + /// /// 获取订单附件信息列表 /// diff --git a/EntrustSettle.Api/NLog.config b/EntrustSettle.Api/NLog.config index ab2aaaa..d1b9bb8 100644 --- a/EntrustSettle.Api/NLog.config +++ b/EntrustSettle.Api/NLog.config @@ -3,7 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="false" - internalLogLevel="off" internalLogFile="${basedir}/Logs/nlog-internal.log"> + internalLogLevel="off" internalLogFile="${basedir}/Logs/nlog-internal.log" + maxArchiveDays="7" + maxArchiveFiles="50"> diff --git a/EntrustSettle.Api/appsettings.Production.json b/EntrustSettle.Api/appsettings.Production.json index 88190f1..aee969d 100644 --- a/EntrustSettle.Api/appsettings.Production.json +++ b/EntrustSettle.Api/appsettings.Production.json @@ -184,6 +184,12 @@ "DBType": 1, "Enabled": true, "Connection": "Server=172.31.85.154,1433;Database=DsPingTai;User=sa;Password=QDdjy#2020*;MultipleActiveResultSets=True;" + }, + { + "ConnId": "BillTrace", + "DBType": 1, + "Enabled": true, + "Connection": "172.31.85.161,1433;Database=BillTrace;User=sa;Password=QDdjy#2020*;MultipleActiveResultSets=True;" } ], "Mongo": { diff --git a/EntrustSettle.Api/appsettings.Staging.json b/EntrustSettle.Api/appsettings.Staging.json index 24c6a91..5ba3f8e 100644 --- a/EntrustSettle.Api/appsettings.Staging.json +++ b/EntrustSettle.Api/appsettings.Staging.json @@ -184,6 +184,13 @@ "DBType": 1, "Enabled": true, "Connection": "Data Source =192.168.1.86,6333; Initial Catalog=TestDsPingTai; Persist Security Info=True; User ID =sa; Password=Djy@Sql2022.test;pooling=true" + }, + { + "ConnId": "BillTrace", + "DBType": 1, + "Enabled": true, + "Connection": "Data Source =60.209.125.238,32009; Initial Catalog=TestBillTrace; Persist Security Info=True; User ID =sa; Password=Djy@Sql2022.test;pooling=true" + //"Connection": "Data Source =47.104.73.97,6762; Initial Catalog=BillTrace; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" } ], "Mongo": { diff --git a/EntrustSettle.Api/appsettings.json b/EntrustSettle.Api/appsettings.json index a2d9a06..7fb1a22 100644 --- a/EntrustSettle.Api/appsettings.json +++ b/EntrustSettle.Api/appsettings.json @@ -153,8 +153,8 @@ "ConnId": "Main", "DBType": 0, "Enabled": true, - "Connection": "server=rm-m5e06xxqpa68a68ry5o.mysql.rds.aliyuncs.com;Database=EntrustSettle;Uid=rulesengine_admin;Pwd=Rule1qaz2wsx!QAZ;Port=3306;Allow User Variables=True;Charset=utf8;TreatTinyAsBoolean=false;", - //"Connection": "server=60.209.125.238;Database=entrustsettle_dev;User ID=root;Password=Djy@Mysql.test;pooling=true;port=32006;Allow User Variables=True;Charset=utf8;TreatTinyAsBoolean=false;", + //"Connection": "server=rm-m5e06xxqpa68a68ry5o.mysql.rds.aliyuncs.com;Database=EntrustSettle;Uid=rulesengine_admin;Pwd=Rule1qaz2wsx!QAZ;Port=3306;Allow User Variables=True;Charset=utf8;TreatTinyAsBoolean=false;", + "Connection": "server=60.209.125.238;Database=entrustsettle_dev;User ID=root;Password=Djy@Mysql.test;pooling=true;port=32006;Allow User Variables=True;Charset=utf8;TreatTinyAsBoolean=false;", "Slaves": [ { "HitRate": 0, // 值越大,优先级越高 0不使用 @@ -179,15 +179,22 @@ "DBType": 0, "Enabled": false, "HitRate": 50, - "Connection": "60.209.125.238;Database=entrustsettlelog_dev;User ID=root;Password=Djy@Mysql.test;pooling=true;port=32006;Allow User Variables=True;", + "Connection": "60.209.125.238;Database=entrustsettlelog_dev;User ID=root;Password=Djy@Mysql.test;pooling=true;port=32006;Allow User Variables=True;" //"Connection": "server=rm-m5e06xxqpa68a68ry5o.mysql.rds.aliyuncs.com;Database=EntrustSettleLog;Uid=rulesengine_admin;Pwd=Rule1qaz2wsx!QAZ;Port=3306;Allow User Variables=True;" }, { "ConnId": "PingTai", "DBType": 1, "Enabled": true, - //"Connection": "Data Source =60.209.125.238,32009; Initial Catalog=TestDsPingTai; Persist Security Info=True; User ID =sa; Password=Djy@Sql2022.test;pooling=true", - "Connection": "Data Source =47.104.73.97,6761; Initial Catalog=DsPingTai; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" + "Connection": "Data Source =60.209.125.238,32009; Initial Catalog=TestDsPingTai; Persist Security Info=True; User ID =sa; Password=Djy@Sql2022.test;pooling=true" + //"Connection": "Data Source =47.104.73.97,6761; Initial Catalog=DsPingTai; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" + }, + { + "ConnId": "BillTrace", + "DBType": 1, + "Enabled": true, + "Connection": "Data Source =60.209.125.238,32009; Initial Catalog=TestBillTrace; Persist Security Info=True; User ID =sa; Password=Djy@Sql2022.test;pooling=true" + //"Connection": "Data Source =47.104.73.97,6762; Initial Catalog=BillTrace; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" } ], "Mongo": { diff --git a/EntrustSettle.IServices/BASE/IBaseServices.cs b/EntrustSettle.IServices/BASE/IBaseServices.cs index e561d0e..a32a017 100644 --- a/EntrustSettle.IServices/BASE/IBaseServices.cs +++ b/EntrustSettle.IServices/BASE/IBaseServices.cs @@ -22,9 +22,11 @@ namespace EntrustSettle.IServices.Base Task QueryById(object objId, bool blnUseCache = false); Task> QueryByIDs(object[] lstIds); Task QueryFirst(Expression> whereExpression); + Task QueryFirst(Expression> whereExpression, Expression> selectExpression); Task QueryFirstInclude(Expression> whereExpression, Expression>> include); Task> Query(); Task> Query(Expression> whereExpression); + Task> Query(Expression> whereExpression, Expression> selectExpression); Task> Query(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true); Task> Query(Expression> whereExpression, string orderByFields); Task> Query(string where, string orderByFields); @@ -35,54 +37,8 @@ namespace EntrustSettle.IServices.Base Task> QueryPageModel(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, Expression> orderByExpression = null, bool isAsc = true); Task> QueryPageModel(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFields = null); Task> QueryPageModel(Expression> whereExpression, PaginationModel paginationModel); - Task> QueryDto(Expression> expression); - Task> QueryDto(Expression> expression, Expression> whereExpression, string orderByFields); Task> QuerySql(string sql, SugarParameter[] parameters = null); Task QueryTable(string sql, SugarParameter[] parameters = null); - - /// - /// 两表联查 - /// - Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new(); - - /// - /// 两表联查-分页 - /// - Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); - /// - /// 两表联合查询-分页-分组 - /// - Task> QueryMuchPageGroup(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - Expression> groupExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); - - /// - /// 三表联查 - /// - Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new(); - - /// - /// 三表联查-分页 - /// - Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); #endregion @@ -110,7 +66,6 @@ namespace EntrustSettle.IServices.Base Task Update(TEntity entity, Expression> updateColumns); Task Update(List model); Task Update(TEntity entity, string where); - Task Update(object operateAnonymousObjects); Task Update(TEntity entity, List lstColumns = null, List lstIgnoreColumns = null, string where = ""); Task Update(Expression> columns, Expression> where); #endregion diff --git a/EntrustSettle.Model/Const/DBConst.cs b/EntrustSettle.Model/Const/DBConst.cs index 8ebb464..fe58ba6 100644 --- a/EntrustSettle.Model/Const/DBConst.cs +++ b/EntrustSettle.Model/Const/DBConst.cs @@ -16,5 +16,10 @@ /// 大简云平台数据库标识 /// public const string PingTai = "PingTai"; + + /// + /// 运踪库 + /// + public const string BillTrace = "BillTrace"; } } diff --git a/EntrustSettle.Model/Dtos/BillTrace/OpSeaiBillTraceSelectDto.cs b/EntrustSettle.Model/Dtos/BillTrace/OpSeaiBillTraceSelectDto.cs new file mode 100644 index 0000000..14a3451 --- /dev/null +++ b/EntrustSettle.Model/Dtos/BillTrace/OpSeaiBillTraceSelectDto.cs @@ -0,0 +1,23 @@ +using System; + +namespace EntrustSettle.Model.Dtos +{ + public class OpSeaiBillTraceSelectDto + { + public string GID { get; set; } + public string MBLNO { get; set; } + + public string StaCangDan { get; set; } + public string StaHaiGuan { get; set; } + public string StaTiHuo { get; set; } + public string StaFanKong { get; set; } + + public DateTime? TimeHaiGuan { get; set; } + + //public DateTime? TimeCangDan { get; set; } + //public DateTime? TimeTiHuo { get; set; } + //public DateTime? TimeFanKong { get; set; } + + public DateTime? ATA { get; set; } + } +} \ No newline at end of file diff --git a/EntrustSettle.Model/Dtos/BillTrace/PushBilltraceDto.cs b/EntrustSettle.Model/Dtos/BillTrace/PushBilltraceDto.cs new file mode 100644 index 0000000..0d9bad7 --- /dev/null +++ b/EntrustSettle.Model/Dtos/BillTrace/PushBilltraceDto.cs @@ -0,0 +1,13 @@ +using System; + +namespace EntrustSettle.Model.Dtos +{ + public class PushBilltraceDto + { + /// + /// 运踪主键 + /// + public string Gid { get; set; } + public string StaFanKong { get; set; } + } +} diff --git a/EntrustSettle.Model/Dtos/Order/CtnBilltraceDto.cs b/EntrustSettle.Model/Dtos/Order/CtnBilltraceDto.cs new file mode 100644 index 0000000..7f656ec --- /dev/null +++ b/EntrustSettle.Model/Dtos/Order/CtnBilltraceDto.cs @@ -0,0 +1,27 @@ +using System; + +namespace EntrustSettle.Model.Dtos +{ + public class CtnBilltraceDto + { + /// + /// 箱号 + /// + public string Cntrno { get; set; } + + /// + /// 提箱时间 + /// + public DateTime? TiXiangTime { get; set; } + + /// + /// 返空时间 + /// + public DateTime? FanKongTime { get; set; } + + /// + /// 堆存天数 + /// + public int? StockpilingDays { get; set; } + } +} diff --git a/EntrustSettle.Model/Dtos/Order/OrderDto.cs b/EntrustSettle.Model/Dtos/Order/OrderDto.cs index d636092..2dadf42 100644 --- a/EntrustSettle.Model/Dtos/Order/OrderDto.cs +++ b/EntrustSettle.Model/Dtos/Order/OrderDto.cs @@ -70,5 +70,47 @@ namespace EntrustSettle.Model.Dtos /// 是否有发票附件或快递单号 /// public bool IsHasInvoiceAnnex { get; set; } + + /// + /// 是否有舱单状态 + /// + public bool? IsCangdan { get; set; } + + /// + /// 是否有海放状态 + /// + public bool? IsHaifang { get; set; } + + /// + /// 海放时间 + /// + public DateTime? TimeHaiFang { get; set; } + + public DateTime? ATA { get; set; } + + /// + /// 提箱状态 Y:全部提箱 P:部分提箱 N:未提箱 + /// + public string StaTiXiang { get; set; } + + /// + /// 返空状态 Y:全部返空 P:部分返空 N:未返空 + /// + public string StaFanKong { get; set; } + + /// + /// 箱子总数量 + /// + public int? CtnNumAll { get; set; } + + /// + /// 提箱数量 + /// + public int? CtnNumTiXiang { get; set; } + + /// + /// 返空数量 + /// + public int? CtnNumFanKong { get; set; } } } diff --git a/EntrustSettle.Model/Dtos/Order/OrderListInputDto.cs b/EntrustSettle.Model/Dtos/Order/OrderListInputDto.cs index 1bf07ca..9f4fef9 100644 --- a/EntrustSettle.Model/Dtos/Order/OrderListInputDto.cs +++ b/EntrustSettle.Model/Dtos/Order/OrderListInputDto.cs @@ -42,5 +42,23 @@ namespace EntrustSettle.Model.Dtos /// 客户备注 /// public string Remark { get; set; } + + + #region 运踪查询条件 + /// + /// 1=舱单申报 2=海关放行 3=全部提箱 4=全部返场 + /// + public int? BillTraceState { get; set; } + + /// + /// 抵港日期-开始时间 + /// + public DateTime? AtaStart { get; set; } + + /// + /// 抵港日期-结束时间 + /// + public DateTime? AtaEnd { get; set; } + #endregion } } diff --git a/EntrustSettle.Model/Dtos/OrderHistory/OrderHistoryDto.cs b/EntrustSettle.Model/Dtos/OrderHistory/OrderHistoryDto.cs index 4340bed..85fafc3 100644 --- a/EntrustSettle.Model/Dtos/OrderHistory/OrderHistoryDto.cs +++ b/EntrustSettle.Model/Dtos/OrderHistory/OrderHistoryDto.cs @@ -28,6 +28,7 @@ namespace EntrustSettle.Model.Dtos 7 => "收到发票", 8 => "收到账单", 9 => "收到往来单据", + 10 => "全部返场", _ => "未知状态" }; diff --git a/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTrace.cs b/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTrace.cs new file mode 100644 index 0000000..4c445ef --- /dev/null +++ b/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTrace.cs @@ -0,0 +1,38 @@ +using SqlSugar; +using System; + +namespace EntrustSettle.Model.Models.BillTrace +{ + [Tenant(DBConst.BillTrace)] + [SugarTable("op_seai_billtrace")] + public class OpSeaiBillTrace + { + [SugarColumn(IsPrimaryKey = true)] + public string GID { get; set; } + public string UserID { get; set; } + public string UserName { get; set; } + public string CompID { get; set; } + public string CompName { get; set; } + public string MBLNO { get; set; } + + public string StaCangDan { get; set; } + public string StaHaiGuan { get; set; } + public string StaTiHuo { get; set; } + public string StaFanKong { get; set; } + + public DateTime? TimeHaiGuan { get; set; } + + //public DateTime? TimeCangDan { get; set; } + //public DateTime? TimeTiHuo { get; set; } + //public DateTime? TimeFanKong { get; set; } + + public DateTime? ATA { get; set; } + + public bool NotifyWeChat { get; set; } + public bool NotifyEmail { get; set; } + public bool IsBook { get; set; } + public bool IsOuter { get; set; } + + public DateTime CreateTime { get; set; } + } +} diff --git a/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTraceCtn.cs b/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTraceCtn.cs new file mode 100644 index 0000000..3d5a252 --- /dev/null +++ b/EntrustSettle.Model/Models/BillTrace/OpSeaiBillTraceCtn.cs @@ -0,0 +1,24 @@ +using SqlSugar; +using System; + +namespace EntrustSettle.Model.Models.BillTrace +{ + [Tenant(DBConst.BillTrace)] + [SugarTable("op_seai_billtrace_ctn")] + public class OpSeaiBillTraceCtn + { + [SugarColumn(IsPrimaryKey = true)] + public string GID { get; set; } + public string PID { get; set; } + public string MBLNO { get; set; } + public string CNTRNO { get; set; } + + public string StaCangDan { get; set; } + public string StaTiHuo { get; set; } + public string StaFanKong { get; set; } + + public DateTime? TimeTiHuo { get; set; } + public DateTime? TimeFanKong { get; set; } + public int? StoreDays { get; set; } + } +} diff --git a/EntrustSettle.Model/Models/Order.cs b/EntrustSettle.Model/Models/Order.cs index a8953b7..0b9acdb 100644 --- a/EntrustSettle.Model/Models/Order.cs +++ b/EntrustSettle.Model/Models/Order.cs @@ -14,6 +14,10 @@ namespace EntrustSettle.Model.Models /// public long Bsno { get; set; } /// + /// 运踪表主键 + /// + public string BilltraceGid { get; set; } + /// /// 提单号 /// public string Mblno { get; set; } diff --git a/EntrustSettle.Model/Models/OrderHistory.cs b/EntrustSettle.Model/Models/OrderHistory.cs index 32896c5..3d524d7 100644 --- a/EntrustSettle.Model/Models/OrderHistory.cs +++ b/EntrustSettle.Model/Models/OrderHistory.cs @@ -15,7 +15,7 @@ namespace EntrustSettle.Model.Models /// public long Pid { get; set; } /// - /// 业务状态 0:已下单 1:已接单 2:待缴费 3:已缴费 4:已完结 5:申请发票 6:申请账单 7:收到发票 8:收到账单 9:收到往来单据 + /// 业务状态 0:已下单 1:已接单 2:待缴费 3:已缴费 4:已完结 5:申请发票 6:申请账单 7:收到发票 8:收到账单 9:收到往来单据 10:收到运踪状态-全部返场 /// public int Status { get; set; } /// diff --git a/EntrustSettle.Repository/BASE/BaseRepository.cs b/EntrustSettle.Repository/BASE/BaseRepository.cs index e173c98..9010e09 100644 --- a/EntrustSettle.Repository/BASE/BaseRepository.cs +++ b/EntrustSettle.Repository/BASE/BaseRepository.cs @@ -58,6 +58,10 @@ namespace EntrustSettle.Repository.Base { return await _db.Queryable().Where(whereExpression).FirstAsync(); } + public async Task QueryFirst(Expression> whereExpression, Expression> selectExpression) + { + return await _db.Queryable().Where(whereExpression).Select(selectExpression).FirstAsync(); + } public async Task QueryFirstInclude(Expression> whereExpression, Expression>> include) { return await _db.Queryable().Includes(include).Where(whereExpression).FirstAsync(); @@ -70,6 +74,10 @@ namespace EntrustSettle.Repository.Base { return await _db.Queryable().WhereIF(whereExpression != null, whereExpression).ToListAsync(); } + public async Task> Query(Expression> whereExpression, Expression> selectExpression) + { + return await _db.Queryable().WhereIF(whereExpression != null, whereExpression).Select(selectExpression).ToListAsync(); + } public async Task> Query(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true) { return await _db.Queryable() @@ -136,18 +144,7 @@ namespace EntrustSettle.Repository.Base return new PageModel(pageIndex, totalCount, pageSize, list); } - public async Task> QueryDto(Expression> expression) - { - return await _db.Queryable().Select(expression).ToListAsync(); - } - public async Task> QueryDto(Expression> expression, Expression> whereExpression, string orderByFields) - { - return await _db.Queryable() - .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) - .WhereIF(whereExpression != null, whereExpression) - .Select(expression) - .ToListAsync(); - } + public async Task> QuerySql(string sql, SugarParameter[] parameters = null) { return await _db.Ado.SqlQueryAsync(sql, parameters); @@ -157,91 +154,6 @@ namespace EntrustSettle.Repository.Base return await _db.Ado.GetDataTableAsync(sql, parameters); } - /// - /// 两表联查 - /// - public async Task> QueryMuch(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression) where T : class, new() - { - return await _db.Queryable(joinExpression) - .WhereIF(whereExpression != null, whereExpression) - .Select(selectExpression) - .ToListAsync(); - } - /// - /// 两表联合查询-分页 - /// - public async Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - RefAsync totalCount = 0; - List list = await _db.Queryable(joinExpression) - .WhereIF(whereExpression != null, whereExpression) - .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) - .Select(selectExpression) - .ToPageListAsync(pageIndex, pageSize, totalCount); - return new PageModel(pageIndex, totalCount, pageSize, list); - } - /// - /// 两表联合查询-分页-分组 - /// - public async Task> QueryMuchPageGroup(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - Expression> groupExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - - RefAsync totalCount = 0; - List list = await _db.Queryable(joinExpression) - .WhereIF(whereExpression != null, whereExpression) - .GroupBy(groupExpression) - .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) - .Select(selectExpression) - .ToPageListAsync(pageIndex, pageSize, totalCount); - return new PageModel(pageIndex, totalCount, pageSize, list); - } - /// - /// 三表联查 - /// - public async Task> QueryMuch( - Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new() - { - if (whereLambda == null) - { - return await _db.Queryable(joinExpression).Select(selectExpression).ToListAsync(); - } - - return await _db.Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToListAsync(); - } - - /// - /// 三表联合查询-分页 - /// - public async Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - RefAsync totalCount = 0; - List list = await _db.Queryable(joinExpression) - .WhereIF(whereExpression != null, whereExpression) - .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) - .Select(selectExpression) - .ToPageListAsync(pageIndex, pageSize, totalCount).ConfigureAwait(false); - return new PageModel(pageIndex, totalCount, pageSize, list); - } #endregion @@ -303,10 +215,7 @@ namespace EntrustSettle.Repository.Base { return await _db.Updateable(entity).Where(where).ExecuteCommandHasChangeAsync(); } - public async Task Update(object operateAnonymousObjects) - { - return await _db.Updateable(operateAnonymousObjects).ExecuteCommandAsync() > 0; - } + public async Task Update(TEntity entity, List lstColumns = null, List lstIgnoreColumns = null, string where = "") { IUpdateable up = _db.Updateable(entity); diff --git a/EntrustSettle.Repository/BASE/IBaseRepository.cs b/EntrustSettle.Repository/BASE/IBaseRepository.cs index 014aa47..74fc309 100644 --- a/EntrustSettle.Repository/BASE/IBaseRepository.cs +++ b/EntrustSettle.Repository/BASE/IBaseRepository.cs @@ -20,9 +20,11 @@ namespace EntrustSettle.IRepository.Base Task QueryById(object objId, bool blnUseCache = false); Task> QueryByIDs(object[] lstIds); Task QueryFirst(Expression> whereExpression); + Task QueryFirst(Expression> whereExpression, Expression> selectExpression); Task QueryFirstInclude(Expression> whereExpression, Expression>> include); Task> Query(); Task> Query(Expression> whereExpression); + Task> Query(Expression> whereExpression, Expression> selectExpression); Task> Query(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true); Task> Query(Expression> whereExpression, string orderByFields); Task> Query(string where, string orderByFields); @@ -32,54 +34,8 @@ namespace EntrustSettle.IRepository.Base Task> QueryPage(Expression> whereExpression, int pageIndex, int pageSize, string orderByFields); Task> QueryPageModel(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, Expression> orderByExpression = null, bool isAsc = true); Task> QueryPageModel(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFields = null); - Task> QueryDto(Expression> expression); - Task> QueryDto(Expression> expression, Expression> whereExpression, string orderByFields); Task> QuerySql(string sql, SugarParameter[] parameters = null); Task QueryTable(string sql, SugarParameter[] parameters = null); - - /// - /// 两表联查 - /// - Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new(); - - /// - /// 两表联查-分页 - /// - Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); - /// - /// 两表联合查询-分页-分组 - /// - Task> QueryMuchPageGroup(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - Expression> groupExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); - - /// - /// 三表联查 - /// - Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new(); - - /// - /// 三表联查-分页 - /// - Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null); #endregion @@ -102,7 +58,6 @@ namespace EntrustSettle.IRepository.Base Task Update(TEntity entity, Expression> updateColumns); Task Update(List model); Task Update(TEntity entity, string where); - Task Update(object operateAnonymousObjects); Task Update(TEntity entity, List lstColumns = null, List lstIgnoreColumns = null, string where = ""); Task Update(Expression> columns, Expression> where); #endregion diff --git a/EntrustSettle.Repository/RoleModulePermissionRepository.cs b/EntrustSettle.Repository/RoleModulePermissionRepository.cs index 6aa655b..24c6edb 100644 --- a/EntrustSettle.Repository/RoleModulePermissionRepository.cs +++ b/EntrustSettle.Repository/RoleModulePermissionRepository.cs @@ -25,21 +25,19 @@ namespace EntrustSettle.Repository /// public async Task> RoleModuleMaps() { - return await QueryMuch( + return await Db.Queryable( (rmp, m, r) => new object[] { JoinType.Left, rmp.ModuleId == m.Id, - JoinType.Left, rmp.RoleId == r.Id - }, - - (rmp, m, r) => rmp.IsDeleted == false && m.IsDeleted == false && r.IsDeleted == false -, - - (rmp, m, r) => new RoleModulePermission() + JoinType.Left, rmp.RoleId == r.Id + }) + .Where((rmp, m, r) => rmp.IsDeleted == false && m.IsDeleted == false && r.IsDeleted == false) + .Select((rmp, m, r) => new RoleModulePermission() { Role = r, Module = m, IsDeleted = rmp.IsDeleted - }); + }) + .ToListAsync(); } } diff --git a/EntrustSettle.Services/BASE/BaseServices.cs b/EntrustSettle.Services/BASE/BaseServices.cs index f78b6c2..700aa37 100644 --- a/EntrustSettle.Services/BASE/BaseServices.cs +++ b/EntrustSettle.Services/BASE/BaseServices.cs @@ -41,6 +41,10 @@ namespace EntrustSettle.Services.Base { return await BaseDal.QueryFirst(whereExpression); } + public async Task QueryFirst(Expression> whereExpression, Expression> selectExpression) + { + return await BaseDal.QueryFirst(whereExpression, selectExpression); + } public async Task QueryFirstInclude(Expression> whereExpression, Expression>> include) { @@ -54,6 +58,10 @@ namespace EntrustSettle.Services.Base { return await BaseDal.Query(whereExpression); } + public async Task> Query(Expression> whereExpression, Expression> selectExpression) + { + return await BaseDal.Query(whereExpression, selectExpression); + } public async Task> Query(Expression> whereExpression, Expression> orderByExpression, bool isAsc = true) { return await BaseDal.Query(whereExpression, orderByExpression, isAsc); @@ -95,14 +103,6 @@ namespace EntrustSettle.Services.Base return await BaseDal.QueryPageModel(whereExpression, pagination.pageIndex, pagination.pageSize, pagination.orderByFileds); } - public async Task> QueryDto(Expression> expression) - { - return await BaseDal.QueryDto(expression); - } - public async Task> QueryDto(Expression> expression, Expression> whereExpression, string orderByFileds) - { - return await BaseDal.QueryDto(expression, whereExpression, orderByFileds); - } public async Task> QuerySql(string sql, SugarParameter[] parameters = null) { return await BaseDal.QuerySql(sql, parameters); @@ -112,50 +112,6 @@ namespace EntrustSettle.Services.Base { return await BaseDal.QueryTable(sql, parameters); } - public async Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new() - { - return await BaseDal.QueryMuch(joinExpression, whereLambda, selectExpression); - } - - public async Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - return await BaseDal.QueryMuchPage(joinExpression, whereExpression, selectExpression, pageIndex, pageSize, strOrderByFileds); - } - - public async Task> QueryMuchPageGroup(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - Expression> groupExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - return await BaseDal.QueryMuchPageGroup(joinExpression, whereExpression, selectExpression, groupExpression, pageIndex, pageSize, strOrderByFileds); - } - - public async Task> QueryMuch(Expression> joinExpression, - Expression> whereLambda, - Expression> selectExpression) where T : class, new() - { - return await BaseDal.QueryMuch(joinExpression, whereLambda, selectExpression); - } - - public Task> QueryMuchPage(Expression> joinExpression, - Expression> whereExpression, - Expression> selectExpression, - int pageIndex = 1, - int pageSize = 20, - string strOrderByFileds = null) - { - return BaseDal.QueryMuchPage(joinExpression, whereExpression, selectExpression, pageIndex, pageSize, strOrderByFileds); - } #endregion @@ -204,10 +160,6 @@ namespace EntrustSettle.Services.Base { return await BaseDal.Update(entity, where); } - public async Task Update(object operateAnonymousObjects) - { - return await BaseDal.Update(operateAnonymousObjects); - } public async Task Update(TEntity entity, List lstColumns = null, List lstIgnoreColumns = null, string where = "") { return await BaseDal.Update(entity, lstColumns, lstIgnoreColumns, where);