From d241b67a5728d4f2bb0d33e4921229a4bf15e250 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期四, 05 六月 2025 14:11:42 +0800 Subject: [PATCH] 付款登记功能开发 --- src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java | 8 ++++ src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java | 27 +++++++++++++ src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java | 8 ++++ src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 2 src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java | 4 +- src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 2 src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java | 25 ++++++++++++ src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java | 12 ++++++ src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml | 24 ++++++++++++ 9 files changed, 107 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java index d2c5522..d434d69 100644 --- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java +++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java @@ -7,6 +7,7 @@ import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; +import com.ruoyi.purchase.dto.PaymentHistoryRecordVo; import com.ruoyi.purchase.dto.PaymentLedgerDto; import com.ruoyi.purchase.dto.PaymentRegistrationDto; import com.ruoyi.purchase.pojo.PaymentRegistration; @@ -126,4 +127,15 @@ List<PaymentRegistrationDto> list = paymentRegistrationService.paymentHistoryList(paymentRegistrationDto); return getDataTable(list); } + + /** + * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰� + * @param supplierId + * @return + */ + @GetMapping("/getPaymentRecordList/{supplierId}") + public AjaxResult getPaymentRecordList(@PathVariable Long supplierId) { + List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationService.getPaymentRecordList(supplierId); + return success(paymentRecordList); + } } diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java b/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java new file mode 100644 index 0000000..18025eb --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java @@ -0,0 +1,25 @@ +package com.ruoyi.purchase.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class PaymentHistoryRecordVo { + + /** 鍙戠敓鏃堕棿 */ + private LocalDate happenTime; + + /** 鍙戠エ閲戦 */ + private BigDecimal invoiceAmount; + + /** 绫诲瀷 1 鍙戠エ鐧昏 0 鍥炴鐧昏 */ + private int type; + + /** 鏈鍥炴閲戦 */ + private BigDecimal currentPaymentAmount; + + /** 搴斾粯閲戦 */ + private BigDecimal payableAmount; +} diff --git a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java index a03a8d2..8dda1fc 100644 --- a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java +++ b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.purchase.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.purchase.dto.PaymentHistoryRecordVo; import com.ruoyi.purchase.dto.PaymentRegistrationDto; import com.ruoyi.purchase.pojo.PaymentRegistration; import org.apache.ibatis.annotations.Param; @@ -44,4 +45,11 @@ * @return */ public List<PaymentRegistrationDto> countPaymentTotalByTicketRegId(List<Long> ticketRegistrationIds); + + /** + * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰� + * @param supplierId + * @return + */ + List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId); } diff --git a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java index ba6dad0..c1d33ac 100644 --- a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java +++ b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java @@ -87,7 +87,7 @@ /** * 鏈鏉ョエ鏁� */ - private Long ticketsNum; + private BigDecimal ticketsNum; /** * 鏈鏉ョエ閲戦(鍏�) @@ -97,7 +97,7 @@ /** * 鏈潵绁ㄦ暟 */ - private Long futureTickets; + private BigDecimal futureTickets; /** * 鏈潵绁ㄩ噾棰�(鍏�) diff --git a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java index 2cf9e9d..26e14b6 100644 --- a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java +++ b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.purchase.dto.PaymentHistoryRecordVo; import com.ruoyi.purchase.dto.PaymentLedgerDto; import com.ruoyi.purchase.dto.PaymentRegistrationDto; import com.ruoyi.purchase.pojo.PaymentRegistration; @@ -79,4 +80,11 @@ * @return 浠樻鐧昏闆嗗悎 */ public List<PaymentRegistrationDto> paymentHistoryList(PaymentRegistrationDto paymentRegistrationDto); + + /** + * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰� + * @param supplierId + * @return + */ + List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId); } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java index 624bc1a..3f96818 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.security.LoginUser; +import com.ruoyi.purchase.dto.PaymentHistoryRecordVo; import com.ruoyi.purchase.dto.PaymentLedgerDto; import com.ruoyi.purchase.dto.PaymentRegistrationDto; import com.ruoyi.purchase.mapper.*; @@ -201,6 +202,7 @@ for (SupplierManage supplierManage : supplierManages) { Map<String, Object> res = new HashMap<>(); res.put("supplierName", supplierManage.getSupplierName()); + res.put("supplierId", supplierManage.getId()); // 搴斾粯閲戦璁$畻 BigDecimal payableAmount = BigDecimal.ZERO; @@ -266,7 +268,6 @@ new LambdaQueryWrapper<ProductRecord>().eq(ProductRecord::getTicketRegistrationId, ticketRegistration.getId()) ).stream() .map(ProductRecord::getTicketsNum) - .map(BigDecimal::new) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); detail.put("voteCount", voteCount); @@ -354,6 +355,30 @@ return paymentRegistrationMapper.paymentHistoryList(paymentRegistrationDto); } + /** + * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰� + * @param supplierId + * @return + */ + @Override + public List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId) { + List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationMapper.getPaymentRecordList(supplierId); + if(!CollectionUtils.isEmpty(paymentRecordList)) { + // 搴斾粯閲戦璁$畻 + BigDecimal amountTotal = BigDecimal.ZERO; + for (PaymentHistoryRecordVo paymentHistoryRecordVo : paymentRecordList) { + if(paymentHistoryRecordVo.getType() == 0){ + amountTotal = amountTotal.subtract(paymentHistoryRecordVo.getCurrentPaymentAmount()); + } + if(paymentHistoryRecordVo.getType() == 1){ + amountTotal = amountTotal.add(paymentHistoryRecordVo.getInvoiceAmount()); + } + paymentHistoryRecordVo.setPayableAmount(amountTotal); + } + } + return paymentRecordList; + } + // 鎵归噺鏌ヨ閲囪喘鍙拌处锛堝綋鏈堬級 private Map<Long, List<PurchaseLedger>> batchQueryPurchaseLedgers(List<Long> supplierIds, LocalDate startDate, LocalDate endDate) { LambdaQueryWrapper<PurchaseLedger> query = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java index f007f6e..bba3bdf 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java @@ -299,7 +299,7 @@ // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級 product.setFutureTickets( product.getQuantity() - .subtract(BigDecimal.valueOf(product.getTicketsNum())) + .subtract(product.getTicketsNum()) ); // 璁$畻 futureTicketsAmount diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java index 84aef39..7b478d1 100644 --- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java +++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java @@ -95,7 +95,7 @@ /** * 鏈鏉ョエ鏁� */ - private Long ticketsNum; + private BigDecimal ticketsNum; /** * 鏈鏉ョエ閲戦(鍏�) diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml index 16e4960..26a405b 100644 --- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml +++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml @@ -125,4 +125,28 @@ GROUP BY ticket_registration_id </select> + <select id="getPaymentRecordList" resultType="com.ruoyi.purchase.dto.PaymentHistoryRecordVo"> + SELECT * FROM( + SELECT + T1.issue_date AS happenTime, + IFNULL(T1.invoice_amount,0) AS invoiceAmount, + '1' AS type, + 0 AS currentPaymentAmount + FROM + ticket_registration T1 + LEFT JOIN purchase_ledger T2 ON T1.purchase_ledger_id = T2.id + WHERE T2.supplier_id = #{supplierId} + UNION + SELECT + payment_date AS happenTime, + 0 AS invoiceAmount, + '0' AS type, + current_payment_amount AS currentPaymentAmount + FROM payment_registration + WHERE supplier_id = #{supplierId} + ) T1 + ORDER BY T1.happenTime ASC + + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.3