| | |
| | | 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.purchase.vo.request.ErpPurchaseRequestPageReqVO; |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestRespVO; |
| | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserDeptId; |
| | | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| | | |
| | | @Tag(name = "管理后台 - ERP 采购申请") |
| | |
| | | @Operation(summary = "创建采购申请") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:create')") |
| | | public CommonResult<Long> createPurchaseRequest(@Valid @RequestBody ErpPurchaseRequestSaveReqVO createReqVO) { |
| | | return success(purchaseRequestService.createPurchaseRequest(createReqVO, getLoginUserId(), getLoginUserDeptId())); |
| | | return success(purchaseRequestService.createPurchaseRequest(createReqVO)); |
| | | } |
| | | |
| | | @PutMapping("/update") |
| | |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:update')") |
| | | public CommonResult<Boolean> updatePurchaseRequest(@Valid @RequestBody ErpPurchaseRequestSaveReqVO updateReqVO) { |
| | | purchaseRequestService.updatePurchaseRequest(updateReqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @PutMapping("/submit") |
| | | @Operation(summary = "提交采购申请审批") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:submit')") |
| | | public CommonResult<Boolean> submitPurchaseRequest(@RequestParam("id") Long id, |
| | | @RequestParam("processDefinitionKey") String processDefinitionKey) { |
| | | purchaseRequestService.submitPurchaseRequest(id, processDefinitionKey, getLoginUserId()); |
| | | return success(true); |
| | | } |
| | | |
| | |
| | | List<ErpPurchaseRequestItemDO> purchaseRequestItemList = purchaseRequestService.getPurchaseRequestItemListByRequestId(id); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(purchaseRequestItemList, ErpPurchaseRequestItemDO::getProductId)); |
| | | return success(BeanUtils.toBean(purchaseRequest, ErpPurchaseRequestRespVO.class, vo -> { |
| | | vo.setItems(BeanUtils.toBean(purchaseRequestItemList, ErpPurchaseRequestRespVO.Item.class, item -> |
| | | return success(BeanUtils.toBean(purchaseRequest, ErpPurchaseRequestRespVO.class, purchaseRequestVO -> |
| | | purchaseRequestVO.setItems(BeanUtils.toBean(purchaseRequestItemList, ErpPurchaseRequestRespVO.Item.class, item -> { |
| | | MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())))); |
| | | // 填充关联字段 |
| | | fillPurchaseRequestRelatedFields(vo); |
| | | })); |
| | | .setProductBarCode(mdmItem.getBarCode())); |
| | | })))); |
| | | } |
| | | |
| | | @GetMapping("/page") |
| | |
| | | public void exportPurchaseRequestExcel(@Valid ErpPurchaseRequestPageReqVO pageReqVO, |
| | | HttpServletResponse response) throws IOException { |
| | | pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); |
| | | List<ErpPurchaseRequestRespVO> list = buildPurchaseRequestVOPageResult( |
| | | purchaseRequestService.getPurchaseRequestPage(pageReqVO)).getList(); |
| | | List<ErpPurchaseRequestRespVO> list = buildPurchaseRequestVOPageResult(purchaseRequestService.getPurchaseRequestPage(pageReqVO)).getList(); |
| | | ExcelUtils.write(response, "采购申请.xls", "数据", ErpPurchaseRequestRespVO.class, list); |
| | | } |
| | | |
| | | @PutMapping("/submit") |
| | | @Operation(summary = "提交采购申请审批") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:submit')") |
| | | public CommonResult<Boolean> submitPurchaseRequest(@RequestParam("id") Long id, |
| | | @RequestParam("processDefinitionKey") String processDefinitionKey) { |
| | | Long userId = getLoginUserId(); |
| | | purchaseRequestService.submitPurchaseRequest(id, processDefinitionKey, userId); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/approve-process-list") |
| | | @Operation(summary = "获取采购申请审批流程列表") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:query')") |
| | | public CommonResult<List<Map<String, Object>>> getApproveProcessList() { |
| | | return success(purchaseRequestService.getPurchaseRequestApproveProcessDefinitionList()); |
| | | } |
| | | |
| | | @PostMapping("/generate-order") |
| | |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:generate-order')") |
| | | public CommonResult<Long> generatePurchaseOrder(@RequestParam("id") Long id, |
| | | @RequestParam("supplierId") Long supplierId) { |
| | | return success(purchaseRequestService.generatePurchaseOrder(id, supplierId, getLoginUserId())); |
| | | } |
| | | |
| | | @GetMapping("/approve-process-list") |
| | | @Operation(summary = "获取采购申请审批流程列表") |
| | | @PreAuthorize("@ss.hasPermission('erp:purchase-request:query')") |
| | | public CommonResult<List<Map<String, Object>>> getPurchaseRequestApproveProcessList() { |
| | | return success(purchaseRequestService.getPurchaseRequestApproveProcessDefinitionList()); |
| | | return success(purchaseRequestService.generatePurchaseOrder(id, supplierId)); |
| | | } |
| | | |
| | | private PageResult<ErpPurchaseRequestRespVO> buildPurchaseRequestVOPageResult(PageResult<ErpPurchaseRequestDO> pageResult) { |
| | |
| | | // 1.5 部门信息 |
| | | Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( |
| | | convertSet(pageResult.getList(), ErpPurchaseRequestDO::getRequestDeptId)); |
| | | |
| | | // 2. 开始拼接 |
| | | return BeanUtils.toBean(pageResult, ErpPurchaseRequestRespVO.class, vo -> { |
| | | vo.setItems(BeanUtils.toBean(purchaseRequestItemMap.get(vo.getId()), ErpPurchaseRequestRespVO.Item.class, |
| | | return BeanUtils.toBean(pageResult, ErpPurchaseRequestRespVO.class, purchaseRequest -> { |
| | | purchaseRequest.setItems(BeanUtils.toBean(purchaseRequestItemMap.get(purchaseRequest.getId()), ErpPurchaseRequestRespVO.Item.class, |
| | | item -> MapUtils.findAndThen(itemMap, item.getProductId(), mdmItem -> item.setProductName(mdmItem.getName()) |
| | | .setProductBarCode(mdmItem.getBarCode())))); |
| | | vo.setProductNames(CollUtil.join(vo.getItems(), ",", ErpPurchaseRequestRespVO.Item::getProductName)); |
| | | MapUtils.findAndThen(supplierMap, vo.getSupplierId(), supplier -> vo.setSupplierName(supplier.getName())); |
| | | MapUtils.findAndThen(userMap, vo.getRequestUserId(), user -> vo.setRequestUserName(user.getNickname())); |
| | | MapUtils.findAndThen(deptMap, vo.getRequestDeptId(), dept -> vo.setRequestDeptName(dept.getName())); |
| | | purchaseRequest.setProductNames(CollUtil.join(purchaseRequest.getItems(), ",", ErpPurchaseRequestRespVO.Item::getProductName)); |
| | | MapUtils.findAndThen(supplierMap, purchaseRequest.getSupplierId(), supplier -> purchaseRequest.setSupplierName(supplier.getName())); |
| | | MapUtils.findAndThen(userMap, purchaseRequest.getRequestUserId(), user -> purchaseRequest.setRequestUserName(user.getNickname())); |
| | | MapUtils.findAndThen(deptMap, purchaseRequest.getRequestDeptId(), dept -> purchaseRequest.setRequestDeptName(dept.getName())); |
| | | }); |
| | | } |
| | | |
| | | private void fillPurchaseRequestRelatedFields(ErpPurchaseRequestRespVO vo) { |
| | | // 填充申请人名称 |
| | | if (vo.getRequestUserId() != null) { |
| | | AdminUserRespDTO user = adminUserApi.getUser(vo.getRequestUserId()); |
| | | if (user != null) { |
| | | vo.setRequestUserName(user.getNickname()); |
| | | } |
| | | } |
| | | // 填充部门名称 |
| | | if (vo.getRequestDeptId() != null) { |
| | | DeptRespDTO dept = deptApi.getDept(vo.getRequestDeptId()); |
| | | if (dept != null) { |
| | | vo.setRequestDeptName(dept.getName()); |
| | | } |
| | | } |
| | | // 填充供应商名称 |
| | | if (vo.getSupplierId() != null) { |
| | | ErpSupplierDO supplier = supplierService.getSupplier(vo.getSupplierId()); |
| | | if (supplier != null) { |
| | | vo.setSupplierName(supplier.getName()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |