From 9171db8f5ddd91b4619bf6a928dcbe98b82f33a0 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期三, 09 九月 2026 15:34:14 +0800
Subject: [PATCH] feat:工业泵收款推送 bip收款单与收款确认分离 开票前校验产品是否维护税收分类信息
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java | 76 ++++++++++++++++++++++++++++++++++----
1 files changed, 68 insertions(+), 8 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
index 90ac7f2..3b29a55 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
@@ -1,5 +1,7 @@
package com.by4cloud.platformx.business.service.impl;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +14,9 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.util.List;
+
+;
/**
* 姘寸數鎶勮〃
@@ -27,6 +32,7 @@
private final ContractSubjectMatterMapper contractSubjectMatterMapper;
private final ContractPaymentScheduleMapper contractPaymentScheduleMapper;
private final PaymentConfirmMapper paymentConfirmMapper;
+ private final ContractExecDateMapper contractExecDateMapper;
@Override
public R edit(MeterReadRecordUpdateDTO updateDTO) {
@@ -34,6 +40,12 @@
MeterReadRecord lastRecord = baseMapper.selectOne(Wrappers.<MeterReadRecord>lambdaQuery().eq(MeterReadRecord::getContractId,updateDTO.getContractId())
.eq(MeterReadRecord::getMeterReadCode,updateDTO.getMeterReadCode()).lt(MeterReadRecord::getCreateTime,record.getCreateTime())
.orderByDesc(MeterReadRecord::getCreateTime).last("limit 1"));
+ //鎴垮眿绉熻祦鐢熸垚搴旀敹
+ Contract contract = contractMapper.selectById(updateDTO.getContractId());
+ ContractSubjectMatter subjectMatter = contractSubjectMatterMapper.selectById(updateDTO.getMatterId());
+ if(ObjUtil.isNull(lastRecord)){
+ R.failed("鏃犲悎鍚屼俊鎭紝璇疯仈绯绘妧鏈汉鍛�");
+ }
if(ObjUtil.isNull(lastRecord)){
return R.failed("鏃犳渶杩戞妱琛ㄨ褰�");
}
@@ -42,25 +54,44 @@
}
record.setMeterReadTime(updateDTO.getMeterReadTime());
record.setMeterReadNum(updateDTO.getMeterReadNum());
+ record.setUsageNum(updateDTO.getMeterReadNum().subtract(lastRecord.getMeterReadNum()));
record.setMeterReadAttNames(updateDTO.getMeterReadAttNames());
record.setMeterReadAttPaths(updateDTO.getMeterReadAttPaths());
- baseMapper.updateById(record);
- //鎴垮眿绉熻祦鐢熸垚搴旀敹
- Contract contract = contractMapper.selectById(updateDTO.getContractId());
- ContractSubjectMatter subjectMatter = contractSubjectMatterMapper.selectById(updateDTO.getMatterId());
- if(ObjUtil.isNull(lastRecord)){
- R.failed("鏃犲悎鍚屼俊鎭紝璇疯仈绯绘妧鏈汉鍛�");
+ record.setUnitPrice(subjectMatter.getUnitPrice());
+ if (subjectMatter.getMaterialCode().equals("water_bill")){
+ record.setMeterType("2");
}
+ if (subjectMatter.getMaterialCode().equals("electricity_bill")){
+ record.setMeterType("3");
+ }
+ if (subjectMatter.getMaterialCode().equals("house_rental")){
+ record.setMeterType("1");
+ }
+ record.setCostAmount(subjectMatter.getUnitPrice().multiply(updateDTO.getMeterReadNum().subtract(lastRecord.getMeterReadNum())));
+ baseMapper.updateById(record);
+
//鍒涘缓鏀舵鑺傜偣
//鏌ヨ涓婃鏀舵鑺傜偣
ContractPaymentSchedule lastSchedule = contractPaymentScheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery()
.eq(ContractPaymentSchedule::getContractId,contract.getId())
.orderByDesc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
ContractPaymentSchedule schedule = new ContractPaymentSchedule();
- schedule.setStageName("姘寸數浠g即");
+
+ if (subjectMatter.getMaterialCode().equals("water_bill")){
+ schedule.setStageName("姘磋垂浠g即");
+ }
+ if (subjectMatter.getMaterialCode().equals("electricity_bill")){
+ schedule.setStageName("鐢佃垂浠g即");
+ }
+ if (subjectMatter.getMaterialCode().equals("house_rental")){
+ schedule.setStageName("鎴垮眿绉熻祦璐�");
+ }
schedule.setContractId(contract.getId());
schedule.setContractName(contract.getContractName());
- schedule.setPlannedAmount(subjectMatter.getUnitPrice().multiply(updateDTO.getMeterReadNum().subtract(lastRecord.getMeterReadNum())));
+ schedule.setPlannedAmount(record.getCostAmount());
+ schedule.setSubjectMatterCode(subjectMatter.getMaterialCode());
+ schedule.setSubjectMatterName(subjectMatter.getMaterialInternalName());
+ schedule.setRemark(DateUtil.formatDate(record.getMeterReadTime())+schedule.getStageName());
schedule.setEffectiveEndDate(updateDTO.getMeterReadTime());
schedule.setStageOrder(1);
if (ObjUtil.isNotNull(lastSchedule)){
@@ -68,6 +99,8 @@
}
schedule.setPaymentStatus(0);
schedule.setActualAmount(new BigDecimal("0"));
+ schedule.setInvoiceFlag("0");
+ schedule.setInvoiceNum(record.getUsageNum());
contractPaymentScheduleMapper.insert(schedule);
//鎴垮眿绉熻祦鐢熸垚搴旀敹
PaymentConfirm confirm = new PaymentConfirm();
@@ -101,6 +134,33 @@
confirm.setCompId(contract.getCompId());
paymentConfirmMapper.insert(confirm);
}
+ contract.setBillingStatus("2");
+ contract.setAmount(contract.getAmount().add(confirm.getTransationAmount()));
+ contractMapper.updateById(contract);
+ //鍒ゆ柇 寰幆鏄惁瀹屾垚
+ List<ContractExecDate> execDateList = contractExecDateMapper.selectList(Wrappers.<ContractExecDate>lambdaQuery().eq(ContractExecDate::getContractId,contract.getId())
+ .eq(ContractExecDate::getGenFlag,"0"));
+ List<MeterReadRecord> recordList = baseMapper.selectList(Wrappers.<MeterReadRecord>lambdaQuery()
+ .eq(MeterReadRecord::getContractId,contract.getId())
+ .isNull(MeterReadRecord::getMeterReadNum));
+ if (CollUtil.isEmpty(execDateList)&& CollUtil.isEmpty(recordList)){
+ List<PaymentConfirm> confirmList = paymentConfirmMapper.selectList(Wrappers.<PaymentConfirm>lambdaQuery()
+ .eq(PaymentConfirm::getContractId, contract.getId())
+ .and(wrapper -> wrapper
+ .eq(PaymentConfirm::getBusinessType, "鎴垮眿绉熻祦搴旀敹")
+ .or()
+ .eq(PaymentConfirm::getBusinessType, "鍞數搴旀敹")
+ .or()
+ .eq(PaymentConfirm::getBusinessType, "涓嶅緛绋庤嚜鏉ユ按搴旀敹")
+ ));
+ if (CollUtil.isNotEmpty(confirmList)){
+ BigDecimal total = confirmList.stream().map(PaymentConfirm::getTransationAmount).filter(amount -> amount != null).reduce(BigDecimal.ZERO, BigDecimal::add);
+ contract.setAmount(total);
+ contractMapper.updateById(contract);
+ }
+ }
+ contract.setBillingStatus("2");
+ contractMapper.updateById(contract);
return R.ok();
}
}
\ No newline at end of file
--
Gitblit v1.9.1