using AgriculturalPlatform.Api.Models; namespace AgriculturalPlatform.Api.Dtos; public record PurchaseDto( int Id, string OrderNo, int FarmerId, string FarmerName, string? FarmerPhone, int ProductId, string ProductName, string Category, int PurchaserOrgId, string PurchaserOrgName, string Grade, string Unit, decimal UnitPrice, decimal GrossWeight, decimal TareWeight, decimal NetWeight, decimal Amount, int WeighCount, string Status, string? OperatorName, DateTime WeighInAt, DateTime? WeighOutAt, string Notes, DateTime CreatedAt); /// 新建收购单(第一次过磅:称毛重) public record PurchaseCreateRequest( int FarmerId, int ProductId, int PurchaserOrgId, string Grade, decimal GrossWeight, string Unit = "公斤", decimal UnitPrice = 0, string Notes = ""); /// 回皮完成(第二次过磅:称皮重,计算净重与金额) public record PurchaseTareRequest(decimal TareWeight); public static class PurchaseMappers { public static PurchaseDto ToDto(this PurchaseOrder p) => new( p.Id, p.OrderNo, p.FarmerId, p.Farmer?.Name ?? "", p.Farmer?.Phone ?? "", p.ProductId, p.Product?.Name ?? "", p.Product?.Category ?? "", p.PurchaserOrgId, p.PurchaserOrg?.Name ?? "", p.Grade, p.Unit, p.UnitPrice, p.GrossWeight, p.TareWeight, p.NetWeight, p.Amount, p.WeighCount, p.Status.ToString(), p.Operator?.RealName ?? "", p.WeighInAt, p.WeighOutAt, p.Notes, p.CreatedAt); public static PurchaseDto[] ToDtos(this IEnumerable items) => items.Select(ToDto).ToArray(); }