fix(ClientBlack): 支持删除未生效黑名单记录

- 未提交、新增已拒绝的黑名单记录可直接删除,不进入删除审批
- 已加入、删除已拒绝仍按原逻辑发起删除审批
- 新增审批中、删除审批中仍禁止删除
- 补充未生效状态可直接删除的状态机单测,45/45 通过
This commit is contained in:
tengyufan
2026-08-19 10:07:39 +08:00
parent 54c4bf21c6
commit 87a8b90eaf
3 changed files with 24 additions and 0 deletions
@@ -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)]
@@ -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
@@ -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}当前状态不允许移出");