From aa4a9c1aa4d6d0f986b108c20aee53e1dbae6183 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期一, 26 一月 2026 14:17:06 +0800
Subject: [PATCH] 修改新增科目代码
---
service/src/main/java/com/ruoyi/cwgl/service/impl/PayableBillSettlementDetailServiceImpl.java | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 207 insertions(+), 4 deletions(-)
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableBillSettlementDetailServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableBillSettlementDetailServiceImpl.java
index 05551bd..a15a09b 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableBillSettlementDetailServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableBillSettlementDetailServiceImpl.java
@@ -1,6 +1,10 @@
package com.ruoyi.cwgl.service.impl;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
@@ -14,10 +18,16 @@
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.core.service.BaseService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.cwgl.mapper.PayableBillSettlementDetailMapper;
import com.ruoyi.cwgl.domain.PayableBillSettlementDetail;
import com.ruoyi.cwgl.service.IPayableBillSettlementDetailService;
+import com.ruoyi.cwgl.service.IPayableBillManagementService;
+import com.ruoyi.cwgl.domain.PayableBillManagement;
+import com.ruoyi.cwgl.service.IPayableBillManagementLogService;
+import com.ruoyi.cwgl.domain.PayableBillManagementLog;
import com.ruoyi.common.core.text.Convert;
/**
@@ -33,6 +43,12 @@
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Resource
private PayableBillSettlementDetailMapper payableBillSettlementDetailMapper;
+
+ @Resource
+ private IPayableBillManagementService payableBillManagementService;
+
+ @Resource
+ private IPayableBillManagementLogService payableBillManagementLogService;
/**
@@ -102,8 +118,29 @@
@Override
public int insertPayableBillSettlementDetail(PayableBillSettlementDetail payableBillSettlementDetail)
{
+ // 1. 璁剧疆鍒涘缓鏃堕棿
payableBillSettlementDetail.setCreateTime(DateUtils.getNowDate());
- return payableBillSettlementDetailMapper.insertPayableBillSettlementDetail(payableBillSettlementDetail);
+ payableBillSettlementDetail.setCreateBy(SecurityUtils.getUsername());
+ // 2. 鎻掑叆缁撶畻鏄庣粏璁板綍
+ int result = payableBillSettlementDetailMapper.insertPayableBillSettlementDetail(payableBillSettlementDetail);
+
+ // 3. 濡傛灉鎻掑叆鎴愬姛涓攂illId涓嶄负绌猴紝鍒欐洿鏂颁富琛ㄩ噾棰濆拰鐘舵��
+ if (result > 0 && payableBillSettlementDetail.getBillId() != null) {
+ updatePayableBillAmountAndStatus(payableBillSettlementDetail.getBillId());
+
+ // 璁板綍娣诲姞缁撶畻鏄庣粏鎿嶄綔鏃ュ織
+ PayableBillManagement billManagement = payableBillManagementService.selectPayableBillManagementById(payableBillSettlementDetail.getBillId());
+ if (billManagement != null) {
+ PayableBillManagementLog log = new PayableBillManagementLog();
+ log.setBillId(payableBillSettlementDetail.getBillId());
+ log.setCreateBy(SecurityUtils.getUsername());
+ log.setCreateTime(DateUtils.getNowDate());
+ log.setOperation("娣诲姞缁撶畻鏄庣粏锛岃处鍗曠紪鍙凤細" + billManagement.getSystemNo());
+ payableBillManagementLogService.insertPayableBillManagementLog(log);
+ }
+ }
+
+ return result;
}
/**
@@ -115,7 +152,49 @@
@Override
public int insertPayableBillSettlementDetailBatch(List<PayableBillSettlementDetail> payableBillSettlementDetails)
{
+ // 1. 璁剧疆鍒涘缓鏃堕棿
+ for (PayableBillSettlementDetail detail : payableBillSettlementDetails) {
+ detail.setCreateTime(DateUtils.getNowDate());
+ }
+
+ // 2. 鎵归噺鎻掑叆缁撶畻鏄庣粏璁板綍
int rows = payableBillSettlementDetailMapper.insertPayableBillSettlementDetailBatch(payableBillSettlementDetails);
+
+ // 3. 濡傛灉鎻掑叆鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (rows > 0) {
+ // 鑾峰彇鎵�鏈変笉閲嶅鐨刡illId
+ Set<Integer> billIds = payableBillSettlementDetails.stream()
+ .map(PayableBillSettlementDetail::getBillId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 鏇存柊姣忎釜璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ for (Integer billId : billIds) {
+ updatePayableBillAmountAndStatus(billId);
+ }
+
+ // 璁板綍娣诲姞缁撶畻鏄庣粏鎿嶄綔鏃ュ織
+ if (!billIds.isEmpty()) {
+ for (Integer billId : billIds) {
+ PayableBillManagement billManagement = payableBillManagementService.selectPayableBillManagementById(billId);
+ if (billManagement != null) {
+ PayableBillManagementLog log = new PayableBillManagementLog();
+ log.setBillId(billId);
+ log.setCreateBy(SecurityUtils.getUsername());
+ log.setCreateTime(DateUtils.getNowDate());
+
+ // 璁$畻鏈娣诲姞鐨勬槑缁嗘暟閲�
+ long detailCount = payableBillSettlementDetails.stream()
+ .filter(detail -> billId.equals(detail.getBillId()))
+ .count();
+
+ log.setOperation("娣诲姞" + detailCount + "鏉$粨绠楁槑缁嗭紝璐﹀崟缂栧彿锛�" + billManagement.getSystemNo());
+ payableBillManagementLogService.insertPayableBillManagementLog(log);
+ }
+ }
+ }
+ }
+
return rows;
}
@@ -128,8 +207,32 @@
@Override
public int updatePayableBillSettlementDetail(PayableBillSettlementDetail payableBillSettlementDetail)
{
+ // 1. 鑾峰彇淇敼鍓嶇殑璁板綍锛岀敤浜庡悗缁洿鏂颁富琛�
+ PayableBillSettlementDetail oldDetail = null;
+ if (payableBillSettlementDetail.getId() != null) {
+ oldDetail = payableBillSettlementDetailMapper.selectPayableBillSettlementDetailById(payableBillSettlementDetail.getId());
+ }
+
+ // 2. 璁剧疆鏇存柊鏃堕棿
payableBillSettlementDetail.setUpdateTime(DateUtils.getNowDate());
- return payableBillSettlementDetailMapper.updatePayableBillSettlementDetail(payableBillSettlementDetail);
+
+ // 3. 鏇存柊缁撶畻鏄庣粏璁板綍
+ int result = payableBillSettlementDetailMapper.updatePayableBillSettlementDetail(payableBillSettlementDetail);
+
+ // 4. 濡傛灉鏇存柊鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (result > 0) {
+ // 鑾峰彇闇�瑕佹洿鏂扮殑billId锛堜紭鍏堜娇鐢ㄦ柊璁板綍鐨刡illId锛屽鏋滄病鏈夊垯浣跨敤鏃ц褰曠殑billId锛�
+ Integer billId = payableBillSettlementDetail.getBillId();
+ if (billId == null && oldDetail != null) {
+ billId = oldDetail.getBillId();
+ }
+
+ if (billId != null) {
+ updatePayableBillAmountAndStatus(billId);
+ }
+ }
+
+ return result;
}
/**
@@ -139,8 +242,52 @@
* @return 缁撴灉
*/
@Override
- public int updatePayableBillSettlementDetailBatch(List<PayableBillSettlementDetail> payableBillSettlementDetails){
- return payableBillSettlementDetailMapper.updatePayableBillSettlementDetailBatch(payableBillSettlementDetails);
+ public int updatePayableBillSettlementDetailBatch(List<PayableBillSettlementDetail> payableBillSettlementDetails)
+ {
+ // 1. 璁剧疆鏇存柊鏃堕棿
+ for (PayableBillSettlementDetail detail : payableBillSettlementDetails) {
+ detail.setUpdateTime(DateUtils.getNowDate());
+ }
+
+ // 2. 鎵归噺鏇存柊缁撶畻鏄庣粏璁板綍
+ int rows = payableBillSettlementDetailMapper.updatePayableBillSettlementDetailBatch(payableBillSettlementDetails);
+
+ // 3. 濡傛灉鏇存柊鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (rows > 0) {
+ // 鑾峰彇鎵�鏈変笉閲嶅鐨刡illId
+ Set<Integer> billIds = payableBillSettlementDetails.stream()
+ .map(PayableBillSettlementDetail::getBillId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 鏇存柊姣忎釜璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ for (Integer billId : billIds) {
+ updatePayableBillAmountAndStatus(billId);
+ }
+
+ // 璁板綍淇敼缁撶畻鏄庣粏鎿嶄綔鏃ュ織
+ if (!billIds.isEmpty()) {
+ for (Integer billId : billIds) {
+ PayableBillManagement billManagement = payableBillManagementService.selectPayableBillManagementById(billId);
+ if (billManagement != null) {
+ PayableBillManagementLog log = new PayableBillManagementLog();
+ log.setBillId(billId);
+ log.setCreateBy(SecurityUtils.getUsername());
+ log.setCreateTime(DateUtils.getNowDate());
+
+ // 璁$畻鏈淇敼鐨勬槑缁嗘暟閲�
+ long detailCount = payableBillSettlementDetails.stream()
+ .filter(detail -> billId.equals(detail.getBillId()))
+ .count();
+
+ log.setOperation("淇敼" + detailCount + "鏉$粨绠楁槑缁嗭紝璐﹀崟缂栧彿锛�" + billManagement.getSystemNo());
+ payableBillManagementLogService.insertPayableBillManagementLog(log);
+ }
+ }
+ }
+ }
+
+ return rows;
}
/**
@@ -179,4 +326,60 @@
{
return payableBillSettlementDetailMapper.deletePayableBillSettlementDetailById(id);
}
+
+ /**
+ * 鏇存柊搴斾粯璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ *
+ * @param billId 搴斾粯璐﹀崟ID
+ */
+ private void updatePayableBillAmountAndStatus(Integer billId) {
+ // 1. 鏌ヨ搴斾粯璐﹀崟涓昏〃璁板綍
+ PayableBillManagement billManagement = payableBillManagementService.selectPayableBillManagementById(billId);
+ if (billManagement == null) {
+ throw new ServiceException("搴斾粯璐﹀崟涓昏〃璁板綍涓嶅瓨鍦紝ID锛�" + billId);
+ }
+
+ // 2. 鏌ヨ璇ヨ处鍗曠殑鎵�鏈夌粨绠楁槑缁嗚褰�
+ PayableBillSettlementDetail queryDetail = new PayableBillSettlementDetail();
+ queryDetail.setBillId(billId);
+ List<PayableBillSettlementDetail> settlementDetails = payableBillSettlementDetailMapper.selectPayableBillSettlementDetailList(queryDetail);
+
+ // 3. 璁$畻鎬讳粯娆鹃噾棰�
+ BigDecimal totalPaymentAmount = settlementDetails.stream()
+ .map(PayableBillSettlementDetail::getPaymentAmount)
+ .filter(amount -> amount != null)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ // 4. 楠岃瘉閲戦涓嶈兘涓鸿礋鏁�
+ if (totalPaymentAmount.compareTo(BigDecimal.ZERO) < 0) {
+ throw new ServiceException("浠樻閲戦涓嶈兘涓鸿礋鏁�");
+ }
+
+ // 5. 璁$畻寰呬粯閲戦锛堝簲缁撶畻閲戦 - 宸蹭粯閲戦 - 鍑忓厤閲戦锛�
+ BigDecimal totalAmount = billManagement.getTotalAmount() != null ? billManagement.getTotalAmount() : BigDecimal.ZERO;
+ BigDecimal discountAmount = billManagement.getDiscountAmount() != null ? billManagement.getDiscountAmount() : BigDecimal.ZERO;
+ BigDecimal pendingAmount = totalAmount.subtract(totalPaymentAmount).subtract(discountAmount);
+
+ // 6. 楠岃瘉寰呬粯閲戦涓嶈兘涓鸿礋鏁�
+ if (pendingAmount.compareTo(BigDecimal.ZERO) < 0) {
+ throw new ServiceException("寰呬粯閲戦涓嶈兘涓鸿礋鏁帮紝褰撳墠璁$畻鍊硷細" + pendingAmount);
+ }
+
+ // 7. 鏇存柊涓昏〃閲戦
+ billManagement.setPaidAmount(totalPaymentAmount);
+ billManagement.setPendingAmount(pendingAmount);
+
+ // 8. 鏍规嵁寰呬粯閲戦鏇存柊鐘舵��
+ if (pendingAmount.compareTo(BigDecimal.ZERO) == 0) {
+ // 寰呬粯閲戦涓�0锛岀姸鎬佹敼涓�3锛堝凡缁撶畻锛�
+ billManagement.setStatus("3");
+ } else {
+ // 寰呬粯閲戦澶т簬0锛岀姸鎬佹敼涓�1锛堢粨绠椾腑锛�
+ billManagement.setStatus("1");
+ }
+
+ // 9. 鏇存柊涓昏〃璁板綍
+ billManagement.setUpdateTime(DateUtils.getNowDate());
+ payableBillManagementService.updatePayableBillManagement(billManagement);
+ }
}
--
Gitblit v1.8.0