| | |
| | | import cn.iocoder.yudao.module.erp.enums.ErpPurchaseOrderSourceTypeEnum; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO; |
| | | import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInvoiceService; |
| | | import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderService; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | |
| | | |
| | | @Resource |
| | | private ErpPurchaseOrderService purchaseOrderService; |
| | | @Resource |
| | | private ErpPurchaseInvoiceService purchaseInvoiceService; |
| | | @Resource |
| | | private SrmSupplierApi srmSupplierApi; |
| | | |
| | |
| | | // 1.5 单位信息 |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureMap( |
| | | convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductUnitId)); |
| | | // 1.6 已来票金额:按采购订单统计,用于计算剩余可开票金额 |
| | | Map<Long, BigDecimal> invoicePriceSumMap = purchaseInvoiceService |
| | | .getPurchaseInvoicePriceSumMapByOrderIds(convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId)); |
| | | // 2. 开始拼接 |
| | | return BeanUtils.toBean(pageResult, ErpPurchaseOrderRespVO.class, purchaseOrder -> { |
| | | purchaseOrder.setItems(BeanUtils.toBean(purchaseOrderItemMap.get(purchaseOrder.getId()), ErpPurchaseOrderRespVO.Item.class, |
| | |
| | | MapUtils.findAndThen(userMap, Long.parseLong(purchaseOrder.getCreator()), user -> purchaseOrder.setCreatorName(user.getNickname())); |
| | | purchaseOrder.setSourceTypeName(ErpPurchaseOrderSourceTypeEnum.WORK_ORDER.getType() |
| | | .equals(purchaseOrder.getSourceType()) ? "生产工单" : null); |
| | | // 剩余可开票金额 = 订单总金额 - 已来票金额 |
| | | purchaseOrder.setRemainInvoicePrice(purchaseOrder.getTotalPrice().subtract( |
| | | invoicePriceSumMap.getOrDefault(purchaseOrder.getId(), BigDecimal.ZERO))); |
| | | }); |
| | | } |
| | | |