| | |
| | | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderRespVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; |
| | | import cn.iocoder.yudao.module.erp.service.product.ErpProductService; |
| | | import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseOrderService; |
| | | import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; |
| | | import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | @Resource |
| | | private ErpPurchaseOrderService purchaseOrderService; |
| | | @Resource |
| | | private ErpStockService stockService; |
| | | @Resource |
| | | private ErpProductService productService; |
| | | @Resource |
| | | private ErpSupplierService supplierService; |
| | | |
| | | @Resource |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | |
| | |
| | | |
| | | @PostMapping("/submit") |
| | | @Operation(summary = "提交采购订单审批") |
| | | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-order:update')") |
| | | public CommonResult<Boolean> submitPurchaseOrder(@RequestParam("id") Long id) { |
| | | purchaseOrderService.submitPurchaseOrder(id, getLoginUserId()); |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-order:update-status')") |
| | | public CommonResult<Boolean> submitPurchaseOrder(@RequestParam("id") Long id, |
| | | @RequestParam("processDefinitionKey") String processDefinitionKey) { |
| | | Long userId = getLoginUserId(); |
| | | purchaseOrderService.submitPurchaseOrder(id, processDefinitionKey, userId); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/approve-process-list") |
| | | @Operation(summary = "获取采购订单审批流程列表") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-order:query')") |
| | | public CommonResult<List<Map<String, Object>>> getApproveProcessList() { |
| | | return success(purchaseOrderService.getPurchaseOrderApproveProcessDefinitionList()); |
| | | } |
| | | |
| | | @DeleteMapping("/delete") |
| | |
| | | return success(null); |
| | | } |
| | | List<ErpPurchaseOrderItemDO> purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderId(id); |
| | | Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId)); |
| | | return success(BeanUtils.toBean(purchaseOrder, ErpPurchaseOrderRespVO.class, purchaseOrderVO -> |
| | | purchaseOrderVO.setItems(BeanUtils.toBean(purchaseOrderItemList, ErpPurchaseOrderRespVO.Item.class, item -> { |
| | | BigDecimal purchaseCount = stockService.getStockCount(item.getProductId()); |
| | | item.setStockCount(purchaseCount != null ? purchaseCount : BigDecimal.ZERO); |
| | | MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) |
| | | .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); |
| | | // 库存信息暂不查询(仓储物流模块) |
| | | item.setStockCount(BigDecimal.ZERO); |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())); |
| | | })))); |
| | | } |
| | | |
| | |
| | | ExcelUtils.write(response, "采购订单.xls", "数据", ErpPurchaseOrderRespVO.class, list); |
| | | } |
| | | |
| | | @PostMapping("/confirm-receipt") |
| | | @Operation(summary = "确认收货") |
| | | @Parameter(name = "id", description = "采购订单编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-order:confirm-receipt')") |
| | | public CommonResult<Long> confirmReceipt(@RequestParam("id") Long id) { |
| | | return success(purchaseOrderService.confirmReceipt(id)); |
| | | } |
| | | |
| | | private PageResult<ErpPurchaseOrderRespVO> buildPurchaseOrderVOPageResult(PageResult<ErpPurchaseOrderDO> pageResult) { |
| | | if (CollUtil.isEmpty(pageResult.getList())) { |
| | | return PageResult.empty(pageResult.getTotal()); |
| | |
| | | List<ErpPurchaseOrderItemDO> purchaseOrderItemList = purchaseOrderService.getPurchaseOrderItemListByOrderIds( |
| | | convertSet(pageResult.getList(), ErpPurchaseOrderDO::getId)); |
| | | Map<Long, List<ErpPurchaseOrderItemDO>> purchaseOrderItemMap = convertMultiMap(purchaseOrderItemList, ErpPurchaseOrderItemDO::getOrderId); |
| | | // 1.2 产品信息 |
| | | Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap( |
| | | // 1.2 物料信息 |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(purchaseOrderItemList, ErpPurchaseOrderItemDO::getProductId)); |
| | | // 1.3 供应商信息 |
| | | Map<Long, ErpSupplierDO> supplierMap = supplierService.getSupplierMap( |
| | |
| | | // 2. 开始拼接 |
| | | return BeanUtils.toBean(pageResult, ErpPurchaseOrderRespVO.class, purchaseOrder -> { |
| | | purchaseOrder.setItems(BeanUtils.toBean(purchaseOrderItemMap.get(purchaseOrder.getId()), ErpPurchaseOrderRespVO.Item.class, |
| | | item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) |
| | | .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); |
| | | item -> MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())))); |
| | | purchaseOrder.setProductNames(CollUtil.join(purchaseOrder.getItems(), ",", ErpPurchaseOrderRespVO.Item::getProductName)); |
| | | MapUtils.findAndThen(supplierMap, purchaseOrder.getSupplierId(), supplier -> purchaseOrder.setSupplierName(supplier.getName())); |
| | | MapUtils.findAndThen(userMap, Long.parseLong(purchaseOrder.getCreator()), user -> purchaseOrder.setCreatorName(user.getNickname())); |