From 2d22e2697a48b6061745e674c20359fef4280052 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 18 五月 2026 09:38:04 +0800
Subject: [PATCH] feat:合同流程审批

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index 8451ea7..498a055 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -13,7 +13,6 @@
 import com.by4cloud.platformx.business.mapper.HistoryOverdueMapper;
 import com.by4cloud.platformx.business.mapper.PaymentConfirmMapper;
 import com.by4cloud.platformx.business.service.BusinessCustomerService;
-import com.by4cloud.platformx.business.service.ContractPaymentScheduleService;
 import com.by4cloud.platformx.business.service.ContractService;
 import com.by4cloud.platformx.business.service.PaymentConfirmService;
 import com.by4cloud.platformx.common.core.util.R;
@@ -23,6 +22,7 @@
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鏀舵纭
@@ -98,6 +98,7 @@
 			if (ArrayUtil.isNotEmpty(scheduleList.toArray())){
 				BigDecimal remain = addDTO.getTransationAmount();
 				for (ContractPaymentSchedule schedule:scheduleList) {
+					BigDecimal lastRemain = remain;
 					remain = remain.subtract(StrUtil.equals(schedule.getPaymentStatus()+"","0")?schedule.getPlannedAmount():
 							schedule.getPlannedAmount().subtract(schedule.getActualAmount()));
 					if (remain.compareTo(new BigDecimal("0"))>=0){
@@ -112,16 +113,34 @@
 							//鏂板閫炬湡鍘嗗彶
 							HistoryOverdue historyOverdue = BeanUtil.copyProperties(currentOverdue,HistoryOverdue.class,"id");
 							historyOverdue.setPaymentTime(addDTO.getConfirmTime());
+							historyOverdue.setCompId(schedule.getCompId());
 							historyOverdueMapper.insert(historyOverdue);
 							//鍒犻櫎褰撳墠閫炬湡
 							currentOverdueMapper.deleteById(currentOverdue);
 						}
 					}else {
 						schedule.setActualAmount(StrUtil.equals(schedule.getPaymentStatus()+"","0")?schedule.getPlannedAmount().add(remain):
-								schedule.getPlannedAmount().subtract(schedule.getActualAmount()).add(remain));
+								schedule.getActualAmount().add(lastRemain));
 						schedule.setPaymentDate(addDTO.getConfirmTime());
 						schedule.setPaymentStatus(1);
 						contractPaymentScheduleMapper.updateById(schedule);
+						//鏌ヨ鏄惁鏈夊綋鍓嶉�炬湡
+						CurrentOverdue currentOverdue = currentOverdueMapper.selectOne(Wrappers.<CurrentOverdue>lambdaQuery().eq(CurrentOverdue::getScheduleId,schedule.getId())
+								.eq(CurrentOverdue::getContractId,schedule.getContractId()).last("limit 1"));
+						if (ObjUtil.isNotNull(currentOverdue)){
+							//鏂板閫炬湡鍘嗗彶
+							HistoryOverdue historyOverdue = BeanUtil.copyProperties(currentOverdue,HistoryOverdue.class,"id");
+							historyOverdue.setReceivableAmount(lastRemain);
+							historyOverdue.setPaymentTime(addDTO.getConfirmTime());
+							historyOverdue.setCompId(schedule.getCompId());
+							historyOverdueMapper.insert(historyOverdue);
+							//鏌ヨ鍘嗗彶宸蹭粯閫炬湡閲戦
+							List<HistoryOverdue> historyOverdueList = historyOverdueMapper.selectList(Wrappers.<HistoryOverdue>lambdaQuery().eq(HistoryOverdue::getScheduleId,currentOverdue.getScheduleId()));
+							BigDecimal hisTotal = historyOverdueList.stream().map(item->item.getReceivableAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
+							//鏇存柊褰撳墠閫炬湡
+							currentOverdue.setReceivableAmount(schedule.getPlannedAmount().subtract(hisTotal));
+							currentOverdueMapper.updateById(currentOverdue);
+						}
 						break;
 					}
 				}
@@ -150,6 +169,14 @@
 			entity.setConfirmTime(new Date());
 			baseMapper.insert(entity);
 		}
+		// 鏌ヨ鎵�鏈変粯娆鹃樁娈垫槸鍚﹂兘浠樻瀹屾垚
+		List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId,contract.getId()));
+		if (ArrayUtil.isNotEmpty(scheduleList.toArray())){
+			if (scheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))){
+				contract.setContractStatus(3);
+				contractService.updateById(contract);
+			};
+		}
 		return R.ok();
 	}
 }
\ No newline at end of file

--
Gitblit v1.9.1