| | |
| | | package cn.iocoder.yudao.module.erp.controller.admin.purchase; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | |
| | | convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureMap( |
| | | convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductUnitId)); |
| | | return success(BeanUtils.toBean(purchaseOrder, ErpPurchaseOrderRespVO.class, purchaseOrderVO -> |
| | | purchaseOrderVO.setItems(BeanUtils.toBean(purchaseOrderItemList, ErpPurchaseOrderRespVO.Item.class, item -> { |
| | | // 库存信息暂不查询(仓储物流模块) |
| | | item.setStockCount(BigDecimal.ZERO); |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())); |
| | | MapUtils.findAndThen(unitMeasureMap, item.getProductUnitId(), unit -> |
| | | item.setProductUnitName(unit.getName())); |
| | | })).setAttachmentList(storageAttachmentApi.listAttachments("erp_purchase_order", id)) |
| | | .setSourceTypeName(ErpPurchaseOrderSourceTypeEnum.WORK_ORDER.getType() |
| | | .equals(purchaseOrder.getSourceType()) ? "生产工单" : null))); |
| | | return success(BeanUtils.toBean(purchaseOrder, ErpPurchaseOrderRespVO.class, purchaseOrderVO -> { |
| | | purchaseOrderVO.setItems(BeanUtils.toBean(purchaseOrderItemList, ErpPurchaseOrderRespVO.Item.class, item -> { |
| | | // 库存信息暂不查询(仓储物流模块) |
| | | item.setStockCount(BigDecimal.ZERO); |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())); |
| | | MapUtils.findAndThen(unitMeasureMap, item.getProductUnitId(), unit -> |
| | | item.setProductUnitName(unit.getName())); |
| | | // 产品编号:优先取明细行快照,历史数据回退 MDM 物料编码 |
| | | if (StrUtil.isBlank(item.getProductCode())) { |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductCode(mdmItem.getCode())); |
| | | } |
| | | })); |
| | | purchaseOrderVO.setAttachmentList(storageAttachmentApi.listAttachments("erp_purchase_order", id)); |
| | | purchaseOrderVO.setSourceTypeName(resolveSourceTypeName(purchaseOrder.getSourceType())); |
| | | purchaseOrderVO.setProductCodes(CollUtil.join(purchaseOrderVO.getItems(), ",", |
| | | ErpPurchaseOrderRespVO.Item::getProductCode)); |
| | | })); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | |
| | | return success(true); |
| | | } |
| | | |
| | | /** |
| | | * 解析来源类型名称 |
| | | */ |
| | | private String resolveSourceTypeName(Integer sourceType) { |
| | | if (sourceType == null) { |
| | | return null; |
| | | } |
| | | return Arrays.stream(ErpPurchaseOrderSourceTypeEnum.values()) |
| | | .filter(item -> item.getType().equals(sourceType)) |
| | | .map(ErpPurchaseOrderSourceTypeEnum::getName).findFirst().orElse(null); |
| | | } |
| | | |
| | | private PageResult<ErpPurchaseOrderRespVO> buildPurchaseOrderVOPageResult(PageResult<ErpPurchaseOrderDO> pageResult) { |
| | | if (CollUtil.isEmpty(pageResult.getList())) { |
| | | return PageResult.empty(pageResult.getTotal()); |
| | |
| | | .setProductBarCode(mdmItem.getBarCode())); |
| | | MapUtils.findAndThen(unitMeasureMap, item.getProductUnitId(), unit -> |
| | | item.setProductUnitName(unit.getName())); |
| | | if (StrUtil.isBlank(item.getProductCode())) { |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductCode(mdmItem.getCode())); |
| | | } |
| | | })); |
| | | purchaseOrder.setProductNames(CollUtil.join(purchaseOrder.getItems(), ",", ErpPurchaseOrderRespVO.Item::getProductName)); |
| | | purchaseOrder.setProductCodes(CollUtil.join(purchaseOrder.getItems(), ",", ErpPurchaseOrderRespVO.Item::getProductCode)); |
| | | MapUtils.findAndThen(supplierMap, purchaseOrder.getSupplierId(), supplier -> purchaseOrder.setSupplierName(supplier.getName())); |
| | | MapUtils.findAndThen(userMap, Long.parseLong(purchaseOrder.getCreator()), user -> purchaseOrder.setCreatorName(user.getNickname())); |
| | | purchaseOrder.setSourceTypeName(ErpPurchaseOrderSourceTypeEnum.WORK_ORDER.getType() |
| | | .equals(purchaseOrder.getSourceType()) ? "生产工单" : null); |
| | | purchaseOrder.setSourceTypeName(resolveSourceTypeName(purchaseOrder.getSourceType())); |
| | | // 剩余可开票金额 = 订单总金额 - 已来票金额 |
| | | purchaseOrder.setRemainInvoicePrice(purchaseOrder.getTotalPrice().subtract( |
| | | invoicePriceSumMap.getOrDefault(purchaseOrder.getId(), BigDecimal.ZERO))); |