From 4ea1509f0e88ee331e821459d4eefb0c9902b3e7 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 12 八月 2026 13:16:04 +0800
Subject: [PATCH] feat(account): 实现采购付款和销售回款功能
---
src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java
index 5f328bc..6b905c9 100644
--- a/src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java
+++ b/src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.account.service.impl.sales;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -16,15 +17,20 @@
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.sales.dto.SaveReceiptPaymentDto;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
+import java.util.stream.Collectors;
/**
* <p>
@@ -40,6 +46,7 @@
private final AccountSalesCollectionMapper accountSalesCollectionMapper;
private final AccountStatementDetailsMapper accountStatementDetailsMapper;
+ private final SalesLedgerMapper salesLedgerMapper;
private static final DateTimeFormatter CODE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMddHHmmss");
@@ -90,6 +97,46 @@
return accountSalesCollectionMapper.getOutboundBatchesByCustomer(customerId);
}
+ @Override
+ public boolean saveReceiptPayment(SaveReceiptPaymentDto dto) {
+ if (dto.getPaymentDate() == null) {
+ throw new ServiceException("璇烽�夋嫨鍥炴鏃ユ湡");
+ }
+ if (dto.getPaymentAmount() == null || dto.getPaymentAmount().compareTo(BigDecimal.valueOf(0.01)) < 0) {
+ throw new ServiceException("璇疯緭鍏ュ洖娆鹃噾棰�");
+ }
+ if (StringUtils.isEmpty(dto.getSalesContractNo())) {
+ throw new ServiceException("閿�鍞悎鍚屽彿涓嶈兘涓虹┖");
+ }
+ if (dto.getCustomerId() == null) {
+ throw new ServiceException("瀹㈡埛涓嶈兘涓虹┖");
+ }
+
+ SalesLedger salesLedger = salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
+ .eq(SalesLedger::getSalesContractNo, dto.getSalesContractNo()));
+ if (salesLedger == null) {
+ throw new ServiceException("閿�鍞悎鍚屼笉瀛樺湪");
+ }
+ if (salesLedger.getCustomerId() == null || salesLedger.getCustomerId().longValue() != dto.getCustomerId().longValue()) {
+ throw new ServiceException("瀹㈡埛涓庡悎鍚屼笉鍖归厤");
+ }
+
+ List<Long> stockOutRecordIds = accountSalesCollectionMapper.selectStockOutRecordIdsBySalesLedgerId(salesLedger.getId());
+ if (CollectionUtils.isEmpty(stockOutRecordIds)) {
+ throw new ServiceException("璇ュ悎鍚屾殏鏃犲彲鍥炴鐨勯攢鍞嚭搴撹褰�");
+ }
+
+ AccountSalesCollection collection = new AccountSalesCollection();
+ collection.setCustomerId(dto.getCustomerId().intValue());
+ collection.setStockOutRecordIds(stockOutRecordIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
+ collection.setCollectionDate(dto.getPaymentDate());
+ collection.setCollectionAmount(dto.getPaymentAmount());
+ collection.setCollectionMethod(dto.getPaymentMethod());
+ collection.setCollectionNumber(genAccountSalesCollectionNo());
+ collection.setRemark(dto.getRemark());
+ return save(collection);
+ }
+
private String genAccountSalesCollectionNo() {
return "SK" + LocalDateTime.now().format(CODE_TIME_FORMATTER) + new Random().nextInt(10);
}
--
Gitblit v1.9.3