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/OutBoundServiceImpl.java | 35 ++++++++++++++++++++---------------
1 files changed, 20 insertions(+), 15 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 252dee9..0ec467d 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
@@ -59,19 +59,16 @@
if (ArrayUtil.isEmpty(subjectMatterList.toArray())) {
return R.failed("娌℃湁鏌ヨ鍒扮浉鍏冲悎鍚岃鍗�");
}
- Double outTotal = subjectMatterList.stream().mapToDouble(item -> {
- // 浼樺厛鍒ゆ柇 remainNum
- if (item.getRemainingQuantity() != null && item.getRemainingQuantity().compareTo(new BigDecimal("0")) > 0) {
- return item.getRemainingQuantity().doubleValue();
- } else {
- // remainNum 涓� null 鎴� 0 鏃讹紝浣跨敤 quantity
- return item.getQuantity() == null ? 0.0 : item.getQuantity().doubleValue();
- }
- }).sum();
- BigDecimal orderNum = addDTO.getSubjectMatterList().stream().map(OutSubjectMatterAddDTO::getOutBoundNum)
+ List<String> erpCodeList = subjectMatterList.stream().map(ContractSubjectMatter::getMaterialCode).collect(Collectors.toList());
+ BigDecimal orderNum = subjectMatterList.stream().filter(item ->item.getDeliveryStatus()!=2)
+ .map(item ->item.getDeliveryStatus()==0?item.getQuantity():item.getRemainingQuantity())
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal outTotal = addDTO.getSubjectMatterList().stream()
+ .filter(item->erpCodeList.contains(item.getSubjectMatterCode()))
+ .map(OutSubjectMatterAddDTO::getOutBoundNum)
.filter(num -> num != null) // 杩囨护鎺� null 鍊硷紝闃叉 NullPointerException
.reduce(BigDecimal.ZERO, BigDecimal::add);
- if (new BigDecimal(outTotal).compareTo(orderNum) < 0) {
+ if (outTotal.compareTo(orderNum) > 0) {
return R.failed("鍑哄簱鏁伴噺瓒呭嚭鍚堝悓璁㈠崟鏁伴噺");
}
//褰撳墠鍏ュ簱鏍囩殑鐗�
@@ -203,16 +200,22 @@
paymentConfirm.setTransationAmount(paymentConfirm.getTransationAmount().subtract(fhTotalAmount));
paymentConfirm.setReceivableAmount(paymentConfirm.getTransationAmount());
paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount()));
- paymentConfirmMapper.insert(paymentConfirm);
+ if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
} else {
//涓嶅瓨鍦ㄥ彂璐у簲鏀� 鍑哄簱鎬婚
paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount()));
- paymentConfirmMapper.insert(paymentConfirm);
+ if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
}
} else {
//鏃犱箣鍓嶉樁娈靛簲鏀�
paymentConfirm.setTotalAmount(paymentConfirm.getTransationAmount().multiply(new BigDecimal("-1")));
- paymentConfirmMapper.insert(paymentConfirm);
+ if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
}
//鏇存柊鍙戣揣鍓嶆敹娆剧敓鏁堟椂闂�
@@ -278,7 +281,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());
--
Gitblit v1.9.1