1
huangxiaoqiang
2025-10-20 63dcb7fc55d32960f643f4040900ce9a0e33536d
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs
@@ -1,32 +1,92 @@
using Masuit.Tools;
using System.ComponentModel.DataAnnotations;
using WIDESEA_DTO.Basic;
using WIDESEA_IOrderRepository;
namespace WIDESEA_StorageBasicService;
public class BoxingInfoService : ServiceBase<DtBoxingInfo, IBoxingInfoRepository>, IBoxingInfoService
{
    public BoxingInfoService(IBoxingInfoRepository BaseDal) : base(BaseDal)
    private readonly IDt_InboundOrderRepository _inboundOrderRepository;
    public BoxingInfoService(IBoxingInfoRepository BaseDal, IDt_InboundOrderRepository inboundOrderRepository) : base(BaseDal)
    {
        _inboundOrderRepository = inboundOrderRepository;
    }
    public async Task<WebResponseContent> AddBoxingInfoAsync(DtBoxingInfo boxingInfo)
    public async Task<WebResponseContent> AddBoxingInfoAsync(AddBoxingDto boxingInfo)
    {
        WebResponseContent content = new WebResponseContent();
        var info = await BaseDal.QueryFirstAsync(x => x.PalletCode == boxingInfo.PalletCode);
        if (!info.IsNullOrEmpty())
        try
        {
            content.Error("该托盘已存在组盘");
        }
        else
        {
            // æ·»åŠ ç»„ç›˜ä¿¡æ¯
            var result = await BaseDal.AddDataNavAsync(boxingInfo);
            if (result)
            var info = await BaseDal.QueryFirstAsync(x => x.PalletCode == boxingInfo.palletCode);
            if (!info.IsNullOrEmpty())
            {
                content.OK("添加成功", boxingInfo);
                content.Error("该托盘已存在组盘");
            }
            else
            {
                List<DtBoxingInfoDetail> details = new List<DtBoxingInfoDetail>();
                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;
        }
        return content;
        catch (Exception ex)
        {
            return content.OK();
        }
    }
    public override PageGridData<DtBoxingInfo> GetPageData(PageDataOptions options)