namespace Admin.NET.Plugin.AiDOP.Order; /// 订单评审资源检查编排。 public class OrderResourceCheckService : ITransient { private readonly ISqlSugarClient _db; private readonly MaterialRequirementCalculator _calculator; private readonly ResourceCheckResultWriter _writer; public OrderResourceCheckService( ISqlSugarClient db, MaterialRequirementCalculator calculator, ResourceCheckResultWriter writer) { _db = db; _calculator = calculator; _writer = writer; } public async Task RunForEntryAsync( OrderWorkOrderGenerationService.OrderHeader order, OrderWorkOrderGenerationService.OrderEntryLine entry, string workOrd, string account, List warnings) { var lines = await _calculator.BuildLinesAsync(order, entry, warnings); var morderId = await ResolveMorderIdAsync(workOrd, entry.TenantId); return await _writer.WriteAsync(order, entry, workOrd, morderId, lines, account, DateTime.Now); } private async Task ResolveMorderIdAsync(string workOrd, long tenantId) { var id = await _db.Ado.GetLongAsync( """ SELECT Id FROM mes_morder WHERE morder_no = @WorkOrd AND tenant_id = @TenantId AND IsDeleted = 0 ORDER BY Id DESC LIMIT 1 """, new List { new("@WorkOrd", workOrd), new("@TenantId", tenantId) }); return id > 0 ? id : null; } }