1
huangxiaoqiang
2025-10-20 63dcb7fc55d32960f643f4040900ce9a0e33536d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using Masuit.Tools;
using System.ComponentModel.DataAnnotations;
using WIDESEA_DTO.Basic;
using WIDESEA_IOrderRepository;
 
namespace WIDESEA_StorageBasicService;
 
public class BoxingInfoService : ServiceBase<DtBoxingInfo, IBoxingInfoRepository>, IBoxingInfoService
{
    private readonly IDt_InboundOrderRepository _inboundOrderRepository;
    public BoxingInfoService(IBoxingInfoRepository BaseDal, IDt_InboundOrderRepository inboundOrderRepository) : base(BaseDal)
    {
        _inboundOrderRepository = inboundOrderRepository;
    }
 
    public async Task<WebResponseContent> 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<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;
        }
        catch (Exception ex)
        {
            return content.OK();
        }
    }
 
    public override PageGridData<DtBoxingInfo> GetPageData(PageDataOptions options)
    {
        return base.GetPageData(options);
    }
 
    // 验证模型
    public static List<ValidationResult> ValidateModel(object model)
    {
        // 创建一个验证结果列表
        var validationResults = new List<ValidationResult>();
        // 创建一个验证上下文
        var validationContext = new ValidationContext(model, serviceProvider: null, items: null);
 
        // 使用验证器尝试验证模型,并将验证结果添加到验证结果列表中
        Validator.TryValidateObject(model, validationContext, validationResults, validateAllProperties: true);
 
        // 返回验证结果列表
        return validationResults;
    }
}