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 6b4d3c3c..93edd2e6 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 @@ -6,6 +6,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 Microsoft.Extensions.DependencyInjection; namespace DS.WMS.Core.Application.Method @@ -22,6 +24,7 @@ namespace DS.WMS.Core.Application.Method public abstract TaskBaseTypeEnum AuditType { get; } readonly IClientFlowInstanceService flowService; + readonly ITaskService taskService; /// /// 初始化 @@ -30,6 +33,7 @@ namespace DS.WMS.Core.Application.Method public ApplicationAuditService(IServiceProvider serviceProvider) : base(serviceProvider) { flowService = serviceProvider.GetRequiredService(); + taskService = serviceProvider.GetRequiredService(); } /// @@ -69,23 +73,41 @@ namespace DS.WMS.Core.Application.Method if (!result.Succeeded) return result; - var flows = await flowService.GetInstanceByBSIdAsync(AuditType, null, request.Ids); - if (flows.Count != request.Ids.Length) - return DataResult.FailedWithDesc(nameof(MultiLanguageConst.FlowNotFound)); - - List list = []; - foreach (var item in flows) + bool hasAuthorized = await taskService.HasAuthorizedAsync(); + if (hasAuthorized) { - result = flowService.AuditFlowInstance(new FlowAuditInfo + result = await taskService.AuditAsync(new TaskAuditRequest { - Instance = item, - Status = request.Result, - AuditNote = request.Remark + Ids = request.Ids, + Remark = request.Remark, + Result = request.Result, + TaskTypeName = AuditType.ToString() }); if (!result.Succeeded) return result; } + else + { + var flows = await flowService.GetInstanceByBSIdAsync(AuditType, null, request.Ids); + if (flows.Count != request.Ids.Length) + return DataResult.FailedWithDesc(nameof(MultiLanguageConst.FlowNotFound)); + + List list = []; + foreach (var item in flows) + { + result = flowService.AuditFlowInstance(new FlowAuditInfo + { + Instance = item, + Status = request.Result, + AuditNote = request.Remark + }); + + if (!result.Succeeded) + return result; + } + } + return DataResult.Success; } 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 8bffe2a2..13050a4a 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 @@ -22,9 +22,14 @@ namespace DS.WMS.Core.Application.Method /// 申请单基础实现 /// /// 实体的类型声明 - public class ApplicationService : FeeServiceBase, IApplicationService + public abstract class ApplicationService : FeeServiceBase, IApplicationService where TEntity : ApplicationForm, new() { + /// + /// 适用于当前申请单的审核类型 + /// + public abstract TaskBaseTypeEnum AuditType { get; } + readonly IClientFlowInstanceService flowService; readonly Lazy commonService; readonly ITaskService taskService; @@ -411,7 +416,7 @@ namespace DS.WMS.Core.Application.Method if (!result.Succeeded) return result; - List entities = new List(idArray.Length); + List entities = new(idArray.Length); bool hasAuthorized = await taskService.HasAuthorizedAsync(); await TenantDb.Ado.BeginTranAsync(); try @@ -515,15 +520,32 @@ namespace DS.WMS.Core.Application.Method return DataResult.FailedWithDesc(nameof(MultiLanguageConst.NotInAudit)); DataResult result; + bool hasAuthorized = await taskService.HasAuthorizedAsync(); try { - result = await flowService.WithdrawAsync(ids); - if (!result.Succeeded) - return result; + if (hasAuthorized) + { + foreach (var item in list) + { + result = await taskService.WithdrawAsync(new TaskRequest + { + BusinessId = item.Id, + TaskTypeName = AuditType.ToString() + }, false); - foreach (var item in list) + OnWithdraw(item); + } + } + else { - OnWithdraw(item); + result = await flowService.WithdrawAsync(ids); + if (!result.Succeeded) + return result; + + foreach (var item in list) + { + OnWithdraw(item); + } } await TenantDb.Updateable(list).UpdateColumns(x => new { x.Status }).ExecuteCommandAsync(); 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 2a19dd94..07adac31 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/InvoiceApplicationService.cs @@ -19,6 +19,8 @@ namespace DS.WMS.Core.Application.Method /// public class InvoiceApplicationService : ApplicationService, IInvoiceApplicationService { + public override TaskBaseTypeEnum AuditType => TaskBaseTypeEnum.APPLICATION_INVOICE_AUDIT; + /// /// 初始化 /// 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 abd34114..741b9073 100644 --- a/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs +++ b/ds-wms-service/DS.WMS.Core/Application/Method/PaymentApplicationService.cs @@ -19,6 +19,8 @@ namespace DS.WMS.Core.Application.Method /// public class PaymentApplicationService : ApplicationService, IPaymentApplicationService { + public override TaskBaseTypeEnum AuditType => TaskBaseTypeEnum.APPLICATION_PAYMENT_AUDIT; + /// /// 初始化 /// diff --git a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplate.cs b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplate.cs index 6cc6e134..2e028c5a 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplate.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplate.cs @@ -40,7 +40,7 @@ namespace DS.WMS.Core.Fee.Entity /// 结算对象类型 /// [SugarColumn(ColumnDescription = "结算对象类型", IsNullable = true)] - public CustomerTypeEnum? CustomerType { get; set; } + public string? CustomerType { get; set; } /// /// 名称 diff --git a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplateDetail.cs b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplateDetail.cs index bc02adf0..4925fd66 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplateDetail.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCustTemplateDetail.cs @@ -41,7 +41,7 @@ namespace DS.WMS.Core.Fee.Entity /// 结算对象类型 /// [SugarColumn(ColumnDescription = "结算对象类型", IsNullable = true)] - public CustomerTypeEnum? CustomerType { get; set; } + public string? CustomerType { get; set; } /// /// 费用Id diff --git a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCustTemplateService.cs b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCustTemplateService.cs index e577d90c..88a7b45b 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCustTemplateService.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCustTemplateService.cs @@ -60,27 +60,28 @@ namespace DS.WMS.Core.Fee.Method { x.Id, x.Condition, - Details = SqlFunc.Subqueryable().Where(y => y.TemplateId == x.Id).ToList(y => new - { - y.CustomerId, - y.CustomerName, - y.CustomerType, - y.FeeId, - y.FeeCode, - y.FeeName, - y.FeeType, - y.Unit, - y.IsCtn, - y.Currency, - y.UnitPrice, - y.ExchangeRate, - y.TaxRate, - y.AccTaxRate, - y.Tax, - y.TaxUnitPrice, - y.IsInvoice, - y.IsAdvancedPay - }) + Details = SqlFunc.Subqueryable().Where(y => + y.TemplateId == x.Id && y.CustomerId == order.CustomerId).ToList(y => new + { + y.CustomerId, + y.CustomerName, + y.CustomerType, + y.FeeId, + y.FeeCode, + y.FeeName, + y.FeeType, + y.Unit, + y.IsCtn, + y.Currency, + y.UnitPrice, + y.ExchangeRate, + y.TaxRate, + y.AccTaxRate, + y.Tax, + y.TaxUnitPrice, + y.IsInvoice, + y.IsAdvancedPay + }) }).ToListAsync(); if (list.Count == 0) @@ -176,8 +177,10 @@ namespace DS.WMS.Core.Fee.Method /// public async Task> GetAsync(long id) { - var data = await TenantDb.Queryable().Where(x => x.Id == id) - .Includes(x => x.Details).FirstAsync(); + var data = await TenantDb.Queryable().Where(x => x.Id == id).FirstAsync(); + if (data != null) + data.Details = await TenantDb.Queryable().Where(x => x.TemplateId == data.Id).ToListAsync(); + return DataResult.Success(data, MultiLanguageConst.DataQuerySuccess); } @@ -207,19 +210,30 @@ namespace DS.WMS.Core.Fee.Method } } - bool flag; - if (model.Id == 0) + await TenantDb.Ado.BeginTranAsync(); + try { - flag = await TenantDb.InsertNav(model).Include(x => x.Details).ExecuteCommandAsync(); + if (model.Id == 0) + { + await TenantDb.InsertNav(model).Include(x => x.Details).ExecuteCommandAsync(); + } + else + { + await TenantDb.Updateable(model).ExecuteCommandAsync(); + + if (model.Details.Count > 0) + await TenantDb.Storageable(model.Details).DefaultAddElseUpdate().ExecuteCommandAsync(); + } + + await TenantDb.Ado.CommitTranAsync(); + return DataResult.Successed("提交成功", model.Id, MultiLanguageConst.DataCreateSuccess); } - else + catch (Exception ex) { - flag = await TenantDb.Updateable(model).ExecuteCommandAsync() > 0; - flag = await TenantDb.Storageable(model.Details).DefaultAddElseUpdate().ExecuteCommandAsync() > 0; + await TenantDb.Ado.RollbackTranAsync(); + await ex.LogAsync(Db); + return DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed)); } - - return flag ? DataResult.Successed("添加成功!", model.Id, MultiLanguageConst.DataCreateSuccess) - : DataResult.FailedWithDesc(MultiLanguageConst.Operation_Failed); } /// 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 19970e39..39730bbb 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-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||; + True|2024-09-04T02:07:38.3707398Z||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;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||; \ No newline at end of file