From 6332b04bc7991a310b13aef044082621d618479a Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期二, 19 五月 2026 17:02:19 +0800
Subject: [PATCH] feat:新增赊销、抵抹账功能 合同新增销售模式字段,新增生成新合同接口 出库:出库多余配件处理
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java | 40 ++++++++++++++++++++++++++++++++++------
1 files changed, 34 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 081447a..c21a77e 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
@@ -52,6 +52,7 @@
contract.setPartyBId(SecurityUtils.getUser().getCompId());
contract.setPartyB(SecurityUtils.getUser().getCompName());
contract.setContractNo(ContractNumberGenerator.generateContractNumber());
+ contract.setPaidAmount(new BigDecimal("0"));
contract.setBillingStatus("0");
contract.setErpPushFlag("0");
List<Contract> contracts;
@@ -122,6 +123,7 @@
contract.setContractNo(ContractNumberGenerator.generateContractNumber());
contract.setBillingStatus("0");
contract.setErpPushFlag("0");
+ contract.setPaidAmount(new BigDecimal("0"));
List<Contract> contracts;
contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,contract.getContractNo()));
while (ArrayUtil.isNotEmpty(contracts.toArray())){
@@ -226,7 +228,9 @@
lastNewTotal = lastNewConfirm.getTotalAmount();
}
paymentConfirm.setTotalAmount(lastNewTotal.subtract(paymentConfirm.getReceivableAmount()));
- paymentConfirmMapper.insert(paymentConfirm);
+ if (fitstSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0){
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
//鏂板鍚堝悓灞ョ害璁板綍
ContractPaymentScheduleProcess process = new ContractPaymentScheduleProcess();
process.setContractId(contract.getId());
@@ -238,7 +242,7 @@
//褰撳墠涓哄悎鍚屾渶鍚庨樁娈�
PaymentConfirm newConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
.orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
- if (newConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>=0){
+ if (ObjUtil.isNotNull(newConfirm)&&newConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>=0){
//鏈夐浠樹笖瓒呰繃搴旀敹 鍏抽棴鍚堝悓鐘舵��
contract.setContractStatus(3);
baseMapper.updateById(contract);
@@ -277,7 +281,9 @@
lastNewTotal = lastNewConfirm.getTotalAmount();
}
paymentConfirm.setTotalAmount(lastNewTotal.subtract(paymentConfirm.getReceivableAmount()));
- paymentConfirmMapper.insert(paymentConfirm);
+ if (fitstSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
}
//鏌ヨ鏄惁鏈夊悗缁樁娈�
List<ContractPaymentSchedule> afterSchedule = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
@@ -316,7 +322,9 @@
lastNewTotal = lastNewConfirm.getTotalAmount();
}
newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
- paymentConfirmMapper.insert(newConfim);
+ if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) {
+ paymentConfirmMapper.insert(newConfim);
+ }
}
//鏇存柊鍚堝悓涓嬩釜闃舵
contract.setNextScheduleName(endSchedule.getStageName());
@@ -369,7 +377,7 @@
//鍒ゆ柇褰撳墠闃舵鏄惁宸茬敓鎴愪笂闃舵搴旀敹瓒呮湡
PaymentConfirm oiverdueConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getScheduleId, contractPaymentSchedule.getId())
.eq(PaymentConfirm::getBusinessType, "搴旀敹瓒呮湡"));
- if (ObjUtil.isNull(oiverdueConfirm)) {
+ if (ObjUtil.isNull(oiverdueConfirm)&&overdueConfirm.getTransationAmount().compareTo(new BigDecimal("0"))>0) {
overdueConfirm.setCompId(contractPaymentSchedule.getCompId());
paymentConfirmMapper.insert(overdueConfirm);
}
@@ -390,7 +398,9 @@
.eq(CurrentOverdue::getScheduleId,currentOverdue.getScheduleId()).last("limit 1"));
if (ObjUtil.isNull(overdue)){
currentOverdue.setCompId(contractPaymentSchedule.getCompId());
- currentOverdueMapper.insert(currentOverdue);
+ if (currentOverdue.getReceivableAmount().compareTo(new BigDecimal("0"))>0){
+ currentOverdueMapper.insert(currentOverdue);
+ }
}else {
overdue.setOverdueDuration(BigDecimal.valueOf(DateUtil.betweenDay(contractPaymentSchedule.getEffectiveEndDate(),new Date(),true)));
currentOverdueMapper.updateById(overdue);
@@ -407,4 +417,22 @@
baseMapper.updateById(contract);
return R.ok();
}
+
+ @Override
+ public R copyNewContract(Long id) {
+ Contract oldContract = baseMapper.selectById(id);
+ Contract newContract = BeanUtil.copyProperties(oldContract,Contract.class,"id","createTime");
+ newContract.setContractNo(ContractNumberGenerator.generateContractNumber());
+ newContract.setPaidAmount(new BigDecimal("0"));
+ newContract.setBillingStatus("0");
+ newContract.setErpPushFlag("0");
+ List<Contract> contracts;
+ contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,newContract.getContractNo()));
+ while (ArrayUtil.isNotEmpty(contracts.toArray())){
+ newContract.setContractNo(ContractNumberGenerator.generateContractNumber());
+ contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,newContract.getContractNo()));
+ }
+ baseMapper.insert(newContract);
+ return R.ok();
+ }
}
--
Gitblit v1.9.1