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