| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using Admin.NET.Plugin.ApprovalFlow;
- using Admin.NET.Plugin.ApprovalFlow.Service;
- namespace Admin.NET.Plugin.AiDOP.Order;
- /// <summary>
- /// 订单变更审批业务回调
- /// 注册 BizType = "ORDER_CHANGE_REVIEW"
- /// </summary>
- public class OrderChangeReviewBizHandler : IFlowBizHandler, ITransient
- {
- public string BizType => "ORDER_CHANGE_REVIEW";
- private readonly SqlSugarRepository<SeOrder> _seOrderRep;
- private readonly SqlSugarRepository<SeOrderEntry> _seOrderEntryRep;
- public OrderChangeReviewBizHandler(
- SqlSugarRepository<SeOrder> seOrderRep,
- SqlSugarRepository<SeOrderEntry> seOrderEntryRep)
- {
- _seOrderRep = seOrderRep;
- _seOrderEntryRep = seOrderEntryRep;
- }
- public async Task OnFlowStarted(long bizId, long instanceId)
- {
- try
- {
- await _seOrderRep.AsUpdateable()
- .SetColumns(o => o.FlowState == "审批中")
- .Where(o => o.Id == bizId)
- .ExecuteCommandAsync();
- }
- catch (Exception) { /* 表不存在时静默跳过 */ }
- }
- public async Task OnFlowCompleted(long bizId, long instanceId, FlowInstanceStatusEnum finalStatus, long? lastApproverId)
- {
- var state = finalStatus switch
- {
- FlowInstanceStatusEnum.Approved => "审批完成",
- FlowInstanceStatusEnum.Rejected => "已拒绝",
- FlowInstanceStatusEnum.Cancelled => "已撤销",
- _ => "已终止",
- };
- try
- {
- await _seOrderRep.AsUpdateable()
- .SetColumns(o => o.FlowState == state)
- .Where(o => o.Id == bizId)
- .ExecuteCommandAsync();
- // 审批通过时将订单明细进度重置为 0(新建/再评审)
- if (finalStatus == FlowInstanceStatusEnum.Approved)
- {
- await _seOrderEntryRep.AsUpdateable()
- .SetColumns(e => e.Progress == "0")
- .Where(e => e.SeOrderId == bizId)
- .ExecuteCommandAsync();
- }
- }
- catch (Exception) { /* 表不存在时静默跳过 */ }
- }
- public Task OnNodeCompleted(long bizId, long instanceId, string nodeId, string nodeName, long? approverUserId)
- {
- return Task.CompletedTask;
- }
- public async Task<Dictionary<string, object>> GetBizData(long bizId)
- {
- try
- {
- var order = await _seOrderRep.GetByIdAsync(bizId);
- if (order == null) return new Dictionary<string, object>();
- return new Dictionary<string, object>
- {
- ["urgent"] = order.Urgent ?? 0,
- ["customLevel"] = order.CustomLevel ?? 0,
- ["orderType"] = order.OrderType ?? 0,
- };
- }
- catch (Exception) { return new Dictionary<string, object>(); }
- }
- }
|