From a422a984cfa2a5a2bbe89c6fa6947363e559bb4f Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期五, 22 五月 2026 09:29:14 +0800
Subject: [PATCH] feat:faet:出库加批次号,合同履约加销方购方履约,到货单据必填校验,验收单据必填校验,单位新增法人、委托代理人字段 、合同出库新增erp出库ID

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java |   50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
index da08ddc..f722306 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
@@ -14,15 +14,13 @@
 import com.by4cloud.platformx.business.vo.ContractPaymentScheduleVo;
 import com.by4cloud.platformx.business.vo.ScheduleProcessVo;
 import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -130,6 +128,50 @@
 					BigDecimal lastTotal = new BigDecimal("0");
 					if (ObjUtil.isNotNull(lastConfirm)) {
 						lastTotal = lastConfirm.getTotalAmount();
+					}else {
+						//瀹㈡埛浠樻瀹屾垚鍚堝悓
+						List<Contract> customerCompleteContractList = contractMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getPartyAId, contract.getPartyAId())
+								.eq(Contract::getPartyBId, SecurityUtils.getUser().getCompId()).apply(" amount = paid_amount"));
+						if (ArrayUtil.isNotEmpty(customerCompleteContractList)){
+							List<BigDecimal> outAmountList = new ArrayList<>();
+							for (Contract completeContract:customerCompleteContractList
+							) {
+								PaymentConfirm contractLastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,completeContract.getId())
+										.orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+								//鏌ヨ瀹㈡埛浠樻瀹屾垚鍚堝悓涓渶鍚庢槑缁嗛噾棰� 鏈夐鏀惰浆鍏ュ綋鍓嶅悎鍚�
+								if (contractLastConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>0){
+									//鏂板瀹屾垚浠樻鍚堝悓 璧勯噾杞嚭
+									PaymentConfirm outConfirm = BeanUtil.copyProperties(contractLastConfirm,PaymentConfirm.class,"id","transationAmount",
+											"advanceAmount","receivableAmount","overdueAmount","totalAmount");
+									outConfirm.setBusinessType("璧勯噾杞嚭");
+									outConfirm.setConfirmTime(new Date());
+									outConfirm.setTransationAmount(contractLastConfirm.getTotalAmount());
+									outConfirm.setTotalAmount(new BigDecimal("0"));
+									paymentConfirmMapper.insert(outConfirm);
+									outAmountList.add(outConfirm.getTransationAmount());
+								}
+							}
+							if (ArrayUtil.isNotEmpty(outAmountList.toArray())){
+								BigDecimal currentSum = new BigDecimal("0");
+								for (BigDecimal currentAmount:outAmountList
+								) {
+									currentSum=currentSum.add(currentAmount);
+									//鏂板褰撳墠鍚堝悓 璧勯噾杞叆
+									PaymentConfirm inConfirm = BeanUtil.copyProperties(lastConfirm,PaymentConfirm.class,"id","transationAmount",
+											"advanceAmount","receivableAmount","overdueAmount","totalAmount");
+									inConfirm.setBusinessType("璧勯噾杞叆");
+									inConfirm.setConfirmTime(new Date());
+									inConfirm.setTransationAmount(currentSum.subtract(currentAmount));
+									inConfirm.setTotalAmount(lastConfirm.getTotalAmount().add(currentSum));
+									if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>0){
+										inConfirm.setAdvanceAmount(inConfirm.getTotalAmount());
+									}else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0"))<0){
+										inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1")));
+									}
+									paymentConfirmMapper.insert(inConfirm);
+								}
+							}
+						}
 					}
 					currentConfim.setTotalAmount(lastTotal.subtract(currentConfim.getReceivableAmount()));
 					if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {

--
Gitblit v1.9.1