From e7e6d39b095b6a763e54ab34631171c3de32ec9e Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期五, 15 五月 2026 08:33:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java | 105 +++++++++++++++++++++++++++++++++++-----------------
1 files changed, 71 insertions(+), 34 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 ab084f0..98b4924 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
@@ -40,6 +40,7 @@
private final PaymentConfirmMapper paymentConfirmMapper;
private final ContractMapper contractMapper;
private final ContractPaymentScheduleProcessMapper scheduleProcessMapper;
+ private final ContractOutBoundMapper contractOutBoundMapper;
@Override
public R add(OutBoundAddDTO addDTO) {
@@ -49,6 +50,7 @@
MPJLambdaWrapper<ContractSubjectMatter> wrapper = new MPJLambdaWrapper<ContractSubjectMatter>()
.selectAll(ContractSubjectMatter.class)
.ne(ContractSubjectMatter::getDeliveryStatus, 2)
+ .in(ContractSubjectMatter::getMaterialCode,addDTO.getSubjectMatterList().stream().map(item->item.getSubjectMatterCode()).collect(Collectors.toList()))
.exists(Contract.class, contractQuery ->
contractQuery.select(ContractSubjectMatter::getId)
.eq(Contract::getId, ContractSubjectMatter::getContractId)
@@ -80,7 +82,7 @@
addDTO.getSubjectMatterList().stream().forEach(outSubjectMatterAddDTO -> {
BigDecimal remainNum = outSubjectMatterAddDTO.getOutBoundNum();
for (ContractSubjectMatter subjectMatter : subjectMatterList) {
-
+ Contract contract = contractMapper.selectById(subjectMatter.getContractId());
if (subjectMatter.getDeliveredQuantity().compareTo(new BigDecimal("0")) > 0) {
remainNum = remainNum.subtract(subjectMatter.getRemainingQuantity());
//閮ㄥ垎浜や粯鐘舵�佷笅 鍏ㄩ儴鍑哄簱
@@ -93,15 +95,19 @@
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
} else {
BigDecimal currentOut = remainNum.add(subjectMatter.getRemainingQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
- subjectMatter.setRemainingQuantity(remainNum.multiply(new BigDecimal("-1")));
+ subjectMatter.setRemainingQuantity(subjectMatter.getRemainingQuantity().subtract(currentOut));
subjectMatter.setActualDeliveryDate(DateUtil.today());
subjectMatter.setDeliveryStatus(1);
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
break;
}
@@ -113,9 +119,11 @@
subjectMatter.setRemainingQuantity(new BigDecimal("0"));
subjectMatter.setActualDeliveryDate(DateUtil.today());
subjectMatter.setDeliveryStatus(2);
- contractSubjectMatterMapper.updateById(subjectMatter);
subjectMatter.setLastDeliveredQuantity(subjectMatter.getQuantity());
+ contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
} else {
BigDecimal currentOut = remainNum.add(subjectMatter.getQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
@@ -125,6 +133,8 @@
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
break;
}
}
@@ -148,7 +158,7 @@
//褰撳墠鍑哄簱閲戦
BigDecimal outPirce = value.stream()
.filter(item -> item.getLastDeliveredQuantity() != null && item.getUnitPrice() != null)
- .map(item -> item.getLastDeliveredQuantity().multiply(item.getUnitPrice()))
+ .map(item ->(item.getDeliveryStatus()==1?item.getDeliveredQuantity():item.getQuantity()).multiply(item.getUnitPrice()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
//鍚堝悓閲戦
Contract contract = contractMapper.selectById(key);
@@ -162,7 +172,6 @@
contractMapper.updateById(contract);
}
if (ObjUtil.isNotNull(schedule)) {
-
//鎸夊嚭搴撹祫閲戞瘮渚� 璁$畻鍙戣揣鍓嶅簲鏀舵洿鏂拌祫閲戞槑缁�
PaymentConfirm paymentConfirm = new PaymentConfirm();
paymentConfirm.setBusinessType("鍙戣揣鍓嶅簲鏀�");
@@ -215,43 +224,56 @@
//鏌ヨ鏄惁鏈夊悗缁樁娈�
List<ContractPaymentSchedule> afterSchedule = scheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
.eq(ContractPaymentSchedule::getContractId, schedule.getContractId())
- .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder()));
+ .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder())
+ .orderByAsc(ContractPaymentSchedule::getCreateTime));
if (ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()==1){
-
//鏈�鍚庨樁娈电敓鏁堟椂闂�
ContractPaymentSchedule endSchedule = afterSchedule.get(0);
- endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(),endSchedule.getAgreedDays()));
- endSchedule.setEffectiveEndDate(contract.getExpirationDate());
- scheduleMapper.updateById(endSchedule);
- //褰撳墠闃舵鐢熸晥鏃堕棿
- schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(),schedule.getAgreedDays()));
- schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
- scheduleMapper.updateById(schedule);
- //鏈�鍚庨樁娈靛簲鏀�
- PaymentConfirm newConfim = new PaymentConfirm();
- newConfim.setBusinessType(endSchedule.getStageName()+"搴旀敹");
- newConfim.setBusGuestId(contract.getPartyAId());
- newConfim.setBusGuestName(contract.getPartyA());
- newConfim.setContractId(contract.getId());
- newConfim.setContractName(contract.getContractName());
- newConfim.setContractNo(contract.getContractNo());
- newConfim.setScheduleId(endSchedule.getId());
- newConfim.setScheduleName(schedule.getStageName());
- newConfim.setConfirmTime(addDTO.getOutBoundTime());
- newConfim.setTransationAmount(endSchedule.getPlannedAmount());
- newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
- PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
- .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
- BigDecimal lastNewTotal = new BigDecimal("0");
- if(ObjUtil.isNotNull(lastNewConfirm)){
- lastNewTotal = lastNewConfirm.getTotalAmount();
+ if (StrUtil.equals(endSchedule.getStageName(),"璐ㄤ繚閲�")) {
+ endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), endSchedule.getAgreedDays()));
+ endSchedule.setEffectiveEndDate(contract.getExpirationDate());
+ scheduleMapper.updateById(endSchedule);
+ //褰撳墠闃舵鐢熸晥鏃堕棿
+ schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), schedule.getAgreedDays()));
+ schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
+ scheduleMapper.updateById(schedule);
+ //鏈�鍚庨樁娈靛簲鏀�
+ PaymentConfirm newConfim = new PaymentConfirm();
+ newConfim.setBusinessType(endSchedule.getStageName() + "搴旀敹");
+ newConfim.setBusGuestId(contract.getPartyAId());
+ newConfim.setBusGuestName(contract.getPartyA());
+ newConfim.setContractId(contract.getId());
+ newConfim.setContractName(contract.getContractName());
+ newConfim.setContractNo(contract.getContractNo());
+ newConfim.setScheduleId(endSchedule.getId());
+ newConfim.setScheduleName(schedule.getStageName());
+ newConfim.setConfirmTime(addDTO.getOutBoundTime());
+ newConfim.setTransationAmount(endSchedule.getPlannedAmount());
+ newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
+ PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ BigDecimal lastNewTotal = new BigDecimal("0");
+ if (ObjUtil.isNotNull(lastNewConfirm)) {
+ lastNewTotal = lastNewConfirm.getTotalAmount();
+ }
+ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
+ paymentConfirmMapper.insert(newConfim);
}
- newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
- paymentConfirmMapper.insert(newConfim);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(endSchedule.getStageName());
+ contractMapper.updateById(contract);
+ }
+ if(ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()>1){
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(afterSchedule.get(0).getStageName());
+ contractMapper.updateById(contract);
}
if(ArrayUtil.isEmpty(afterSchedule.toArray())){
schedule.setEffectiveEndDate(contract.getExpirationDate());
scheduleMapper.updateById(schedule);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName("鏃�");
+ contractMapper.updateById(contract);
}
}
});
@@ -259,4 +281,19 @@
return R.ok();
}
+
+ private void saveContractOutBound(Contract contract, OutBoundAddDTO addDTO, ContractSubjectMatter subjectMatter) {
+ ContractOutBound contractOutBound = new ContractOutBound();
+ contractOutBound.setContractId(contract.getId());
+ contractOutBound.setContractName(contract.getContractName());
+ contractOutBound.setBusGuestId(contract.getPartyAId());
+ contractOutBound.setBusGuestName(contract.getPartyA());
+ contractOutBound.setSubjectMatterCode(subjectMatter.getMaterialCode());
+ contractOutBound.setSubjectMatterName(subjectMatter.getMaterialInternalName());
+ contractOutBound.setOutBoundTime(addDTO.getOutBoundTime());
+ contractOutBound.setOutBoundNum(subjectMatter.getLastDeliveredQuantity());
+ contractOutBound.setOutBoundAttNames(addDTO.getOutBoundAttNames());
+ contractOutBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
+ contractOutBoundMapper.insert(contractOutBound);
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1