| | |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | import cn.iocoder.yudao.module.mes.api.arrivalnotice.MesArrivalNoticeApi; |
| | | import cn.iocoder.yudao.module.mes.api.arrivalnotice.dto.MesArrivalNoticeRespDTO; |
| | | import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | | private StorageAttachmentApi storageAttachmentApi; |
| | | @Resource |
| | | private MesArrivalNoticeApi arrivalNoticeApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "创建采购订单") |
| | |
| | | .no("CGDD20260101000001").supplierName("示例供应商") |
| | | .orderTime("2026-01-01 10:00:00").productCode("ITEM001").productName("示例产品A") |
| | | .count(new BigDecimal("100")).productPrice(new BigDecimal("10.00")) |
| | | .taxPercent(new BigDecimal("13")).qcCheckFlag("否").remark("示例").build()); |
| | | .taxPercent(new BigDecimal("13")).remark("示例").build()); |
| | | ExcelUtils.write(response, "采购订单导入模板.xls", "采购订单", ErpPurchaseOrderImportExcelVO.class, list); |
| | | } |
| | | |
| | |
| | | // 1.6 已来票金额:按采购订单统计,用于计算剩余可开票金额 |
| | | Map<Long, BigDecimal> invoicePriceSumMap = purchaseInvoiceService |
| | | .getPurchaseInvoicePriceSumMapByOrderIds(convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId)); |
| | | // 1.7 到货通知单:用于前端区分是否已确认收货、隐藏重复的「确认收货」按钮 |
| | | Map<Long, MesArrivalNoticeRespDTO> arrivalNoticeMap = arrivalNoticeApi |
| | | .getArrivalNoticeListByPurchaseOrderIds(convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId)) |
| | | .stream().collect(java.util.stream.Collectors.toMap( |
| | | MesArrivalNoticeRespDTO::getPurchaseOrderId, notice -> notice, (a, b) -> a)); |
| | | // 2. 开始拼接 |
| | | return BeanUtils.toBean(pageResult, ErpPurchaseOrderRespVO.class, purchaseOrder -> { |
| | | purchaseOrder.setItems(BeanUtils.toBean( |
| | |
| | | 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())); |
| | | MapUtils.findAndThen(arrivalNoticeMap, purchaseOrder.getId(), notice -> { |
| | | purchaseOrder.setArrivalNoticeId(notice.getId()); |
| | | purchaseOrder.setArrivalNoticeCode(notice.getCode()); |
| | | purchaseOrder.setArrivalNoticeStatus(notice.getStatus()); |
| | | purchaseOrder.setArrivalNoticeStatusName(notice.getStatusName()); |
| | | }); |
| | | purchaseOrder.setSourceTypeName(resolveSourceTypeName(purchaseOrder.getSourceType())); |
| | | // 剩余可开票金额 = 订单总金额 - 已来票金额 |
| | | purchaseOrder.setRemainInvoicePrice(purchaseOrder.getTotalPrice().subtract( |