| 123456789101112131415161718192021222324252627282930 |
- using Admin.NET.Plugin.AiDOP.Dto.S0.Manufacturing;
- namespace Admin.NET.Plugin.AiDOP.Infrastructure;
- /// <summary>
- /// BOM 聚合保存前校验(对齐 Batch3 §9 / §19 题 5 要点,深度成环需结合全库 BOM 图扩展)。
- /// </summary>
- public static class AdoS0MfgBomRules
- {
- public static string? ValidateUpsert(AdoS0MfgBomUpsertDto dto)
- {
- if (dto.Items == null || dto.Items.Count == 0)
- return "BOM 至少包含一行子项";
- var childIds = dto.Items.Select(i => i.MaterialId).ToList();
- if (childIds.Count != childIds.Distinct().Count())
- return "同一 BOM 下子项物料不能重复";
- if (dto.MaterialId.HasValue && childIds.Contains(dto.MaterialId.Value))
- return "父项物料不能同时作为本子项出现";
- foreach (var it in dto.Items)
- {
- if (it.QtyDenominator == 0)
- return "数量分母不能为 0";
- }
- return null;
- }
- }
|