src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -118,6 +118,16 @@ } /** * 查询采购退货可选采购台账 */ @GetMapping("/returnableList") public TableDataInfo returnableList(PurchaseLedger purchaseLedger) { startPage(); List<PurchaseLedger> list = purchaseLedgerService.selectReturnablePurchaseLedgerList(purchaseLedger); return getDataTable(list); } /** * 导出采购台账列表 */ @Log(title = "采购台账", businessType = BusinessType.EXPORT) src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java
@@ -23,6 +23,8 @@ IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, @Param("c") PurchaseLedgerDto purchaseLedger); List<PurchaseLedger> selectReturnablePurchaseLedgerList(@Param("c") PurchaseLedger purchaseLedger); List<IncomeExpenseAnalysisDto> selectPurchaseStats(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("dateFormat") String dateFormat); BigDecimal selectTotalPurchaseAmount(@Param("startDate") String startDate, @Param("endDate") String endDate); src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -23,6 +23,8 @@ List<PurchaseLedger> selectPurchaseLedgerList(PurchaseLedger purchaseLedger); List<PurchaseLedger> selectReturnablePurchaseLedgerList(PurchaseLedger purchaseLedger); int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception; R batchInsertPurchaseSteps(List<Long> ids); src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -136,6 +136,11 @@ } @Override public List<PurchaseLedger> selectReturnablePurchaseLedgerList(PurchaseLedger purchaseLedger) { return purchaseLedgerMapper.selectReturnablePurchaseLedgerList(purchaseLedger); } @Override @Transactional(rollbackFor = Exception.class) public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception { PurchaseLedger purchaseLedger = new PurchaseLedger(); src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -47,11 +47,16 @@ java.math.BigDecimal returnQuantity = item.getReturnQuantity() == null ? java.math.BigDecimal.ZERO : item.getReturnQuantity(); java.math.BigDecimal quantity = item.getQuantity() == null item.setReturnQuantity(returnQuantity); java.math.BigDecimal availableQuality = item.getQuantity() == null ? java.math.BigDecimal.ZERO : item.getQuantity(); item.setReturnQuantity(returnQuantity); item.setAvailableQuality(quantity.subtract(returnQuantity)); if (item.getType() != null && item.getType() == 2) { availableQuality = item.getApprovedStockInNum() == null ? java.math.BigDecimal.ZERO : item.getApprovedStockInNum(); } item.setAvailableQuality(availableQuality.subtract(returnQuantity)); }); } return AjaxResult.success(list); src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -187,6 +187,10 @@ private BigDecimal returnQuantity; @TableField(exist = false) @Schema(description = "已审核入库数量") private BigDecimal approvedStockInNum; @TableField(exist = false) @Schema(description = "审批中数量") private BigDecimal pendingApprovalQuantity; } src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -139,6 +139,46 @@ ORDER BY result.entry_date DESC </select> <select id="selectReturnablePurchaseLedgerList" resultType="com.ruoyi.purchase.pojo.PurchaseLedger"> SELECT DISTINCT pl.* FROM purchase_ledger pl WHERE 1 = 1 <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''"> AND pl.purchase_contract_number LIKE CONCAT('%', #{c.purchaseContractNumber}, '%') </if> <if test="c.supplierId != null"> AND pl.supplier_id = #{c.supplierId} </if> <if test="c.approvalStatus != null"> AND pl.approval_status = #{c.approvalStatus} </if> AND EXISTS ( SELECT 1 FROM stock_in_record sir LEFT JOIN quality_inspect qi ON sir.record_type = '10' AND sir.record_id = qi.id LEFT JOIN sales_ledger_product slp ON slp.sales_ledger_id = pl.id AND slp.product_model_id = sir.product_model_id AND slp.type = 2 LEFT JOIN ( SELECT stock_in_record_id, SUM(return_quantity) AS total_return_num FROM purchase_return_order_products GROUP BY stock_in_record_id ) rs ON rs.stock_in_record_id = sir.id WHERE sir.approval_status = 1 AND sir.record_type IN ('7','10') AND ( (sir.record_type = '7' AND sir.record_id = pl.id) OR (sir.record_type = '10' AND qi.purchase_ledger_id = pl.id) ) AND slp.id IS NOT NULL AND GREATEST(sir.stock_in_num - COALESCE(rs.total_return_num, 0), 0) > 0 ) ORDER BY pl.entry_date DESC </select> <select id="selectTotalPurchaseAmount" resultType="java.math.BigDecimal"> SELECT IFNULL(SUM(contract_amount), 0) FROM purchase_ledger src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
@@ -106,7 +106,10 @@ LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id LEFT JOIN purchase_ledger pl ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id) LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id AND slp.product_model_id = sir.product_model_id AND slp.type = 2 LEFT JOIN ( SELECT stock_in_record_id, @@ -116,7 +119,7 @@ WHERE 1=1 GROUP BY stock_in_record_id ) rs ON rs.stock_in_record_id = sir.id WHERE sir.approval_status = 1 AND slp.type = 2 WHERE sir.approval_status = 1 AND sir.record_type IN ('7','10') and pl.id = #{purchaseLedgerId} </select> src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -35,6 +35,7 @@ END as has_sufficient_stock, (IFNULL(T1.quantity, 0) - IFNULL(t3.shipped_quantity, 0) - IFNULL(t5.pending_approval_quantity, 0)) as no_quantity, IFNULL(t6.return_quantity, 0) as return_quantity, IFNULL(t4.approved_stock_in_num, 0) as approved_stock_in_num, IFNULL(t5.pending_approval_quantity, 0) as pending_approval_quantity, CASE WHEN IFNULL(t3.shipped_quantity, 0) = 0 AND IFNULL(t5.pending_approval_quantity, 0) = 0 THEN '待发货'