From d36a5483f0287028bf65cfcd69b88543070e7e98 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 28 五月 2026 14:44:27 +0800
Subject: [PATCH] feat:新增房屋租赁/水电代缴合同新增功能 新增逾期出库功能 新增水电代缴合同抄表功能

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
index 029813d..6634811 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -179,6 +179,19 @@
 				subjectMatter.setDeliveredQuantity(new BigDecimal("0"));
 				subjectMatter.setDeliveryStatus(0);
 				contractSubjectMatterMapper.insert(subjectMatter);
+				//姘寸數绫诲繀椤绘湁鍒濇琛ㄥ彿
+				if (StrUtil.isNotEmpty(contractSubjectMatterAddDTO.getMeterReadCode()) &&
+						ObjUtil.isNotNull(contractSubjectMatterAddDTO.getMeterReadNum())) {
+					meterReadRecordMapper.delete(Wrappers.<MeterReadRecord>lambdaQuery().eq(MeterReadRecord::getContractId, contract.getId()));
+					MeterReadRecord record = BeanUtil.copyProperties(contractSubjectMatterAddDTO, MeterReadRecord.class,"id");
+					record.setContractId(contract.getId());
+					record.setMatterId(subjectMatter.getId());
+					record.setContractName(contract.getContractName());
+					record.setBusGuestId(contract.getPartyAId());
+					record.setBusGuestName(contract.getPartyA());
+					record.setMeterReadTime(new Date());
+					meterReadRecordMapper.insert(record);
+				}
 			});
 		}
 
@@ -506,7 +519,6 @@
 				PaymentConfirm oiverdueConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getScheduleId, contractPaymentSchedule.getId())
 						.eq(PaymentConfirm::getBusinessType, "搴旀敹瓒呮湡"));
 				if (ObjUtil.isNull(oiverdueConfirm) && overdueConfirm.getTransationAmount().compareTo(new BigDecimal("0")) > 0) {
-					overdueConfirm.setCompId(contractPaymentSchedule.getCompId());
 					paymentConfirmMapper.insert(overdueConfirm);
 				}
 				//褰撳墠閫炬湡
@@ -525,7 +537,6 @@
 				CurrentOverdue overdue = currentOverdueMapper.selectOne(Wrappers.<CurrentOverdue>lambdaQuery().eq(CurrentOverdue::getContractId, currentOverdue.getContractId())
 						.eq(CurrentOverdue::getScheduleId, currentOverdue.getScheduleId()).last("limit 1"));
 				if (ObjUtil.isNull(overdue)) {
-					currentOverdue.setCompId(contractPaymentSchedule.getCompId());
 					if (currentOverdue.getReceivableAmount().compareTo(new BigDecimal("0")) > 0) {
 						currentOverdueMapper.insert(currentOverdue);
 					}
@@ -607,11 +618,11 @@
 			Map<String, Object> item = new HashMap<>();
 			item.put("no", no);
 			item.put("materialName", contractSubjectMatter.getMaterialName());
-			item.put("guige", "");
-			item.put("unit", "");
+			item.put("guige", contractSubjectMatter.getSpecification());
+			item.put("unit", contractSubjectMatter.getUnit());
 			item.put("quantity", contractSubjectMatter.getQuantity());
-			item.put("danzhong", "");
-			item.put("zongzhong", "");
+			item.put("danzhong", contractSubjectMatter.getSingleWight());
+			item.put("zongzhong", contractSubjectMatter.getTotalWight());
 			item.put("unitPrice", contractSubjectMatter.getUnitPrice());
 			item.put("price", contractSubjectMatter.getTotalAmount());
 			items.add(item);
@@ -689,6 +700,25 @@
 					record.setBusGuestName(contract.getPartyA());
 					meterReadRecordMapper.insert(record);
 				}else {
+					//鍒涘缓鏀舵鑺傜偣
+					//鏌ヨ涓婃鏀舵鑺傜偣
+					ContractPaymentSchedule lastSchedule = contractPaymentScheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+							.eq(ContractPaymentSchedule::getContractId,contract.getId())
+							.orderByDesc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
+					ContractPaymentSchedule schedule = new ContractPaymentSchedule();
+					schedule.setStageName("鎴跨绉熻祦缂磋垂");
+					schedule.setContractId(contract.getId());
+					schedule.setContractName(contract.getContractName());
+					schedule.setPlannedAmount(subjectMatter.getUnitPrice().multiply(subjectMatter.getQuantity()));
+					schedule.setEffectiveEndDate(contractExecDate.getExecDate());
+					schedule.setStageOrder(1);
+					if (ObjUtil.isNotNull(lastSchedule)){
+						schedule.setStageOrder(lastSchedule.getStageOrder()+1);
+					}
+					schedule.setPaymentStatus(0);
+					schedule.setActualAmount(new BigDecimal("0"));
+					schedule.setCompId(contract.getCompId());
+					contractPaymentScheduleMapper.insert(schedule);
 					//鎴垮眿绉熻祦鐢熸垚搴旀敹
 					PaymentConfirm confirm = new PaymentConfirm();
 					confirm.setBusinessType("鎴垮眿绉熻祦搴旀敹");
@@ -697,6 +727,8 @@
 					confirm.setContractId(contract.getId());
 					confirm.setContractName(contract.getContractName());
 					confirm.setContractNo(contract.getContractNo());
+					confirm.setScheduleId(schedule.getId());
+					confirm.setScheduleName(schedule.getStageName());
 					confirm.setConfirmTime(contractExecDate.getExecDate());
 					confirm.setTransationAmount(subjectMatter.getUnitPrice().multiply(subjectMatter.getQuantity()));
 					confirm.setTotalAmount(confirm.getTransationAmount().multiply(new BigDecimal("-1")));

--
Gitblit v1.9.1