From ca019747743a76f9348fcac99385c91736a36638 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 17 九月 2026 16:44:15 +0800
Subject: [PATCH] feat:标的物变更 合同审核流程改为推送合同中心通过后上传盖章签字件 履约进度新增合同补录按钮

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java |   45 ++++++++++++++++++---------------------------
 1 files changed, 18 insertions(+), 27 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
index 7443d48..57f2256 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
@@ -337,18 +337,6 @@
 //							beforeSchedule.setEffectiveEndDate(schedule.getEffectiveDate());
 //							scheduleMapper.updateById(beforeSchedule);
 //						}
-						//鏇存柊灞ョ害
-						ContractPaymentScheduleProcess contractPaymentScheduleProcess = new ContractPaymentScheduleProcess();
-						contractPaymentScheduleProcess.setContractId(schedule.getContractId());
-						contractPaymentScheduleProcess.setContractName(schedule.getContractName());
-						contractPaymentScheduleProcess.setScheduleId(schedule.getId());
-						contractPaymentScheduleProcess.setScheduleName(schedule.getStageName());
-						contractPaymentScheduleProcess.setProcessDate(addDTO.getOutBoundTime());
-						ContractPaymentScheduleProcess lastProcess = scheduleProcessMapper.selectOne(Wrappers.<ContractPaymentScheduleProcess>lambdaQuery().eq(ContractPaymentScheduleProcess::getContractId, schedule.getContractId())
-								.eq(ContractPaymentScheduleProcess::getScheduleId, schedule.getId()).last("limit 1"));
-						if (ObjUtil.isNull(lastProcess)) {
-							scheduleProcessMapper.insert(contractPaymentScheduleProcess);
-						}
 					}
 
 					//鏌ヨ鏄惁鏈夊悗缁樁娈�
@@ -473,14 +461,15 @@
 	public R addContractOut(OutBoundAddDTO addDTO) {
 		//鏍¢獙鍙傛暟
 		R<Contract> r = vailParam(addDTO);
-		if (!r.isOk()){
+		if (!r.isOk()) {
 			return r;
 		}
 		Contract contract = r.getData();
 		//鍑哄簱
-		handleOutBound(contract,addDTO);
+		handleOutBound(contract, addDTO);
+
 		//淇濆瓨璧勯噾鏄庣粏
-		BigDecimal outBoundAmount = savePaymentConfirm(contract,addDTO);
+		BigDecimal outBoundAmount = savePaymentConfirm(contract, addDTO);
 		//鏇存柊鍚堝悓鐘舵�佸強闃舵
 		contract.setOutBoundAmout(outBoundAmount);
 		updateContractSchedule(contract);
@@ -492,35 +481,37 @@
 		List<ContractSubjectMatter> unComOutList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
 				.eq(ContractSubjectMatter::getContractId, contract.getId())
 				.ne(ContractSubjectMatter::getDeliveryStatus, 2));
-		if (CollUtil.isEmpty(unComOutList)){
+		if (CollUtil.isEmpty(unComOutList)) {
 			contract.setNextScheduleName("璐у埌绛炬敹");
 		}
 		contract.setBillingStatus("2");
 		contractMapper.updateById(contract);
 	}
 
-	private BigDecimal savePaymentConfirm(Contract contract,OutBoundAddDTO addDTO) {
+	private BigDecimal savePaymentConfirm(Contract contract, OutBoundAddDTO addDTO) {
 		//鏌ヨ鍚堝悓鏄惁鏈夊嚭搴撻樁娈�
 		ContractPaymentSchedule schedule = scheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId, contract.getId())
-				.eq(ContractPaymentSchedule::getStageName, "鍙戣揣鍓�").gt(ContractPaymentSchedule::getPaymentRatio,0).last("limit 1"));
-		if (ObjUtil.isNull(schedule.getEffectiveDate())&&ObjUtil.isNull(schedule.getEffectiveEndDate())){
+				.eq(ContractPaymentSchedule::getStageName, "鍙戣揣鍓�").last("limit 1"));
+		if (ObjUtil.isNull(schedule.getEffectiveDate()) && ObjUtil.isNull(schedule.getEffectiveEndDate())) {
 			schedule.setEffectiveDate(addDTO.getOutBoundTime());
-			schedule.setEffectiveEndDate(DateUtil.offsetDay(addDTO.getOutBoundTime(),schedule.getAgreedDays()));
+			schedule.setEffectiveEndDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), schedule.getAgreedDays()));
 			scheduleMapper.updateById(schedule);
 		}
+		//灞ョ害鍑犵巼
+		processService.saveScheduleProcess(addDTO.getOutBoundTime(),schedule);
 
-		BigDecimal outAmount = new BigDecimal("0");
 		//璁$畻鍑哄簱浠锋牸
+		BigDecimal outAmount = new BigDecimal("0");
 		for (OutSubjectMatterAddDTO outSubjectMatterAddDTO : addDTO.getSubjectMatterList()) {
 			ContractSubjectMatter subjectMatter = contractSubjectMatterMapper.selectOne(Wrappers.<ContractSubjectMatter>lambdaQuery()
 					.eq(ContractSubjectMatter::getContractId, contract.getId())
 					.eq(ContractSubjectMatter::getMaterialCode, outSubjectMatterAddDTO.getSubjectMatterCode())
-					.eq(StrUtil.isNotBlank(outSubjectMatterAddDTO.getLineNo()),ContractSubjectMatter::getLineNo, outSubjectMatterAddDTO.getLineNo())
+					.eq(StrUtil.isNotBlank(outSubjectMatterAddDTO.getLineNo()), ContractSubjectMatter::getLineNo, outSubjectMatterAddDTO.getLineNo())
 					.last("limit 1"));
 			outAmount = outAmount.add(outSubjectMatterAddDTO.getOutBoundNum().multiply(subjectMatter.getUnitPrice()));
 		}
 		//瀛樺湪鍙戣揣鍓嶆敹娆鹃樁娈�
-		if (ObjUtil.isNotNull(schedule)) {
+		if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
 			//鏂板褰撳墠闃舵搴旀敹
 			PaymentConfirm currentConfim = new PaymentConfirm();
 			currentConfim.setBusinessType(schedule.getStageName() + "搴旀敹");
@@ -533,7 +524,7 @@
 			currentConfim.setScheduleName(schedule.getStageName());
 			currentConfim.setConfirmTime(addDTO.getOutBoundTime());
 			//鎸夊嚭搴撴瘮渚嬭绠楀簲鏀�
-			currentConfim.setTransationAmount(schedule.getPlannedAmount().multiply(outAmount.divide(contract.getAmount(),2,RoundingMode.HALF_UP)));
+			currentConfim.setTransationAmount(schedule.getPlannedAmount().multiply(outAmount.divide(contract.getAmount(), 2, RoundingMode.HALF_UP)));
 			currentConfim.setReceivableAmount(currentConfim.getTransationAmount());
 			PaymentConfirm lastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
 					.orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
@@ -547,7 +538,7 @@
 			currentConfim.setTotalAmount(currentConfim.getTransationAmount().multiply(new BigDecimal("-1")));
 			paymentConfirmMapper.insert(currentConfim);
 			//鍘嗗彶璧勯噾浣欓
-			processService.handleBeforeRemain(currentConfim,contract);
+			processService.handleBeforeRemain(currentConfim, contract);
 		}
 		return outAmount;
 	}
@@ -581,7 +572,7 @@
 			contractSubjectMatterMapper.updateById(subjectMatter);
 			//淇濆瓨erp鍑哄簱
 			String batchNumber = genBatchNumber();
-			Long outBoundId = saveErpOutBound(contract,addDTO,outSubjectMatterAddDTO,batchNumber);
+			Long outBoundId = saveErpOutBound(contract, addDTO, outSubjectMatterAddDTO, batchNumber);
 			//淇濆瓨鍚堝悓鍑哄簱璁板綍
 			saveContractOutBound(contract, addDTO, subjectMatter, outBoundId);
 		});
@@ -607,7 +598,7 @@
 		return "";
 	}
 
-	private Long saveErpOutBound(Contract contract, OutBoundAddDTO addDTO,OutSubjectMatterAddDTO outSubjectMatterAddDTO,String batchNumber) {
+	private Long saveErpOutBound(Contract contract, OutBoundAddDTO addDTO, OutSubjectMatterAddDTO outSubjectMatterAddDTO, String batchNumber) {
 		OutBound outBound = new OutBound();
 		outBound.setBatchNumber(batchNumber);
 		outBound.setOutBoundNum(outSubjectMatterAddDTO.getOutBoundNum());

--
Gitblit v1.9.1