From 34b56683125b210f929b9ef5ea41a4dea009dfcf Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 13 十月 2026 10:06:12 +0800
Subject: [PATCH] 差旅报销审批流程处理
---
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java | 65 +++++++++++++++++++-------------
1 files changed, 39 insertions(+), 26 deletions(-)
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
index 5717177..7488e4b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -136,21 +136,30 @@
*/
@Override
public Double getTaxByBeneFiciaryNo(TaxMoneyVO taxMoneyVo) {
- Double sum = 0.00;
- Double totalScore = 0.00;
+ // 閲戦绱姞蹇呴』鐢� BigDecimal锛歞ouble 绱姞浼氬紩鍏ユ诞鐐瑰熬宸紝瀵艰嚧绠楀嚭鐨勪釜绋庡嚭鐜板垎浠ヤ笅璇樊
+ BigDecimal sum = BigDecimal.ZERO;
+ BigDecimal totalScore = BigDecimal.ZERO;
List<ServiceFunddetail> taxationByBeneFiciaryNo = serviceFunddetailMapper.getTaxBeforeByBeneFiciaryNo(taxMoneyVo);
if (CollectionUtils.isNotEmpty(taxationByBeneFiciaryNo)) {
//璁$畻鐢宠閲戦鎬诲拰锛屼笉鍖呮嫭褰撳墠浼犺繘鏉ョ殑
- sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getAmount).sum();
+ sum = taxationByBeneFiciaryNo.stream()
+ .map(ServiceFunddetail::getAmount)
+ .filter(java.util.Objects::nonNull)
+ .map(BigDecimal::valueOf)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
//涓嶅姞鏈钖叕鐨勪釜绋�
- totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum();
+ totalScore = taxationByBeneFiciaryNo.stream()
+ .map(ServiceFunddetail::getTaxamount)
+ .filter(java.util.Objects::nonNull)
+ .map(BigDecimal::valueOf)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
}
- sum = sum + new Double(taxMoneyVo.getMoney());
+ sum = sum.add(new BigDecimal(taxMoneyVo.getMoney()));
//鍔犱笂鏈钖叕鐨勬�讳釜绋�
- String taxation = TaxtUtils.getTaxation(new BigDecimal(sum));
+ String taxation = TaxtUtils.getTaxation(sum);
- Double tax = Double.valueOf(taxation) - totalScore;
+ Double tax = new BigDecimal(taxation).subtract(totalScore).doubleValue();
return tax;
}
@@ -163,21 +172,30 @@
@Override
public TaxedMoneyVO getTaxBeforeByAfterMoney(TaxMoneyVO taxMoneyVo) {
TaxedMoneyVO taxedMoneyVO = new TaxedMoneyVO();
- Double sum = 0.00;
- Double totalScore = 0.00;
+ // 閲戦绱姞蹇呴』鐢� BigDecimal锛岄伩鍏嶆诞鐐瑰熬宸奖鍝嶇◣鍓�/绋庨缁撴灉
+ BigDecimal sum = BigDecimal.ZERO;
+ BigDecimal totalScore = BigDecimal.ZERO;
List<ServiceFunddetail> taxationByBeneFiciaryNo = serviceFunddetailMapper.getTaxBeforeByBeneFiciaryNo(taxMoneyVo);
if (CollectionUtils.isNotEmpty(taxationByBeneFiciaryNo)) {
//璁$畻鍑虹◣鍚庢�婚噾棰濓紙涓嶅寘鍚湰娆★級
- sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxedamount).sum();
+ sum = taxationByBeneFiciaryNo.stream()
+ .map(ServiceFunddetail::getTaxedamount)
+ .filter(java.util.Objects::nonNull)
+ .map(BigDecimal::valueOf)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
//姹傚嚭涔嬪墠鐨勬�荤殑涓◣
- totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum();
+ totalScore = taxationByBeneFiciaryNo.stream()
+ .map(ServiceFunddetail::getTaxamount)
+ .filter(java.util.Objects::nonNull)
+ .map(BigDecimal::valueOf)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
}
//璁$畻鍑烘�荤殑绋庡悗钖叕锛堝寘鍚湰娆★級
- sum = sum + Double.valueOf(taxMoneyVo.getMoney());
+ sum = sum.add(new BigDecimal(taxMoneyVo.getMoney()));
//绋庡墠鎬婚噾棰�
- String taxationBefore = TaxtUtils.getTaxationBefore(new BigDecimal(sum));
+ String taxationBefore = TaxtUtils.getTaxationBefore(sum);
//鎬讳釜绋�
- BigDecimal tax = new BigDecimal(taxationBefore).subtract(new BigDecimal(sum));
+ BigDecimal tax = new BigDecimal(taxationBefore).subtract(sum);
//鏈鐨勭◣鍓嶉噾棰�
String nowTaxMoney = TaxtUtils.getTaxationBefore(new BigDecimal(taxMoneyVo.getMoney()));
@@ -346,9 +364,9 @@
// 5.2.3 绠楃◣閫昏緫
if (detail.getServicesscopename().contains("绋庡悗")) {
// 绋庡悗鏄庣粏锛氱疮璁$◣鍚庨噾棰濓紝鍙嶆帹绋庡墠閲戦鍜岀◣閲�
- if (idcard.equals("330103196704060019")) {
- log.info("330103196704060019");
- }
+// if (idcard.equals("362329199103224511")) {
+// log.info("鏈辩幃瀹�");
+// }
BigDecimal newTaxedAmounts = BigDecimal.valueOf(taxSum.getTaxedAmounts()).add(BigDecimal.valueOf(detail.getTaxedamount()));
String taxationBefore = TaxtUtils.getTaxationBefore(newTaxedAmounts);
BigDecimal amountNow = new BigDecimal(taxationBefore).subtract(BigDecimal.valueOf(taxSum.getAmounts()));
@@ -360,26 +378,21 @@
} else {
detail.setTaxTime(serviceFund1.getFundtaxtime());
}
- if (tax.doubleValue() < 0) {
- log.info("灏忎簬0浜�");
- }
taxSum.setAmounts((BigDecimal.valueOf(taxSum.getAmounts()).add(amountNow)).doubleValue());
taxSum.setTaxAmounts((BigDecimal.valueOf(taxSum.getTaxAmounts()).add(tax)).doubleValue());
taxSum.setTaxedAmounts(newTaxedAmounts.doubleValue());
} else {
// 绋庡墠鏄庣粏锛氱疮璁$◣鍓嶉噾棰濓紝绠楁�荤◣閲戯紝鍐嶇畻鏈绋庨噾鍜岀◣鍚庨噾棰�
BigDecimal newAmounts = BigDecimal.valueOf(taxSum.getAmounts()).add(BigDecimal.valueOf(detail.getAmount()));
- if (idcard.equals("330103196704060019")) {
- log.info("330103196704060019");
- }
+// if (idcard.equals("362329199103224511")) {
+// log.info("鏈辩幃瀹�");
+// }
String taxation = TaxtUtils.getTaxation(newAmounts);
+
BigDecimal taxAmountNow = new BigDecimal(taxation).subtract(new BigDecimal(String.valueOf(taxSum.getTaxAmounts())));
BigDecimal texdAfterNow = BigDecimal.valueOf(detail.getAmount()).subtract(taxAmountNow);
detail.setTaxamount(taxAmountNow.doubleValue());
detail.setTaxedamount(texdAfterNow.doubleValue());
- if (taxAmountNow.doubleValue() < 0) {
- log.info("灏忎簬0浜�");
- }
if (ObjectUtils.isEmpty(serviceFund1.getFundtaxtime())) {
detail.setTaxTime(new Date());
--
Gitblit v1.9.3