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/PaymentConfirmServiceImpl.java | 72 +++++++++++++++++++++++++++++++++++-
1 files changed, 70 insertions(+), 2 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index 8451ea7..9555670 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -1,9 +1,12 @@
package com.by4cloud.platformx.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
@@ -13,16 +16,17 @@
import com.by4cloud.platformx.business.mapper.HistoryOverdueMapper;
import com.by4cloud.platformx.business.mapper.PaymentConfirmMapper;
import com.by4cloud.platformx.business.service.BusinessCustomerService;
-import com.by4cloud.platformx.business.service.ContractPaymentScheduleService;
import com.by4cloud.platformx.business.service.ContractService;
import com.by4cloud.platformx.business.service.PaymentConfirmService;
import com.by4cloud.platformx.common.core.util.R;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* 鏀舵纭
@@ -39,6 +43,10 @@
private final ContractPaymentScheduleMapper contractPaymentScheduleMapper;
private final CurrentOverdueMapper currentOverdueMapper;
private final HistoryOverdueMapper historyOverdueMapper;
+
+ @Value("${bip.url}")
+ private String url;
+
@Override
public R add(PaymentConfirmAddDTO addDTO) {
@@ -92,12 +100,14 @@
entity.setConfirmTime(new Date());
baseMapper.insert(entity);
}
+ //鏇存柊浠樻闃舵浠樻
List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
.eq(ContractPaymentSchedule::getContractId,contract.getId()).ne(ContractPaymentSchedule::getPaymentStatus,2)
.orderByAsc(ContractPaymentSchedule::getCreateTime));
if (ArrayUtil.isNotEmpty(scheduleList.toArray())){
BigDecimal remain = addDTO.getTransationAmount();
for (ContractPaymentSchedule schedule:scheduleList) {
+ BigDecimal lastRemain = remain;
remain = remain.subtract(StrUtil.equals(schedule.getPaymentStatus()+"","0")?schedule.getPlannedAmount():
schedule.getPlannedAmount().subtract(schedule.getActualAmount()));
if (remain.compareTo(new BigDecimal("0"))>=0){
@@ -112,20 +122,49 @@
//鏂板閫炬湡鍘嗗彶
HistoryOverdue historyOverdue = BeanUtil.copyProperties(currentOverdue,HistoryOverdue.class,"id");
historyOverdue.setPaymentTime(addDTO.getConfirmTime());
+ historyOverdue.setCompId(schedule.getCompId());
historyOverdueMapper.insert(historyOverdue);
//鍒犻櫎褰撳墠閫炬湡
currentOverdueMapper.deleteById(currentOverdue);
}
}else {
schedule.setActualAmount(StrUtil.equals(schedule.getPaymentStatus()+"","0")?schedule.getPlannedAmount().add(remain):
- schedule.getPlannedAmount().subtract(schedule.getActualAmount()).add(remain));
+ schedule.getActualAmount().add(lastRemain));
schedule.setPaymentDate(addDTO.getConfirmTime());
schedule.setPaymentStatus(1);
contractPaymentScheduleMapper.updateById(schedule);
+ //鏌ヨ鏄惁鏈夊綋鍓嶉�炬湡
+ CurrentOverdue currentOverdue = currentOverdueMapper.selectOne(Wrappers.<CurrentOverdue>lambdaQuery().eq(CurrentOverdue::getScheduleId,schedule.getId())
+ .eq(CurrentOverdue::getContractId,schedule.getContractId()).last("limit 1"));
+ if (ObjUtil.isNotNull(currentOverdue)){
+ //鏂板閫炬湡鍘嗗彶
+ HistoryOverdue historyOverdue = BeanUtil.copyProperties(currentOverdue,HistoryOverdue.class,"id");
+ historyOverdue.setReceivableAmount(lastRemain);
+ historyOverdue.setPaymentTime(addDTO.getConfirmTime());
+ historyOverdue.setCompId(schedule.getCompId());
+ historyOverdueMapper.insert(historyOverdue);
+ //鏌ヨ鍘嗗彶宸蹭粯閫炬湡閲戦
+ List<HistoryOverdue> historyOverdueList = historyOverdueMapper.selectList(Wrappers.<HistoryOverdue>lambdaQuery().eq(HistoryOverdue::getScheduleId,currentOverdue.getScheduleId()));
+ BigDecimal hisTotal = historyOverdueList.stream().map(item->item.getReceivableAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ //鏇存柊褰撳墠閫炬湡
+ currentOverdue.setReceivableAmount(schedule.getPlannedAmount().subtract(hisTotal));
+ currentOverdueMapper.updateById(currentOverdue);
+ }
break;
}
}
}
+ //鏇存柊鍚堝悓宸蹭粯娆�
+ BigDecimal paid = new BigDecimal("0");
+ if (ObjUtil.isNotNull(contract.getPaidAmount())){
+ paid = contract.getPaidAmount();
+ }
+ paid = paid.add(addDTO.getTransationAmount());
+ contract.setPaidAmount(paid);
+ if (paid.compareTo(contract.getAmount())>0){
+ contract.setPaidAmount(contract.getAmount());
+ }
+ contractService.updateById(contract);
}
//杞嚭
if (StrUtil.equals(addDTO.getInOrOut(),"2")){
@@ -150,6 +189,35 @@
entity.setConfirmTime(new Date());
baseMapper.insert(entity);
}
+ // 鏌ヨ鎵�鏈変粯娆鹃樁娈垫槸鍚﹂兘浠樻瀹屾垚
+ List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId,contract.getId()));
+ if (ArrayUtil.isNotEmpty(scheduleList.toArray())){
+ if (scheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))){
+ contract.setContractStatus(3);
+ contractService.updateById(contract);
+ };
+ }
return R.ok();
}
+
+ @Override
+ public R syncPaymentRecepit() {
+
+ JSONObject params = new JSONObject();
+ params.put("pageIndex", 1);
+ params.put("pageSize", 999);
+ params.put("open_billDate_begin", DateUtil.offsetDay(new Date(),-1) + " 00:00:00");
+ params.put("open_billDate_begin", DateUtil.today() + " 00:00:00");
+ //鍗曟嵁鐘舵�佸凡瀹℃壒
+ params.put("verifyState", new String[]{"2"});
+ //寰�鏉ュ璞″鎴�
+ params.put("objectType", new String[]{"1"});
+ //鍗曚綅
+// JSONObject simpleMap = new JSONObject();
+// simpleMap.put("financeOrg.code", bipCode);
+// params.put("simple", simpleMap);
+ HttpUtil.post(url+"/yonbip/EFI/collection/list",params.toJSONString());
+
+ return null;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1