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;
}
}