From e02812df9217d3e50a368a8234c07c60c64c0ff4 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期三, 05 八月 2026 08:34:26 +0800
Subject: [PATCH] feat:新增石煤机 机械厂模版合同/客户数据主数据同步接口/合同履约进度新增质保结束操作/合同开票状态 修改为待开 可开 已开/出库逻辑完善
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java | 70 +++++++++++++++++++++++++++++++----
1 files changed, 62 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..f219846 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.date.DateUtil;
+import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +14,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.util.List;
/**
* 姘寸數鎶勮〃
@@ -27,6 +30,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 +38,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 +52,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 +97,7 @@
}
schedule.setPaymentStatus(0);
schedule.setActualAmount(new BigDecimal("0"));
+ schedule.setInvoiceFlag("0");
contractPaymentScheduleMapper.insert(schedule);
//鎴垮眿绉熻祦鐢熸垚搴旀敹
PaymentConfirm confirm = new PaymentConfirm();
@@ -101,6 +131,30 @@
confirm.setCompId(contract.getCompId());
paymentConfirmMapper.insert(confirm);
}
+ //鍒ゆ柇 寰幆鏄惁瀹屾垚
+ 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 (ArrayUtil.isEmpty(execDateList.toArray())&&ArrayUtil.isEmpty(recordList.toArray())){
+ 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 (ArrayUtil.isNotEmpty(confirmList.toArray())){
+ 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