From b991ccbe475c50390eebd4a3253162fc6b4a9b2c Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期四, 15 一月 2026 10:26:36 +0800
Subject: [PATCH] 新增日志
---
service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillSettlementDetailServiceImpl.java | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 221 insertions(+), 5 deletions(-)
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillSettlementDetailServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillSettlementDetailServiceImpl.java
index 75188ca..b85d458 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillSettlementDetailServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillSettlementDetailServiceImpl.java
@@ -18,7 +18,18 @@
import com.ruoyi.cwgl.mapper.ReceivableBillSettlementDetailMapper;
import com.ruoyi.cwgl.domain.ReceivableBillSettlementDetail;
import com.ruoyi.cwgl.service.IReceivableBillSettlementDetailService;
+import com.ruoyi.cwgl.service.IReceivableBillManagementService;
+import com.ruoyi.cwgl.service.IReceivableBillManagementLogService;
+import com.ruoyi.cwgl.domain.ReceivableBillManagement;
+import com.ruoyi.cwgl.domain.ReceivableBillManagementLog;
import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import java.math.BigDecimal;
+import java.util.Set;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.HashSet;
/**
* 搴旀敹璐﹀崟缁撶畻鏄庣粏Service涓氬姟灞傚鐞�
@@ -33,6 +44,12 @@
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Resource
private ReceivableBillSettlementDetailMapper receivableBillSettlementDetailMapper;
+
+ @Resource
+ private IReceivableBillManagementService receivableBillManagementService;
+
+ @Resource
+ private IReceivableBillManagementLogService receivableBillManagementLogService;
/**
@@ -102,8 +119,85 @@
@Override
public int insertReceivableBillSettlementDetail(ReceivableBillSettlementDetail receivableBillSettlementDetail)
{
+ // 1. 璁剧疆鍒涘缓鏃堕棿
receivableBillSettlementDetail.setCreateTime(DateUtils.getNowDate());
- return receivableBillSettlementDetailMapper.insertReceivableBillSettlementDetail(receivableBillSettlementDetail);
+ receivableBillSettlementDetail.setCreateBy(SecurityUtils.getUsername());
+ // 2. 鎻掑叆缁撶畻鏄庣粏璁板綍
+ int result = receivableBillSettlementDetailMapper.insertReceivableBillSettlementDetail(receivableBillSettlementDetail);
+
+ // 3. 濡傛灉鎻掑叆鎴愬姛涓攂illId涓嶄负绌猴紝鍒欐洿鏂颁富琛ㄩ噾棰濆拰鐘舵��
+ if (result > 0 && receivableBillSettlementDetail.getBillId() != null) {
+ updateReceivableBillAmountAndStatus(receivableBillSettlementDetail.getBillId());
+
+ // 璁板綍娣诲姞缁撶畻鏄庣粏鎿嶄綔鏃ュ織
+ ReceivableBillManagement billManagement = receivableBillManagementService.selectReceivableBillManagementById(receivableBillSettlementDetail.getBillId());
+ if (billManagement != null) {
+ ReceivableBillManagementLog log = new ReceivableBillManagementLog();
+ log.setBillId(receivableBillSettlementDetail.getBillId());
+ log.setCreateBy(SecurityUtils.getUsername());
+ log.setCreateTime(DateUtils.getNowDate());
+ log.setOperation("娣诲姞缁撶畻鏄庣粏锛岃处鍗曠紪鍙凤細" + billManagement.getSystemNo());
+ receivableBillManagementLogService.insertReceivableBillManagementLog(log);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * 鏇存柊搴旀敹璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ *
+ * @param billId 搴旀敹璐﹀崟ID
+ */
+ private void updateReceivableBillAmountAndStatus(Integer billId) {
+ // 1. 鏌ヨ搴旀敹璐﹀崟涓昏〃璁板綍
+ ReceivableBillManagement billManagement = receivableBillManagementService.selectReceivableBillManagementById(billId);
+ if (billManagement == null) {
+ throw new ServiceException("搴旀敹璐﹀崟涓昏〃璁板綍涓嶅瓨鍦紝ID锛�" + billId);
+ }
+
+ // 2. 鏌ヨ璇ヨ处鍗曠殑鎵�鏈夌粨绠楁槑缁嗚褰�
+ ReceivableBillSettlementDetail queryDetail = new ReceivableBillSettlementDetail();
+ queryDetail.setBillId(billId);
+ List<ReceivableBillSettlementDetail> settlementDetails = receivableBillSettlementDetailMapper.selectReceivableBillSettlementDetailList(queryDetail);
+
+ // 3. 璁$畻鎬绘敹娆鹃噾棰�
+ BigDecimal totalReceiptAmount = settlementDetails.stream()
+ .map(ReceivableBillSettlementDetail::getReceiptAmount)
+ .filter(amount -> amount != null)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ // 4. 楠岃瘉閲戦涓嶈兘涓鸿礋鏁�
+ if (totalReceiptAmount.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(totalReceiptAmount).subtract(discountAmount);
+
+ // 6. 楠岃瘉寰呮敹閲戦涓嶈兘涓鸿礋鏁�
+ if (pendingAmount.compareTo(BigDecimal.ZERO) < 0) {
+ throw new ServiceException("寰呮敹閲戦涓嶈兘涓鸿礋鏁帮紝褰撳墠璁$畻鍊硷細" + pendingAmount);
+ }
+
+ // 7. 鏇存柊涓昏〃閲戦
+ billManagement.setReceivedAmount(totalReceiptAmount);
+ 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());
+ receivableBillManagementService.updateReceivableBillManagement(billManagement);
}
/**
@@ -115,7 +209,49 @@
@Override
public int insertReceivableBillSettlementDetailBatch(List<ReceivableBillSettlementDetail> receivableBillSettlementDetails)
{
+ // 1. 璁剧疆鍒涘缓鏃堕棿
+ for (ReceivableBillSettlementDetail detail : receivableBillSettlementDetails) {
+ detail.setCreateTime(DateUtils.getNowDate());
+ }
+
+ // 2. 鎵归噺鎻掑叆缁撶畻鏄庣粏璁板綍
int rows = receivableBillSettlementDetailMapper.insertReceivableBillSettlementDetailBatch(receivableBillSettlementDetails);
+
+ // 3. 濡傛灉鎻掑叆鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (rows > 0) {
+ // 鑾峰彇鎵�鏈変笉閲嶅鐨刡illId
+ Set<Integer> billIds = receivableBillSettlementDetails.stream()
+ .map(ReceivableBillSettlementDetail::getBillId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 鏇存柊姣忎釜璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ for (Integer billId : billIds) {
+ updateReceivableBillAmountAndStatus(billId);
+ }
+
+ // 璁板綍娣诲姞缁撶畻鏄庣粏鎿嶄綔鏃ュ織
+ if (!billIds.isEmpty()) {
+ for (Integer billId : billIds) {
+ ReceivableBillManagement billManagement = receivableBillManagementService.selectReceivableBillManagementById(billId);
+ if (billManagement != null) {
+ ReceivableBillManagementLog log = new ReceivableBillManagementLog();
+ log.setBillId(billId);
+ log.setCreateBy(SecurityUtils.getUsername());
+ log.setCreateTime(DateUtils.getNowDate());
+
+ // 璁$畻鏈娣诲姞鐨勬槑缁嗘暟閲�
+ long detailCount = receivableBillSettlementDetails.stream()
+ .filter(detail -> billId.equals(detail.getBillId()))
+ .count();
+
+ log.setOperation("娣诲姞" + detailCount + "鏉$粨绠楁槑缁嗭紝璐﹀崟缂栧彿锛�" + billManagement.getSystemNo());
+ receivableBillManagementLogService.insertReceivableBillManagementLog(log);
+ }
+ }
+ }
+ }
+
return rows;
}
@@ -128,8 +264,32 @@
@Override
public int updateReceivableBillSettlementDetail(ReceivableBillSettlementDetail receivableBillSettlementDetail)
{
+ // 1. 鑾峰彇淇敼鍓嶇殑璁板綍锛岀敤浜庡悗缁洿鏂颁富琛�
+ ReceivableBillSettlementDetail oldDetail = null;
+ if (receivableBillSettlementDetail.getId() != null) {
+ oldDetail = receivableBillSettlementDetailMapper.selectReceivableBillSettlementDetailById(receivableBillSettlementDetail.getId());
+ }
+
+ // 2. 璁剧疆鏇存柊鏃堕棿
receivableBillSettlementDetail.setUpdateTime(DateUtils.getNowDate());
- return receivableBillSettlementDetailMapper.updateReceivableBillSettlementDetail(receivableBillSettlementDetail);
+
+ // 3. 鏇存柊缁撶畻鏄庣粏璁板綍
+ int result = receivableBillSettlementDetailMapper.updateReceivableBillSettlementDetail(receivableBillSettlementDetail);
+
+ // 4. 濡傛灉鏇存柊鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (result > 0) {
+ // 鑾峰彇闇�瑕佹洿鏂扮殑billId锛堜紭鍏堜娇鐢ㄦ柊璁板綍鐨刡illId锛屽鏋滄病鏈夊垯浣跨敤鏃ц褰曠殑billId锛�
+ Integer billId = receivableBillSettlementDetail.getBillId();
+ if (billId == null && oldDetail != null) {
+ billId = oldDetail.getBillId();
+ }
+
+ if (billId != null) {
+ updateReceivableBillAmountAndStatus(billId);
+ }
+ }
+
+ return result;
}
/**
@@ -140,7 +300,29 @@
*/
@Override
public int updateReceivableBillSettlementDetailBatch(List<ReceivableBillSettlementDetail> receivableBillSettlementDetails){
- return receivableBillSettlementDetailMapper.updateReceivableBillSettlementDetailBatch(receivableBillSettlementDetails);
+ // 1. 璁剧疆鏇存柊鏃堕棿
+ for (ReceivableBillSettlementDetail detail : receivableBillSettlementDetails) {
+ detail.setUpdateTime(DateUtils.getNowDate());
+ }
+
+ // 2. 鎵归噺鏇存柊缁撶畻鏄庣粏璁板綍
+ int result = receivableBillSettlementDetailMapper.updateReceivableBillSettlementDetailBatch(receivableBillSettlementDetails);
+
+ // 3. 濡傛灉鏇存柊鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (result > 0) {
+ // 鑾峰彇鎵�鏈変笉閲嶅鐨刡illId
+ Set<Integer> billIds = receivableBillSettlementDetails.stream()
+ .map(ReceivableBillSettlementDetail::getBillId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 鏇存柊姣忎釜璐﹀崟涓昏〃鐨勯噾棰濆拰鐘舵��
+ for (Integer billId : billIds) {
+ updateReceivableBillAmountAndStatus(billId);
+ }
+ }
+
+ return result;
}
/**
@@ -165,7 +347,26 @@
@Override
public int deleteReceivableBillSettlementDetailByIds(Integer[] ids)
{
- return receivableBillSettlementDetailMapper.deleteReceivableBillSettlementDetailByIds(ids);
+ // 1. 鑾峰彇鍒犻櫎鍓嶇殑璁板綍锛岀敤浜庡悗缁洿鏂颁富琛�
+ Set<Integer> billIds = new HashSet<>();
+ for (Integer id : ids) {
+ ReceivableBillSettlementDetail detail = receivableBillSettlementDetailMapper.selectReceivableBillSettlementDetailById(id);
+ if (detail != null && detail.getBillId() != null) {
+ billIds.add(detail.getBillId());
+ }
+ }
+
+ // 2. 鍒犻櫎缁撶畻鏄庣粏璁板綍
+ int result = receivableBillSettlementDetailMapper.deleteReceivableBillSettlementDetailByIds(ids);
+
+ // 3. 濡傛灉鍒犻櫎鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (result > 0) {
+ for (Integer billId : billIds) {
+ updateReceivableBillAmountAndStatus(billId);
+ }
+ }
+
+ return result;
}
/**
@@ -177,6 +378,21 @@
@Override
public int deleteReceivableBillSettlementDetailById(Integer id)
{
- return receivableBillSettlementDetailMapper.deleteReceivableBillSettlementDetailById(id);
+ // 1. 鑾峰彇鍒犻櫎鍓嶇殑璁板綍锛岀敤浜庡悗缁洿鏂颁富琛�
+ Integer billId = null;
+ ReceivableBillSettlementDetail detail = receivableBillSettlementDetailMapper.selectReceivableBillSettlementDetailById(id);
+ if (detail != null && detail.getBillId() != null) {
+ billId = detail.getBillId();
+ }
+
+ // 2. 鍒犻櫎缁撶畻鏄庣粏璁板綍
+ int result = receivableBillSettlementDetailMapper.deleteReceivableBillSettlementDetailById(id);
+
+ // 3. 濡傛灉鍒犻櫎鎴愬姛锛屽垯鏇存柊鐩稿叧涓昏〃閲戦鍜岀姸鎬�
+ if (result > 0 && billId != null) {
+ updateReceivableBillAmountAndStatus(billId);
+ }
+
+ return result;
}
}
--
Gitblit v1.8.0