diff --git a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicaitonBiz.cs b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicaitonBiz.cs index ce39b894..5aafca8d 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicaitonBiz.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicaitonBiz.cs @@ -24,6 +24,11 @@ namespace DS.WMS.Core.Application.Dtos /// public BusinessType BusinessType { get; set; } + /// + /// 客户ID + /// + public long CustomerId { get; set; } + /// /// 客户名称 /// diff --git a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationDto.cs b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationDto.cs index d447b9ec..43600dc6 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationDto.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationDto.cs @@ -1,5 +1,4 @@ -using System.Runtime.Serialization; -using DS.Module.Core.Extensions; +using DS.Module.Core.Extensions; namespace DS.WMS.Core.Application.Dtos { @@ -18,6 +17,9 @@ namespace DS.WMS.Core.Application.Dtos /// public string ApplicationNO { get; set; } + /// + /// 客户名称/结算单位ID + /// public long? CustomerId { get; set; } /// @@ -98,7 +100,6 @@ namespace DS.WMS.Core.Application.Dtos /// /// 所属分部 /// - [IgnoreDataMember] public long? SaleDeptId { get; set; } /// diff --git a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationRequest.cs b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationRequest.cs index 30bfbe2c..00f43dac 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationRequest.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Dtos/ApplicationRequest.cs @@ -16,6 +16,11 @@ namespace DS.WMS.Core.Application.Dtos /// /// 业务信息 /// - public List Items { get; set; } + public List Items { get; set; } = []; + + /// + /// 查询条件字符串 + /// + public string? QueryString { get; set; } } } diff --git a/ds-wms-service/DS.WMS.Core/Application/Entity/ApplicationBase.cs b/ds-wms-service/DS.WMS.Core/Application/Entity/ApplicationBase.cs index 7f51624e..c672998c 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Entity/ApplicationBase.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Entity/ApplicationBase.cs @@ -110,13 +110,6 @@ namespace DS.WMS.Core.Application.Entity [SugarColumn(ColumnDescription = "驳回原因", Length = 200, IsNullable = true)] public string? Reason { get; set; } - /// - /// 工作流ID - /// - [SugarColumn(ColumnDescription = "工作流ID", IsNullable = true)] - public long? FlowId { get; set; } - - /// /// 是否已打印 /// diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationAuditService`1.cs b/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationAuditService`1.cs index b9f207e4..6b4d3c3c 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationAuditService`1.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationAuditService`1.cs @@ -13,10 +13,14 @@ namespace DS.WMS.Core.Application.Method /// /// 申请单审核服务 /// - public class ApplicationAuditService : FeeServiceBase, IApplicationAuditService + public abstract class ApplicationAuditService : FeeServiceBase, IApplicationAuditService where TEntity : ApplicationForm, new() { - internal static readonly TaskBaseTypeEnum[] AuditTypes = [TaskBaseTypeEnum.APPLICATION_PAYMENT_AUDIT]; + /// + /// 适用于当前申请单的审核类型 + /// + public abstract TaskBaseTypeEnum AuditType { get; } + readonly IClientFlowInstanceService flowService; /// @@ -36,7 +40,7 @@ namespace DS.WMS.Core.Application.Method /// public async Task AuditAsync(int yesOrNo, string? remark) { - var recordIds = await GetCurrentFlowsQuery(AuditTypes).Select(x => x.BusinessId).ToArrayAsync(); + var recordIds = await GetCurrentFlowsQuery([AuditType]).Select(x => x.BusinessId).ToArrayAsync(); //没有待审批的列表直接返回不再执行后续查询 if (recordIds.Length == 0) return DataResult.FailedWithDesc(nameof(MultiLanguageConst.NoAuditItems)); @@ -55,49 +59,34 @@ namespace DS.WMS.Core.Application.Method { Id = x.Id, ApplicationNO = x.ApplicationNO, - Status = x.Status, - FlowId = x.FlowId + Status = x.Status }).ToListAsync(); if (apps.Count == 0) return DataResult.FailedWithDesc(nameof(MultiLanguageConst.EmptyData)); - if (apps.Exists(x => !x.FlowId.HasValue)) - return DataResult.FailedWithDesc(nameof(MultiLanguageConst.NotInFlows)); - var result = PreAudit(apps); if (!result.Succeeded) return result; - var flowIds = apps.Select(x => x.FlowId.GetValueOrDefault()); - var flows = await Db.Queryable().Where(x => flowIds.Contains(x.Id)).ToListAsync(); - if (flows.Count == 0) + var flows = await flowService.GetInstanceByBSIdAsync(AuditType, null, request.Ids); + if (flows.Count != request.Ids.Length) return DataResult.FailedWithDesc(nameof(MultiLanguageConst.FlowNotFound)); - if (flows.Exists(x => !x.MakerList.Contains(User.UserId))) - return DataResult.FailedWithDesc(nameof(MultiLanguageConst.AuditUnauthorization)); - List list = []; - foreach (var app in apps) + foreach (var item in flows) { - var flow = flows.Find(x => x.Id == app.FlowId.Value); - if (flow == null) - continue; - result = flowService.AuditFlowInstance(new FlowAuditInfo { - Instance = flow, + Instance = item, Status = request.Result, AuditNote = request.Remark }); if (!result.Succeeded) - list.Add(app.ApplicationNO); + return result; } - if (list.Count > 0) - return DataResult.Failed($"{MultiLanguageConst.Operation_Failed}:{string.Join("、", list)}"); - return DataResult.Success; } @@ -199,8 +188,7 @@ namespace DS.WMS.Core.Application.Method x.AuditerId, x.AuditerName, x.AuditTime, - x.Reason, - x.FlowId + x.Reason }).ExecuteCommandAsync(); } } diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationService`1.cs b/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationService`1.cs index fff1230e..8bffe2a2 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationService`1.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/ApplicationService`1.cs @@ -1,4 +1,5 @@ -using DS.Module.Core; +using System.Collections.Generic; +using DS.Module.Core; using DS.Module.Core.Extensions; using DS.WMS.Core.Application.Dtos; using DS.WMS.Core.Application.Entity; @@ -9,6 +10,8 @@ using DS.WMS.Core.Fee.Method; using DS.WMS.Core.Flow.Dtos; using DS.WMS.Core.Flow.Entity; using DS.WMS.Core.Flow.Interface; +using DS.WMS.Core.Op.Dtos.TaskInteraction; +using DS.WMS.Core.Op.Interface.TaskInteraction; using DS.WMS.Core.Sys.Interface; using Microsoft.Extensions.DependencyInjection; using SqlSugar; @@ -24,6 +27,7 @@ namespace DS.WMS.Core.Application.Method { readonly IClientFlowInstanceService flowService; readonly Lazy commonService; + readonly ITaskService taskService; /// /// 初始化 @@ -33,6 +37,7 @@ namespace DS.WMS.Core.Application.Method { flowService = serviceProvider.GetRequiredService(); commonService = new Lazy(serviceProvider.GetRequiredService()); + taskService = serviceProvider.GetRequiredService(); } #region 保存 @@ -44,7 +49,7 @@ namespace DS.WMS.Core.Application.Method /// public async Task> SaveAsync(TEntity application) { - TEntity dbValue = null; + TEntity? dbValue = null; if (application.Id > 0) { //修改需检查申请单状态 @@ -110,8 +115,6 @@ namespace DS.WMS.Core.Application.Method { detail.ApplicationId = application.Id; var fee = fees.Find(x => x.Id == detail.RecordId); - //detail.BusinessId = fee.BusinessId; - //detail.BusinessType = fee.BusinessType; detail.ExchangeRate = detail.ExchangeRate ?? fee.ExchangeRate; detail.FeeId = fee.FeeId; detail.FeeName = fee.FeeName; @@ -179,7 +182,12 @@ namespace DS.WMS.Core.Application.Method public async Task> SaveAsync(ApplicationRequest request) { request.Application ??= new(); - request.Application.Details = await GetDetailsAsync(request.Items); + + List whereList = []; + if (!string.IsNullOrEmpty(request.QueryString)) + whereList = Db.ConfigQuery.Context.Utilities.JsonToConditionalModels(request.QueryString); + + request.Application.Details = await GetDetailsAsync(request.Items, whereList); return await SaveAsync(request.Application); } @@ -189,7 +197,7 @@ namespace DS.WMS.Core.Application.Method /// 提交的申请单 /// 数据库值,新增时为null /// - protected virtual DataResult EnsureApplication(TEntity application, TEntity dbValue) + protected virtual DataResult EnsureApplication(TEntity application, TEntity? dbValue) { return DataResult.Success; } @@ -248,8 +256,9 @@ namespace DS.WMS.Core.Application.Method /// 获取业务所关联的申请明细 /// /// + /// /// - protected virtual Task> GetDetailsAsync(IEnumerable items) + protected virtual Task> GetDetailsAsync(IEnumerable items, List? conditions) { return Task.FromResult(new List()); } @@ -402,33 +411,57 @@ namespace DS.WMS.Core.Application.Method if (!result.Succeeded) return result; - var template = await FindTemplateAsync(auditType); - if (template == null) - return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TemplateNotFound)); - + List entities = new List(idArray.Length); + bool hasAuthorized = await taskService.HasAuthorizedAsync(); await TenantDb.Ado.BeginTranAsync(); try { - var list2 = list.Select(x => new TEntity { Id = x.Id, Status = x.Status }).ToList(); - foreach (var item in list2) + if (hasAuthorized) { - result = flowService.CreateFlowInstance(new CreateFlowInstanceReq + for (int i = 0; i < idArray.Length; i++) { - BusinessId = item.Id, - TemplateId = template.Id - }); + var req = new TaskCreationRequest + { + BusinessId = idArray[i], + TaskTypeName = auditType.ToString() + }; + result = await taskService.CreateTaskAsync(req); + + if (result.Succeeded) + { + var entity = new TEntity { Id = req.BusinessId }; + OnSubmitApproval(entity); + entities.Add(entity); + } + } + } + else + { + var template = await FindTemplateAsync(auditType); + if (template == null) + return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TemplateNotFound)); - if (result.Succeeded) + var list2 = list.Select(x => new TEntity { Id = x.Id, Status = x.Status }).ToList(); + foreach (var item in list2) { - var instance = result.Data as FlowInstance; - flowService.StartFlowInstance(instance.Id.ToString()); - - item.FlowId = instance.Id; - OnSubmitApproval(item); - await TenantDb.Updateable(item).UpdateColumns(x => new { x.Status, x.FlowId }).ExecuteCommandAsync(); + result = flowService.CreateFlowInstance(new CreateFlowInstanceReq + { + BusinessId = item.Id, + TemplateId = template.Id + }); + + if (result.Succeeded) + { + var instance = result.Data as FlowInstance; + flowService.StartFlowInstance(instance.Id.ToString()); + + OnSubmitApproval(item); + entities.Add(item); + } } } + await TenantDb.Updateable(entities).UpdateColumns(x => new { x.Status }).ExecuteCommandAsync(); await TenantDb.Ado.CommitTranAsync(); return DataResult.Success; } @@ -471,33 +504,29 @@ namespace DS.WMS.Core.Application.Method { Id = x.Id, ApplicationNO = x.ApplicationNO, - Status = x.Status, - FlowId = x.FlowId + Status = x.Status }).ToListAsync(); if (list.Count == 0) return DataResult.FailedWithDesc(nameof(MultiLanguageConst.EmptyData)); + //未在审批状态中 - var list2 = list.FindAll(x => x.FlowId == null).ToList(); - if (list2.Count > 0) - { - string msg = string.Join("; ", list2.Select(x => $"{x.ApplicationNO}")); - return DataResult.Failed(string.Format(MultiLanguageConst.GetDescription(nameof(MultiLanguageConst.NoNeedWithdraw)), msg)); - } + if (!await flowService.Exists(ids: ids)) + return DataResult.FailedWithDesc(nameof(MultiLanguageConst.NotInAudit)); - var flows = list.Select(x => new FlowInstance { Id = x.FlowId.Value, FlowStatus = FlowStatusEnum.Draft, MakerList = string.Empty }).ToList(); - DateTime dtNow = DateTime.Now; + DataResult result; try { - await Db.Updateable(flows).UpdateColumns(x => new { x.FlowStatus, x.MakerList }).ExecuteCommandAsync(); + result = await flowService.WithdrawAsync(ids); + if (!result.Succeeded) + return result; foreach (var item in list) { OnWithdraw(item); - item.FlowId = null; } - await TenantDb.Updateable(list).UpdateColumns(x => new { x.Status, x.FlowId }).ExecuteCommandAsync(); + await TenantDb.Updateable(list).UpdateColumns(x => new { x.Status }).ExecuteCommandAsync(); await TenantDb.Ado.CommitTranAsync(); return DataResult.Success; diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationAuditService.cs b/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationAuditService.cs index 56f7a250..5745583c 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationAuditService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationAuditService.cs @@ -18,6 +18,8 @@ namespace DS.WMS.Core.Application.Method /// public class InvoiceApplicationAuditService : ApplicationAuditService, IInvoiceApplicationAuditService { + public override TaskBaseTypeEnum AuditType => TaskBaseTypeEnum.APPLICATION_INVOICE_AUDIT; + /// /// 初始化 /// diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs b/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs index 3d3375e0..2a19dd94 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs @@ -34,10 +34,7 @@ namespace DS.WMS.Core.Application.Method /// public async Task>> GetListAsync(PageRequest request) { - List whereList = []; - if (!request.QueryCondition.IsNullOrEmpty()) - whereList = Db.ConfigQuery.Context.Utilities.JsonToConditionalModels(request.QueryCondition); - + List whereList = request.GetConditionalModels(Db); var result = await TenantDb.Queryable().Where(whereList) .Select((x) => new InvoiceApplicationDto { @@ -243,6 +240,7 @@ namespace DS.WMS.Core.Application.Method RecordId = f.Id, BusinessId = f.BusinessId, BusinessType = f.BusinessType, + CustomerId = f.CustomerId, CustomerName = f.CustomerName, FeeId = f.FeeId, FeeName = f.FeeName, @@ -285,6 +283,7 @@ namespace DS.WMS.Core.Application.Method { Id = a.Id, ApplicationNO = a.ApplicationNO, + AutualCustomerName = a.AutualCustomerName, Currency = a.Currency, CustomerId = a.CustomerId, CustomerName = a.CustomerName, @@ -298,6 +297,7 @@ namespace DS.WMS.Core.Application.Method InvoiceBillNO = a.InvoiceBillNO, InvoiceRemark = a.InvoiceRemark, SaleDeptId = a.SaleDeptId, + TaxID = a.TaxID, Note = a.Note, ApplyAmount = a.ApplyAmount, OtherCurrencyAmount = a.OtherCurrencyAmount, @@ -305,12 +305,9 @@ namespace DS.WMS.Core.Application.Method CustomerAddTel = a.CustomerAddTel, CustomerBankId = a.CustomerBankId, - CustomerBankName = b1.BankName, - CustomerAccount = b1.Account, - + CustomerBankName = b1.BankName + " " + b1.Account, USDCustomerBankId = a.USDCustomerBankId, - USDCustomerBankName = b2.BankName, - USDCustomerAccount = b2.Account + USDCustomerBankName = b2.BankName + " " + b2.Account }).FirstAsync(); if (dto != null) @@ -410,18 +407,17 @@ namespace DS.WMS.Core.Application.Method return rows > 0 ? DataResult.Success : DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed)); } - protected override async Task> GetDetailsAsync(IEnumerable items) + protected override async Task> GetDetailsAsync(IEnumerable items, List? conditions) { var ids1 = items.Select(x => x.Id); var ids2 = items.Select(x => x.BusinessType); var list = await TenantDb.Queryable().Where(x => ids1.Contains(x.BusinessId) && ids2.Contains(x.BusinessType) && x.FeeStatus == FeeStatus.AuditPassed) + .Where(conditions) .Select(x => new ApplicationDetail { Id = x.Id, - //BusinessId = x.BusinessId, - //BusinessType = x.BusinessType, ApplyAmount = x.Amount - x.InvoiceAmount - x.OrderInvoiceAmount + x.OrderInvSettlementAmount, ExchangeRate = x.ExchangeRate, OriginalCurrency = x.Currency @@ -434,14 +430,11 @@ namespace DS.WMS.Core.Application.Method return list; } - protected override DataResult EnsureApplication(InvoiceApplication application, InvoiceApplication dbValue) + protected override DataResult EnsureApplication(InvoiceApplication application, InvoiceApplication? dbValue) { if (dbValue != null && dbValue.Status != InvoiceApplicationStatus.Pending && dbValue.Status != InvoiceApplicationStatus.AuditRejected) return DataResult.FailedWithDesc(nameof(MultiLanguageConst.ApplicationSaveStatusError)); - if (application.Currency.IsNullOrEmpty()) - application.Currency = FeeCurrency.RMB_CODE; - return DataResult.Success; } diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationAuditService.cs b/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationAuditService.cs index 5cfbcd75..c4098efe 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationAuditService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationAuditService.cs @@ -15,10 +15,12 @@ using SqlSugar; namespace DS.WMS.Core.Application.Method { /// - /// 费用申请单审核服务 + /// 付费申请审核服务 /// public class PaymentApplicationAuditService : ApplicationAuditService, IPaymentApplicationAuditService { + public override TaskBaseTypeEnum AuditType => TaskBaseTypeEnum.APPLICATION_PAYMENT_AUDIT; + /// /// 初始化 /// @@ -51,7 +53,7 @@ namespace DS.WMS.Core.Application.Method break; case AuditStatusForQuery.MarkerOnly: - var ids = await GetCurrentFlowsQuery(AuditTypes).Select(x => x.BusinessId).ToListAsync(); + var ids = await GetCurrentFlowsQuery([AuditType]).Select(x => x.BusinessId).ToListAsync(); if (ids.Count == 0) ids.Add(0L); query = query.Where(x => ids.Contains(x.Id)); diff --git a/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs b/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs index 3534198f..abd34114 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs @@ -376,13 +376,14 @@ namespace DS.WMS.Core.Application.Method return DataResult.Success(dto); } - protected override async Task> GetDetailsAsync(IEnumerable items) + protected override async Task> GetDetailsAsync(IEnumerable items, List? conditions) { var ids1 = items.Select(x => x.Id); var ids2 = items.Select(x => x.BusinessType); var list = await TenantDb.Queryable().Where(x => ids1.Contains(x.BusinessId) && ids2.Contains(x.BusinessType) && x.FeeStatus == FeeStatus.AuditPassed) + .Where(conditions) .Select(x => new ApplicationDetail { RecordId = x.Id, @@ -400,7 +401,7 @@ namespace DS.WMS.Core.Application.Method } - protected override DataResult EnsureApplication(PaymentApplication application, PaymentApplication dbValue) + protected override DataResult EnsureApplication(PaymentApplication application, PaymentApplication? dbValue) { if (dbValue != null) { diff --git a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeAuditService.cs b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeAuditService.cs index f4a59cca..7bdbbfa0 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeAuditService.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeAuditService.cs @@ -15,7 +15,6 @@ using DS.WMS.Core.Sys.Entity; using Mapster; using Microsoft.Extensions.DependencyInjection; using SqlSugar; -using static AnyDiff.DifferenceLines; namespace DS.WMS.Core.Fee.Method { diff --git a/ds-wms-service/DS.WMS.Core/Info/Entity/InfoClient.cs b/ds-wms-service/DS.WMS.Core/Info/Entity/InfoClient.cs index c6c1a390..fc1778c0 100644 --- a/ds-wms-service/DS.WMS.Core/Info/Entity/InfoClient.cs +++ b/ds-wms-service/DS.WMS.Core/Info/Entity/InfoClient.cs @@ -56,8 +56,8 @@ public class InfoClient : SharedOrgModel /// /// Desc:邮箱 /// - [SugarColumn(ColumnDescription = "邮箱", Length = 50)] - public string Email { get; set; } + [SugarColumn(ColumnDescription = "邮箱", IsNullable = true, Length = 50)] + public string? Email { get; set; } /// /// Desc:网页 diff --git a/ds-wms-service/DS.WMS.Core/Info/Method/ClientBankService.cs b/ds-wms-service/DS.WMS.Core/Info/Method/ClientBankService.cs index 79a5a1ff..56055d00 100644 --- a/ds-wms-service/DS.WMS.Core/Info/Method/ClientBankService.cs +++ b/ds-wms-service/DS.WMS.Core/Info/Method/ClientBankService.cs @@ -30,10 +30,21 @@ public class ClientBankService : ServiceBase, IClientBankService { //序列化查询条件 var whereList = request.GetConditionalModels(Db); - var data = TenantDb.Queryable() + var result = TenantDb.Queryable() .Where(whereList) .Select().ToQueryPage(request.PageCondition); - return data; + + if (result.Data?.Count > 0) + { + var ids = result.Data.Select(x => x.Id); + var list = TenantDb.Queryable().Where(x => ids.Contains(x.RelativeId)).ToList(); + foreach (var item in result.Data) + { + item.InvoiceHeaders = list.FindAll(x => x.RelativeId == item.Id); + } + } + + return result; } /// diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskMailService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskMailService.cs index 78fbff77..639200cf 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskMailService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskMailService.cs @@ -7,7 +7,7 @@ using DS.WMS.Core.Op.Interface.TaskInteraction; namespace DS.WMS.Core.Op.Method.TaskInteraction { /// - /// 邮件配置服务 + /// 邮件模板配置服务 /// public class TaskMailService : ServiceBase, ITaskMailService { @@ -27,7 +27,8 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction public async Task>> GetListAsync(PageRequest request) { var whereList = request.GetConditionalModels(Db); - return await TenantDb.Queryable().Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.CC) + return await TenantDb.Queryable() + .Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.CC) .Where(whereList).ToQueryPageAsync(request.PageCondition); } @@ -39,7 +40,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction public async Task> GetAsync(long id) { var entity = await TenantDb.Queryable() - .Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.Attachments).Includes(x => x.CC) + .Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.CC).Includes(x => x.Attachments) .Where(x => x.Id == id).FirstAsync(); return DataResult.Success(entity); @@ -53,8 +54,8 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction public async Task GetAsync(string name) { return await TenantDb.Queryable() - .Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.Attachments).Includes(x => x.CC) - .Where(x => x.Name == name).FirstAsync(); + .Includes(x => x.Receiver).Includes(x => x.Sender).Includes(x => x.CC).Includes(x => x.Attachments) + .Where(x => x.Name.Contains(name)).FirstAsync(); } /// @@ -73,11 +74,15 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction taskMail.Sender ??= new(); taskMail.CC ??= new(); - taskMail = await TenantDb.InsertNav(taskMail).Include(x => x.Receiver).Include(x => x.Sender).ExecuteReturnEntityAsync(); + taskMail = await TenantDb.InsertNav(taskMail) + .Include(x => x.Receiver).Include(x => x.Sender).Include(x => x.CC) + .ExecuteReturnEntityAsync(); } else { - await TenantDb.UpdateNav(taskMail).Include(x => x.Receiver).Include(x => x.Sender).ExecuteCommandAsync(); + await TenantDb.UpdateNav(taskMail) + .Include(x => x.Receiver).Include(x => x.Sender).Include(x => x.CC) + .ExecuteCommandAsync(); } if (taskMail.Attachments?.Count > 0) @@ -88,6 +93,8 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction await TenantDb.Deleteable().Where(x => x.TaskMailId == taskMail.Id).ExecuteCommandAsync(); await TenantDb.Insertable(taskMail.Attachments).ExecuteCommandAsync(); + + //await TenantDb.Storageable(taskMail.Attachments).DefaultAddElseUpdate().ExecuteCommandAsync(); } await TenantDb.Ado.CommitTranAsync(); @@ -113,7 +120,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction try { await TenantDb.DeleteNav(x => model.Ids.Contains(x.Id)) - .Include(x => x.Receiver).Include(x => x.Sender).Include(x => x.Attachments) + .Include(x => x.Receiver).Include(x => x.Sender).Include(x => x.CC).Include(x => x.Attachments) .ExecuteCommandAsync(); await TenantDb.Ado.CommitTranAsync(); @@ -127,6 +134,5 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction } } - } } diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs index 668f1be6..6b0cd3ca 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs @@ -24,5 +24,22 @@ /// 接收人信息姓名 /// public string RecvUserName { get; set; } + + /// + /// 任务主键 + /// + public long TaskId { get; set; } + /// + /// 接收人信息状态 + /// + public string RecvUserStatus { get; set; } + /// + /// 接收人信息状态名称 + /// + public string RecvUserStatusName { get; set; } + /// + /// 接收人信息状态时间 + /// + public DateTime? RecvUserStatusTime { get; set; } } } diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs index 386749b0..886c7ddb 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs @@ -36,8 +36,8 @@ namespace DS.WMS.Core.TaskPlat.Entity /// /// 状态名称 /// - [SugarColumn(ColumnDescription = "状态名称", IsNullable = true, Length = 50)] - public string? StatusName { get; set; } + [SugarColumn(ColumnDescription = "状态名称", IsNullable = false, Length = 50, DefaultValue = "")] + public string StatusName { get; set; } = ""; /// /// 状态发生时间 diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs index 8e9c016a..5871ab7b 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBCService.cs @@ -2688,10 +2688,10 @@ namespace DS.WMS.Core.TaskPlat.Method { return DataResult.Failed("未执行:" + seaExport.Message); } - if (seaExport.Data.MBLNO != taskBcInfo.MBL_NO && seaExport.Data.BookingNo != taskBcInfo.MBL_NO) - { - return DataResult.Failed(string.Format(MultiLanguageConst.GetDescription(MultiLanguageConst.BCMblnoNotMatchSeaexport), seaExport.Data.MBLNO, taskBcInfo.MBL_NO)); - } + //if (seaExport.Data.MBLNO != taskBcInfo.MBL_NO && seaExport.Data.BookingNo != taskBcInfo.MBL_NO) + //{ + // return DataResult.Failed(string.Format(MultiLanguageConst.GetDescription(MultiLanguageConst.BCMblnoNotMatchSeaexport), seaExport.Data.MBLNO, taskBcInfo.MBL_NO)); + //} TaskFlowDataContext dataContext = new((TaskFlowDataNameConst.Business, seaExport.Data)); @@ -2699,10 +2699,10 @@ namespace DS.WMS.Core.TaskPlat.Method var taskInfo = new TaskBaseInfo { Id = SnowFlakeSingle.Instance.NextId(), - STATUS = TaskStatusEnum.Complete.ToString(), - STATUS_NAME = TaskStatusEnum.Complete.EnumDescription(), + STATUS = TaskStatusEnum.Create.ToString(), + STATUS_NAME = TaskStatusEnum.Create.EnumDescription(), IS_EXCEPT = 0, - IS_COMPLETE = 1, + IS_COMPLETE = 0, MBL_NO = taskBcInfo.MBL_NO, TASK_TYPE = TaskBaseTypeEnum.BC.ToString(), TASK_TYPE_NAME = TaskBaseTypeEnum.BC.EnumDescription(), @@ -2923,7 +2923,7 @@ namespace DS.WMS.Core.TaskPlat.Method TaskFlowRuner taskFlow = new TaskFlowRuner(tenantDb, serviceProvider); await taskFlow.Run(TaskBaseTypeEnum.BC, taskInfo.Id, dataContext); - return DataResult.Successed("上传完成,请审核相关任务及订单状态", MultiLanguageConst.UploadBcThenRunTaskSuccess); + return DataResult.Successed("上传完成,请查看相关任务状态", MultiLanguageConst.UploadBcThenRunTaskSuccess); } /// diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBaseService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBaseService.cs index 4c4fb666..7470fdb7 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBaseService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageBaseService.cs @@ -351,10 +351,12 @@ namespace DS.WMS.Core.TaskPlat.Method //任务不考虑OrgId,这里去掉 tenantDb.QueryFilter.Clear(); + var time = DateTime.Now.AddMonths(-3); var taskList = await tenantDb.Queryable() .Where(x => x.IS_PUBLIC == 1 && x.STATUS == TaskStatusEnum.Create.ToString() - && !string.IsNullOrEmpty(x.MBL_NO)) + && !string.IsNullOrEmpty(x.MBL_NO) + && x.CreateTime > time) .WhereIF(taskIdList != null && taskIdList.Count > 0, x => taskIdList!.Contains(x.Id)) //.Where(x => x.Id == 1813475270208917504 || x.Id == 1816277472539447296 || x.Id == 1813509723408961536) .ToListAsync(x => new TaskBaseInfo @@ -588,8 +590,8 @@ namespace DS.WMS.Core.TaskPlat.Method x.StatusName = taskStatusEnum.EnumDescription(); x.StatusTime = statusTime; }); - - await tenantDb.Updateable(taskBaseAllocationList).UpdateColumns(x => new + + await tenantDb.CopyNew().Updateable(taskBaseAllocationList).UpdateColumns(x => new { x.UpdateBy, x.UpdateTime, diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs index a335a3db..116ad7da 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs @@ -1716,441 +1716,456 @@ namespace DS.WMS.Core.TaskPlat.Method //throw new ArgumentException("TaskCategory"); } - var userId = long.Parse(user.UserId); - DataResult> result; - switch (taskType) + DataResult> result = new(); + try { - case TaskBaseTypeEnum.BC: - { - var queryable = tenantDb.Queryable() - .LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + switch (taskType) + { + case TaskBaseTypeEnum.BC: + { + var queryable = tenantDb.Queryable() + .LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + Id = t.Id.SelectAll(), + bc.BUSI_TYPE, + bc.SHIPPER, + bc.CONSIGNEE, + bc.NOTIFYPARTY, + bc.BC_MODIFY_TIMES, + bc.BC_MODIFY_DATE, + //bc.MBL_NO, + bc.VESSEL, + bc.VOYNO, + bc.CARRIER, + bc.PLACERECEIPT, + bc.PORTLOAD, + bc.CLOSING_DATE, + bc.VGM_CUTOFF_TIME, + bc.ETA, + //bc.ETD, + bc.POD_ETA, + bc.CUT_SINGLE_TIME, + bc.PORTDISCHARGE, + bc.PLACEDELIVERY, + bc.SHIPPING_METHOD, + bc.SERVICE, + bc.PRETRANS_MODE, + bc.DESCRIPTION, + bc.ISSUEPLACE, + bc.COLLECTION_TERMINAL, + bc.CONTRACTNO, + bc.PREPARDAT, + bc.SHIP_AGENT, + bc.YARD, + bc.YARD_CONTACT_USR, + bc.YARD_CONTACT_TEL, + bc.FST_CUSTOMER_SER_USRNAME, + bc.FST_CUSTOMER_SER_TEL, + bc.FST_CUSTOMER_SER_EMAIL, + bc.REMARK1, + bc.CY_CUTOFF_TIME, + bc.CARRIERID, + bc.LANECODE, + bc.LANENAME, + bc.CARRIAGE_TYPE, + bc.CARRIAGE_TYPE_NAME, + bc.BOOKING_SLOT_TYPE, + bc.BOOKING_SLOT_TYPE_NAME, + bc.CTN_STAT, + bc.WEEK_AT, + bc.DETENSION_FREE_DAYS, + bc.SI_CUT_DATE, + bc.MANIFEST_CUT_DATE, + bc.MDGF_CUT_DATE, + bc.TRANSFER_PORT_1, + bc.TRANSFER_PORT_2, + bc.SECOND_VESSEL, + bc.SECOND_VOYNO, + bc.SECOND_ETD, + bc.SECOND_ETA, + //bc.STATUS, + bc.FILE_MD5, + bc.LAST_TOBOOKING_DATE, + bc.FROM_EMAIL, + bc.RECV_EMAIL, + bc.BOOKING_ORDER_ID, + bc.BOOKING_SLOT_ID, + bc.BOOKING_COMFIRM_DATE, + bc.BATCH_NO, + bc.CUSTOM_SI_CUT_DATE, + bc.IS_SET_AUTO_EMAIL, + bc.IS_SEND_EMAIL, + bc.DIFF_NUM, + bc.AUTO_SEND_USER, + bc.PROCESS_STATUS, + bc.PROCESS_RESULT, + bc.PROCESS_DATE, + bc.PRICE_CALCULATION_DATE + }) + .Distinct().ToQueryPageAsync(querySearch.PageCondition); + + //var sql = queryable.ToSqlString(); + return result; + } + case TaskBaseTypeEnum.SI_FEEDBACK: { - Id = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.BUSI_TYPE, - bc.SHIPPER, - bc.CONSIGNEE, - bc.NOTIFYPARTY, - bc.BC_MODIFY_TIMES, - bc.BC_MODIFY_DATE, - //bc.MBL_NO, - bc.VESSEL, - bc.VOYNO, - bc.CARRIER, - bc.PLACERECEIPT, - bc.PORTLOAD, - bc.CLOSING_DATE, - bc.VGM_CUTOFF_TIME, - bc.ETA, - //bc.ETD, - bc.POD_ETA, - bc.CUT_SINGLE_TIME, - bc.PORTDISCHARGE, - bc.PLACEDELIVERY, - bc.SHIPPING_METHOD, - bc.SERVICE, - bc.PRETRANS_MODE, - bc.DESCRIPTION, - bc.ISSUEPLACE, - bc.COLLECTION_TERMINAL, - bc.CONTRACTNO, - bc.PREPARDAT, - bc.SHIP_AGENT, - bc.YARD, - bc.YARD_CONTACT_USR, - bc.YARD_CONTACT_TEL, - bc.FST_CUSTOMER_SER_USRNAME, - bc.FST_CUSTOMER_SER_TEL, - bc.FST_CUSTOMER_SER_EMAIL, - bc.REMARK1, - bc.CY_CUTOFF_TIME, - bc.CARRIERID, - bc.LANECODE, - bc.LANENAME, - bc.CARRIAGE_TYPE, - bc.CARRIAGE_TYPE_NAME, - bc.BOOKING_SLOT_TYPE, - bc.BOOKING_SLOT_TYPE_NAME, - bc.CTN_STAT, - bc.WEEK_AT, - bc.DETENSION_FREE_DAYS, - bc.SI_CUT_DATE, - bc.MANIFEST_CUT_DATE, - bc.MDGF_CUT_DATE, - bc.TRANSFER_PORT_1, - bc.TRANSFER_PORT_2, - bc.SECOND_VESSEL, - bc.SECOND_VOYNO, - bc.SECOND_ETD, - bc.SECOND_ETA, - //bc.STATUS, - bc.FILE_MD5, - bc.LAST_TOBOOKING_DATE, - bc.FROM_EMAIL, - bc.RECV_EMAIL, - bc.BOOKING_ORDER_ID, - bc.BOOKING_SLOT_ID, - bc.BOOKING_COMFIRM_DATE, - bc.BATCH_NO, - bc.CUSTOM_SI_CUT_DATE, - bc.IS_SET_AUTO_EMAIL, - bc.IS_SEND_EMAIL, - bc.DIFF_NUM, - bc.AUTO_SEND_USER, - bc.PROCESS_STATUS, - bc.PROCESS_RESULT, - bc.PROCESS_DATE, - bc.PRICE_CALCULATION_DATE - }) - .Distinct().ToQueryPageAsync(querySearch.PageCondition); - - //var sql = queryable.ToSqlString(); - return result; - } - case TaskBaseTypeEnum.SI_FEEDBACK: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.CARRIER, + //bc.MBL_NO, + bc.TAKE_ISSUETYPE_NAME, + bc.ISSUETYPE, + bc.NOTICE_DATE, + bc.BOOKING_ID, + bc.SUBMITTED_DATE, + bc.BILLOF_NUM, + bc.RELEASE_INSTRUCTION, + bc.SI_SUBTYPE, + bc.SHIPPER, + bc.CONSIGNEE, + bc.NOTIFYPARTY, + bc.NOTIFYPARTY2, + bc.TRANSPORT_RECEIVER, + bc.MARKS, + bc.HSCODE, + bc.DESCRIPTION, + bc.PKGS, + bc.KINDPKGS, + bc.KGS, + bc.CBM, + bc.VESSEL, + bc.VOYNO, + bc.COMMODITY, + bc.PLACERECEIPTID, + bc.PLACERECEIPT, + bc.PORTLOADID, + bc.PORTLOAD, + bc.PORTDISCHARGEID, + bc.PORTDISCHARGE, + bc.PLACEDELIVERYID, + bc.PLACEDELIVERY, + bc.PROCESS_STATUS, + bc.IS_SET_AUTO_UPD_BOOKING, + bc.PROCESS_RESULT, + bc.PROCESS_DATE, + bc.DIFF_NUM, + bc.IS_UPDATE_BOOKING, + bc.UPDATE_BOOKING_DATE + }) + .Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.INVOICE_BILL_MAIL: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.CARRIER, - //bc.MBL_NO, - bc.TAKE_ISSUETYPE_NAME, - bc.ISSUETYPE, - bc.NOTICE_DATE, - bc.BOOKING_ID, - bc.SUBMITTED_DATE, - bc.BILLOF_NUM, - bc.RELEASE_INSTRUCTION, - bc.SI_SUBTYPE, - bc.SHIPPER, - bc.CONSIGNEE, - bc.NOTIFYPARTY, - bc.NOTIFYPARTY2, - bc.TRANSPORT_RECEIVER, - bc.MARKS, - bc.HSCODE, - bc.DESCRIPTION, - bc.PKGS, - bc.KINDPKGS, - bc.KGS, - bc.CBM, - bc.VESSEL, - bc.VOYNO, - bc.COMMODITY, - bc.PLACERECEIPTID, - bc.PLACERECEIPT, - bc.PORTLOADID, - bc.PORTLOAD, - bc.PORTDISCHARGEID, - bc.PORTDISCHARGE, - bc.PLACEDELIVERYID, - bc.PLACEDELIVERY, - bc.PROCESS_STATUS, - bc.IS_SET_AUTO_UPD_BOOKING, - bc.PROCESS_RESULT, - bc.PROCESS_DATE, - bc.DIFF_NUM, - bc.IS_UPDATE_BOOKING, - bc.UPDATE_BOOKING_DATE - }) - .Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.INVOICE_BILL_MAIL: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_PKID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_PKID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_PKID, + //bc.MBL_NO, + bc.INVOICE_NO, + bc.CANCEL_NO, + bc.TOTAL_AMOUNT, + bc.IS_DONGSH_RECV, + bc.IS_DONGSH_RESULT, + bc.DONGSH_RECV_TIME, + bc.DONGSH_RESULT_TIME, + bc.DONGSH_RECV_REASON + }) + .Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.TRUCK_DISPATCH: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_PKID, - //bc.MBL_NO, - bc.INVOICE_NO, - bc.CANCEL_NO, - bc.TOTAL_AMOUNT, - bc.IS_DONGSH_RECV, - bc.IS_DONGSH_RESULT, - bc.DONGSH_RECV_TIME, - bc.DONGSH_RESULT_TIME, - bc.DONGSH_RECV_REASON - }) - .Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.TRUCK_DISPATCH: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.BookingTruckId, + bc.BookingId, + bc.TruckId, + bc.TruckCode, + bc.TruckName, + bc.ToName, + bc.Attn, + bc.AttnTel, + bc.AttnMail, + bc.AttnFax, + bc.FromName, + bc.FromTel, + bc.FromMail, + bc.FromMobile, + bc.FromFax, + bc.KGS, + bc.Fee, + bc.PayMethod, + bc.PayMethodName, + bc.TruckTime, + bc.YARDID, + bc.YARD, + bc.YARDCONTRACT, + bc.YARDCONTRACTTEL, + bc.FactoryId, + bc.FactoryCode, + bc.FactoryName, + bc.FactoryContact, + bc.FactoryTel, + bc.ReturnTime, + bc.InYardID, + bc.InYard, + bc.InYardContact, + bc.InYardContractTel, + //bc.NeedArriveTime, + bc.ClosingTime, + bc.PickUpTime, + bc.IsGuaJi, + //bc.Status, + bc.Attention, + bc.Remark, + bc.DispatcherId, + bc.DispatcherName, + bc.TruckFlowNo, + bc.TaskNo, + bc.Vessel, + bc.VoyNo, + bc.MBLNo, + bc.CntrTotal, + bc.FactoryAddr + }) + .Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.CUT_MODIFY: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.BookingTruckId, - bc.BookingId, - bc.TruckId, - bc.TruckCode, - bc.TruckName, - bc.ToName, - bc.Attn, - bc.AttnTel, - bc.AttnMail, - bc.AttnFax, - bc.FromName, - bc.FromTel, - bc.FromMail, - bc.FromMobile, - bc.FromFax, - bc.KGS, - bc.Fee, - bc.PayMethod, - bc.PayMethodName, - bc.TruckTime, - bc.YARDID, - bc.YARD, - bc.YARDCONTRACT, - bc.YARDCONTRACTTEL, - bc.FactoryId, - bc.FactoryCode, - bc.FactoryName, - bc.FactoryContact, - bc.FactoryTel, - bc.ReturnTime, - bc.InYardID, - bc.InYard, - bc.InYardContact, - bc.InYardContractTel, - //bc.NeedArriveTime, - bc.ClosingTime, - bc.PickUpTime, - bc.IsGuaJi, - //bc.Status, - bc.Attention, - bc.Remark, - bc.DispatcherId, - bc.DispatcherName, - bc.TruckFlowNo, - bc.TaskNo, - bc.Vessel, - bc.VoyNo, - bc.MBLNo, - bc.CntrTotal, - bc.FactoryAddr - }) - .Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.CUT_MODIFY: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.CARRIER, + bc.VESSEL, + bc.VOYNO, + bc.NOTICE_DATE + }) + .Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.ROLLING_NOMINATION: + case TaskBaseTypeEnum.TRANSFER_NOMINATION: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.CARRIER, - bc.VESSEL, - bc.VOYNO, - bc.NOTICE_DATE - }) - .Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.ROLLING_NOMINATION: - case TaskBaseTypeEnum.TRANSFER_NOMINATION: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.PLAN_TYPE, + bc.BATCH_NO, + bc.CARRIERID, + bc.CARRIER, + bc.CONFIRM_DEAD_LINE, + bc.READ_CREATE_TIME, + bc.ROLL_DOUBLE_REMARK, + bc.PLAN_TXT, + //bc.REMARK, + bc.TASK_BATCH_TOTAL, + bc.TASK_BATCH_PER_TOTAL + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.DRAFT: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.PLAN_TYPE, - bc.BATCH_NO, - bc.CARRIERID, - bc.CARRIER, - bc.CONFIRM_DEAD_LINE, - bc.READ_CREATE_TIME, - bc.ROLL_DOUBLE_REMARK, - bc.PLAN_TXT, - //bc.REMARK, - bc.TASK_BATCH_TOTAL, - bc.TASK_BATCH_PER_TOTAL - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.DRAFT: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.CARRIER, + //bc.MBL_NO, + bc.BOOKING_ID, + bc.IS_CHANGE, + bc.IS_EMAIL_SEND, + bc.SEND_EMAIL_DATE, + bc.NOTICE_DATE, + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.POD_DISCHARGE_FULL: + case TaskBaseTypeEnum.POD_GATEOUT_FULL: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.CARRIER, - //bc.MBL_NO, - bc.BOOKING_ID, - bc.IS_CHANGE, - bc.IS_EMAIL_SEND, - bc.SEND_EMAIL_DATE, - bc.NOTICE_DATE, - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.POD_DISCHARGE_FULL: - case TaskBaseTypeEnum.POD_GATEOUT_FULL: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.CARRIER, + bc.NOTICE_TYPE, + bc.NOTICE_TYPE_NAME, + //bc.MBL_NO, + bc.NOTICE_DATE + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.CAUTION_NOTICE: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.CARRIER, - bc.NOTICE_TYPE, - bc.NOTICE_TYPE_NAME, - //bc.MBL_NO, - bc.NOTICE_DATE - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.CAUTION_NOTICE: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.SOURCE_SYSTEM, + bc.SOURCE_BUSI_TYPE, + bc.SOURCE_BUSI_TYPENAME, + bc.NOTIFY_CONTENT, + //bc.MBL_NO, + bc.CARRIER, + bc.CAUTION_NOTICE_TYPE, + bc.IS_WEEK_DIFF, + bc.IS_PRICE_DATE_DIFF, + bc.IS_TRANSFER, + bc.IS_VESSEL_CHANGE, + bc.IS_CUT_DATE_ADVANCED, + bc.BOOKING_ID, + bc.BOOKING_SLOT_ID, + bc.SOURCE_TASK_ID, + bc.OLD_VAL, + bc.NEW_VAL, + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + case TaskBaseTypeEnum.ROUTE_CUT_CHANGE: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.SOURCE_SYSTEM, - bc.SOURCE_BUSI_TYPE, - bc.SOURCE_BUSI_TYPENAME, - bc.NOTIFY_CONTENT, - //bc.MBL_NO, - bc.CARRIER, - bc.CAUTION_NOTICE_TYPE, - bc.IS_WEEK_DIFF, - bc.IS_PRICE_DATE_DIFF, - bc.IS_TRANSFER, - bc.IS_VESSEL_CHANGE, - bc.IS_CUT_DATE_ADVANCED, - bc.BOOKING_ID, - bc.BOOKING_SLOT_ID, - bc.SOURCE_TASK_ID, - bc.OLD_VAL, - bc.NEW_VAL, - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - case TaskBaseTypeEnum.ROUTE_CUT_CHANGE: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) - .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId) + .LeftJoin((t, a, bc) => t.Id == bc.TASK_ID); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a, bc) => new + result = await queryable.Select((t, a, bc) => new + { + PK_ID = t.Id.SelectAll(), + bc.TASK_ID, + bc.VESSEL, + bc.VOYNO, + bc.CARRIER, + bc.READ_PORTLOAD, + bc.ORIG_ETD, + bc.MDGF_CUT_DATE, + bc.ETA, + //bc.ETD, + bc.SI_CUT_DATE, + bc.TM_SHIFT_CUT_DATE, + bc.VGM_CUTOFF_TIME, + bc.CY_CUT_DATE, + bc.ROUTE_CODE, + bc.EMAIL_SUBJECT, + bc.WEEK, + bc.PORTLOADID, + bc.PORTLOAD + + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + return result; + } + default: { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime, - bc.TASK_ID, - bc.VESSEL, - bc.VOYNO, - bc.CARRIER, - bc.READ_PORTLOAD, - bc.ORIG_ETD, - bc.MDGF_CUT_DATE, - bc.ETA, - //bc.ETD, - bc.SI_CUT_DATE, - bc.TM_SHIFT_CUT_DATE, - bc.VGM_CUTOFF_TIME, - bc.CY_CUT_DATE, - bc.ROUTE_CODE, - bc.EMAIL_SUBJECT, - bc.WEEK, - bc.PORTLOADID, - bc.PORTLOAD - - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); - return result; - } - default: - { - var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId); + var queryable = tenantDb.Queryable().LeftJoin((t, a) => t.Id == a.TaskId); - SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); + SetCondition(queryable, whereList, taskType, taskStatLevel, querySearch.OtherQueryCondition, userId); - result = await queryable.Select((t, a) => new + result = await queryable.Select((t, a) => new + { + PK_ID = t.Id.SelectAll(), + //TASK_USER_STATUS = a.Status, + //TASK_USER_STATUS_NAME = a.StatusName, + //TASK_USER_STATUS_TIME = a.StatusTime + }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + + return result; + } + } + } + finally + { + if (result.Data?.Count > 0) + { + var taskIdList = result.Data.Select(x => (long)x.Id).ToList(); + + var allRecvUserList = await tenantDb.Queryable() + .Where(x => taskIdList.Contains(x.TaskId)) + .Select(x => new RecvUserInfo() + { + TaskId = x.TaskId, + RecvUserId = x.UserId, + RecvUserName = x.UserName, + RecvUserStatus = x.Status, + RecvUserStatusName = x.StatusName, + RecvUserStatusTime = x.StatusTime + }).ToListAsync(); + + if (allRecvUserList.Count > 0) + { + foreach (var item in result.Data) { - PK_ID = t.Id.SelectAll(), - TASK_USER_STATUS = a.Status, - TASK_USER_STATUS_NAME = a.StatusName, - TASK_USER_STATUS_TIME = a.StatusTime - }).Distinct().ToQueryPageAsync(querySearch.PageCondition); + var recvUserList = allRecvUserList.Where(x => x.TaskId == item.Id).ToList(); + var currentUserStatus = recvUserList.FirstOrDefault(x => x.RecvUserId == userId); + if (currentUserStatus != null) + { + var n = recvUserList.IndexOf(currentUserStatus); + if (n != 0) + { + recvUserList.RemoveAt(n); + recvUserList.Insert(0, currentUserStatus); + } - return result; + item.TASK_USER_STATUS = currentUserStatus.RecvUserStatus; + item.TASK_USER_STATUS_NAME = currentUserStatus.RecvUserStatusName; + item.TASK_USER_STATUS_TIME = currentUserStatus.RecvUserStatusTime; + } + + item.RecvUserList = recvUserList; + } } + } } } /// @@ -2212,7 +2227,7 @@ namespace DS.WMS.Core.TaskPlat.Method .LeftJoin((t, a) => t.Id == a.TaskId) .Where(whereList) .Where((t, a) => t.STATUS != TaskStatusEnum.Cancel.ToString()) - .Where((t, a) => t.IS_PUBLIC == 1 || (t.IS_PUBLIC == 0 && a.Status != null && (a.UserId == userId))) // 2024-8-14 boss提出只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || + .Where((t, a) => t.IS_PUBLIC == 1 || (t.IS_PUBLIC == 0 && a.Status != null && (a.UserId == userId))) // 2024-8-14 只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || .WhereIF(!string.IsNullOrEmpty(querySearch.BusinessNo), (t, a) => t.MBL_NO == querySearch.BusinessNo || t.CUSTOMER_NO == querySearch.BusinessNo) .GroupBy((t, a) => new { t.TASK_TYPE, t.STATUS, a.Status, t.IS_PUBLIC }) .Select((t, a) => new @@ -2685,7 +2700,7 @@ namespace DS.WMS.Core.TaskPlat.Method .WhereIF(!string.IsNullOrEmpty(queryTaskManageDto.BusinessNo), (t, a) => t.MBL_NO == queryTaskManageDto.BusinessNo || t.CUSTOMER_NO == queryTaskManageDto.BusinessNo) .WhereIF(taskStatLevel == TaskStatLevelEnum.PUBLIC, (t, a) => t.IS_PUBLIC == 1 && t.STATUS == queryTaskManageDto.Status) .WhereIF(taskStatLevel == TaskStatLevelEnum.PERSON, (t, a) => t.IS_PUBLIC == 0 - && (a.UserId == userId) // 2024-8-14 boss提出只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || + && (a.UserId == userId) // 2024-8-14 只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || && a.Status == queryTaskManageDto.Status) .OrderByDescending(t => t.Id); } @@ -2707,7 +2722,7 @@ namespace DS.WMS.Core.TaskPlat.Method .WhereIF(!string.IsNullOrEmpty(queryTaskManageDto.BusinessNo), (t, a) => t.MBL_NO == queryTaskManageDto.BusinessNo || t.CUSTOMER_NO == queryTaskManageDto.BusinessNo) .WhereIF(taskStatLevel == TaskStatLevelEnum.PUBLIC, (t, a) => t.IS_PUBLIC == 1 && t.STATUS == queryTaskManageDto.Status) .WhereIF(taskStatLevel == TaskStatLevelEnum.PERSON, (t, a) => t.IS_PUBLIC == 0 - && (a.UserId == userId) // 2024-8-14 boss提出只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || + && (a.UserId == userId) // 2024-8-14 只显示自己需要审批的任务,自己创建的任务不显示,所以去掉t.CreateBy == userId || && a.Status == queryTaskManageDto.Status) .OrderByDescending(t => t.Id); } diff --git a/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user b/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user index 0b30801e..19970e39 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user +++ b/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>D:\Publish\DS8\FeeApi - True|2024-09-03T02:01:09.7656702Z||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;True|2024-05-22T16:52:42.2166228+08:00||;True|2024-05-22T15:19:49.1773202+08:00||;True|2024-05-22T15:13:31.9485525+08:00||;True|2024-05-22T13:29:02.1355808+08:00||;True|2024-05-22T09:48:40.8753914+08:00||;True|2024-05-22T09:25:06.2068137+08:00||;True|2024-05-22T09:18:53.0759815+08:00||;True|2024-05-21T17:13:36.4091775+08:00||;True|2024-05-21T14:41:18.8486299+08:00||;True|2024-05-21T11:04:27.3649637+08:00||; + True|2024-09-03T08:41:23.7516960Z||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;True|2024-05-22T16:52:42.2166228+08:00||;True|2024-05-22T15:19:49.1773202+08:00||;True|2024-05-22T15:13:31.9485525+08:00||;True|2024-05-22T13:29:02.1355808+08:00||;True|2024-05-22T09:48:40.8753914+08:00||;True|2024-05-22T09:25:06.2068137+08:00||;True|2024-05-22T09:18:53.0759815+08:00||;True|2024-05-21T17:13:36.4091775+08:00||;True|2024-05-21T14:41:18.8486299+08:00||; \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user b/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user index 21e5222f..fb7be066 100644 --- a/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user +++ b/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user @@ -1,7 +1,7 @@  - D:\Code\ds8-solution-pro\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml + D:\Source\Repos\DS8\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml MvcControllerEmptyScaffolder root/Common/MVC/Controller