From 641206421e76861db238ecf24094b2a04e7c6371 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 26 八月 2026 15:50:26 +0800
Subject: [PATCH] feat(account): 新增付款和回款功能并优化生产计划下发规则
---
src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java | 44 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 43 insertions(+), 1 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 45900d7..6980280 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,13 +17,16 @@
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;
@@ -40,6 +44,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 +95,43 @@
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());
+
+ AccountSalesCollection collection = new AccountSalesCollection();
+ collection.setCustomerId(dto.getCustomerId().intValue());
+ collection.setStockOutRecordIds(stockOutRecordIds.stream().map(String::valueOf).collect(java.util.stream.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