| | |
| | | if (CollUtil.isEmpty(quotes)) { |
| | | throw ServiceExceptionUtil.exception(ErrorCodeConstants.AWARD_QUOTE_NOT_EXISTS); |
| | | } |
| | | Map<Long, SrmSupplierQuoteDO> quoteMap = quotes.stream() |
| | | .collect(Collectors.toMap( |
| | | SrmSupplierQuoteDO::getTenderMaterialId, |
| | | Function.identity(), |
| | | (a, b) -> a)); |
| | | Map<Long, SrmSupplierQuoteDO> quoteMap = SrmPurchaseQuoteValidator.validate(materials, quotes); |
| | | |
| | | // 5. 批量查 MDM 物料,获取计量单位 |
| | | Set<Long> productIds = materials.stream() |
| | |
| | | .collect(Collectors.toSet()); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemList(productIds).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmItemRespDTO::getId, Function.identity())); |
| | | if (productIds.stream().anyMatch(productId -> !itemMap.containsKey(productId))) { |
| | | throw ServiceExceptionUtil.invalidParamException("存在无法匹配的物料,请先维护物料后再生成采购订单"); |
| | | } |
| | | |
| | | // 6. 构建订单项(报价为“单价”口径:行金额 = 报价单价 × 数量; |
| | | // 定标金额与报价合计不一致时按行金额比例分摊,订单行单价仍取报价单价) |