using Masuit.Tools; using System.ComponentModel.DataAnnotations; using WIDESEA_DTO.Basic; using WIDESEA_IOrderRepository; namespace WIDESEA_StorageBasicService; public class BoxingInfoService : ServiceBase, IBoxingInfoService { private readonly IDt_InboundOrderRepository _inboundOrderRepository; public BoxingInfoService(IBoxingInfoRepository BaseDal, IDt_InboundOrderRepository inboundOrderRepository) : base(BaseDal) { _inboundOrderRepository = inboundOrderRepository; } public async Task AddBoxingInfoAsync(AddBoxingDto boxingInfo) { WebResponseContent content = new WebResponseContent(); try { var info = await BaseDal.QueryFirstAsync(x => x.PalletCode == boxingInfo.palletCode); if (!info.IsNullOrEmpty()) { content.Error("该托盘已存在组盘"); } else { List details = new List(); foreach (var item in boxingInfo.OrderNos) { var InboundOrder = _inboundOrderRepository.QueryFirst(x => x.PrintCode == item); if(InboundOrder != null) { var x = details.Where(x => x.MaterielCode == InboundOrder.MaterialNo && x.Warehouse == InboundOrder.WarehouseName && x.DrawingNumber==InboundOrder.ProductDrawingNumber &&x.DemandClassification ==InboundOrder.DemandClassification).FirstOrDefault(); if (x != null) { details.Remove(x); x.MaterielCode = InboundOrder.MaterialNo; x.MaterielName = InboundOrder.MaterialName; x.DemandClassification = InboundOrder.DemandClassification; x.Warehouse = InboundOrder.WarehouseName; x.OrderNo = InboundOrder.OrderNo; x.Unit = InboundOrder.Unit; x.Specs = InboundOrder.Specs; x.Weight = InboundOrder.Weight; x.Quantity = x.Quantity + InboundOrder.Quantity; x.DrawingNumber = InboundOrder.ProductDrawingNumber; x.Date = InboundOrder.Datetime; details.Add(x); } else { DtBoxingInfoDetail detail = new DtBoxingInfoDetail() { MaterielCode = InboundOrder.MaterialNo, MaterielName = InboundOrder.MaterialName, DemandClassification = InboundOrder.DemandClassification, Warehouse = InboundOrder.WarehouseName, OrderNo = InboundOrder.OrderNo, Unit = InboundOrder.Unit, Specs = InboundOrder.Specs, Weight = InboundOrder.Weight, Quantity = InboundOrder.Quantity, DrawingNumber = InboundOrder.ProductDrawingNumber, Date = InboundOrder.Datetime, }; details.Add(detail); } } else { return content.Error("未找到入库单据信息"); } } DtBoxingInfo boxing = new DtBoxingInfo() { PalletCode=boxingInfo.palletCode, BoxingInfoDetails= details }; await BaseDal.AddDataNavAsync(boxing); } return content; } catch (Exception ex) { return content.OK(); } } public override PageGridData GetPageData(PageDataOptions options) { return base.GetPageData(options); } // 验证模型 public static List ValidateModel(object model) { // 创建一个验证结果列表 var validationResults = new List(); // 创建一个验证上下文 var validationContext = new ValidationContext(model, serviceProvider: null, items: null); // 使用验证器尝试验证模型,并将验证结果添加到验证结果列表中 Validator.TryValidateObject(model, validationContext, validationResults, validateAllProperties: true); // 返回验证结果列表 return validationResults; } }