diff --git a/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs b/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs index 47534e8f..60e83b3a 100644 --- a/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs +++ b/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs @@ -41,6 +41,18 @@ namespace YLErp.Modules.ClientModule.Tests Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanRequestRemoval(state)); } + [DataTestMethod] + [DataRow(client_black.未提交, true)] + [DataRow(client_black.新增已拒绝, true)] + [DataRow(client_black.新增审批中, false)] + [DataRow(client_black.已加入, false)] + [DataRow(client_black.删除审批中, false)] + [DataRow(client_black.删除已拒绝, false)] + public void CanDeleteDraft_OnlyNeverEffectiveStatesCanDeleteDirectly(string state, bool expected) + { + Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanDeleteDraft(state)); + } + [DataTestMethod] [DataRow(client_black.新增审批中, 1, true)] [DataRow(client_black.删除审批中, 1, true)] diff --git a/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs b/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs index b880f82b..ed9271cb 100644 --- a/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs +++ b/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs @@ -33,6 +33,11 @@ namespace YLErp.Modules.ClientModule return state == client_black.已加入 || state == client_black.删除已拒绝; } + public static bool CanDeleteDraft(string state) + { + return state == client_black.未提交 || state == client_black.新增已拒绝; + } + public static ClientBlackRemovalResult GetRemovalResult(bool hasApprovalProcess) { return hasApprovalProcess diff --git a/YLErpDAL/Modules/ClientModule/ClientBlackService.cs b/YLErpDAL/Modules/ClientModule/ClientBlackService.cs index edd40593..d4c4d709 100644 --- a/YLErpDAL/Modules/ClientModule/ClientBlackService.cs +++ b/YLErpDAL/Modules/ClientModule/ClientBlackService.cs @@ -131,6 +131,13 @@ namespace YLErp.Modules.ClientModule var hasProcess = ProcessList().Any(); foreach (var row in rows) { + if (ClientBlackApprovalPolicy.CanDeleteDraft(row.State)) + { + DbContext.client_black.Remove(row); + ClientBlackCategoryLog(row.id, "已删除"); + continue; + } + if (!ClientBlackApprovalPolicy.CanRequestRemoval(row.State)) { throw new ServiceException($"黑名单客户{row.Name}当前状态不允许移出");