| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- namespace Admin.NET.Plugin.AiDOP.Order;
- /// <summary>订单评审资源检查编排。</summary>
- 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<OrderResourceCheckResult> RunForEntryAsync(
- OrderWorkOrderGenerationService.OrderHeader order,
- OrderWorkOrderGenerationService.OrderEntryLine entry,
- string workOrd,
- string account,
- List<string> 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<long?> 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<SugarParameter>
- {
- new("@WorkOrd", workOrd),
- new("@TenantId", tenantId)
- });
- return id > 0 ? id : null;
- }
- }
|