From 8d350f76d9b8ca447f8eef680745cea2b3ec61d8 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期四, 25 六月 2026 09:09:17 +0800
Subject: [PATCH] fix: 报价、审核、采购台账、供应商往来、销售台账、客户往来小数点保留6位小数

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 09d5d20..fa7726d 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -20,6 +20,7 @@
 import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.AmountUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -61,7 +62,6 @@
 
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -122,6 +122,7 @@
         PurchaseLedger purchaseLedger = new PurchaseLedger();
         // DTO杞珽ntity
         BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger);
+        AmountUtils.normalizeContractAmount(purchaseLedger);
         SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId());
         //褰曞叆浜�
         SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId());
@@ -235,6 +236,7 @@
 
         // 璁剧疆瀛楁
         for (SalesLedgerProduct product : products) {
+            AmountUtils.normalizeSalesLedgerProduct(product);
             product.setSalesLedgerId(salesLedgerId);
 
             Long productId = product.getProductId();
@@ -276,10 +278,10 @@
         }
 
         // 璁$畻鎬诲惈绋庨噾棰�
-        BigDecimal totalTaxInclusiveAmount = products.stream()
+        BigDecimal totalTaxInclusiveAmount = AmountUtils.scaleAmount(products.stream()
                 .map(SalesLedgerProduct::getTaxInclusiveTotalPrice)
                 .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
+                .reduce(BigDecimal.ZERO, BigDecimal::add));
 
         // 鏇存柊涓昏〃鐨勬�婚噾棰濆瓧娈�
         if (salesLedgerId != null) {
@@ -377,7 +379,9 @@
         // 4. 杞崲 DTO
         PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
         BeanUtils.copyProperties(purchaseLedger, resultDto);
+        AmountUtils.normalizeContractAmount(resultDto);
         if (!products.isEmpty()) {
+            AmountUtils.normalizeSalesLedgerProducts(products);
             resultDto.setHasChildren(true);
             resultDto.setProductData(products);
             resultDto.setStorageBlobVOS(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.FILE, RecordTypeEnum.PURCHASE_LEDGER, purchaseLedger.getId()));
@@ -420,6 +424,7 @@
         queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
                 .eq(SalesLedgerProduct::getType, 2);
         List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
+        AmountUtils.normalizeSalesLedgerProducts(productList);
         resultDto.setProductData(productList);
         return resultDto;
     }
@@ -451,7 +456,14 @@
 
     @Override
     public IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger) {
-        return purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger);
+        IPage<PurchaseLedgerDto> page = purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger);
+        if (!CollectionUtils.isEmpty(page.getRecords())) {
+            page.getRecords().forEach(record -> {
+                AmountUtils.normalizeContractAmount(record);
+                AmountUtils.normalizeSalesLedgerProducts(record.getProductData());
+            });
+        }
+        return page;
     }
 
     @Override
@@ -556,8 +568,14 @@
                     BeanUtils.copyProperties(salesLedgerProductImportDto, salesLedgerProduct);
                     salesLedgerProduct.setSalesLedgerId(salesLedger.getId());
                     salesLedgerProduct.setType(2);
+                    AmountUtils.normalizeSalesLedgerProduct(salesLedgerProduct);
                     // 璁$畻涓嶅惈绋庢�讳环
-                    salesLedgerProduct.setTaxExclusiveTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice().divide(new BigDecimal(1).add(salesLedgerProduct.getTaxRate().divide(new BigDecimal(100))), 2, RoundingMode.HALF_UP));
+                    salesLedgerProduct.setTaxExclusiveTotalPrice(
+                            AmountUtils.calcTaxExclusiveTotalPrice(
+                                    salesLedgerProduct.getTaxInclusiveTotalPrice(),
+                                    salesLedgerProduct.getTaxRate()
+                            )
+                    );
                     list.stream()
                             .filter(map -> map.get("productName").equals(salesLedgerProduct.getProductCategory()) && map.get("model").equals(salesLedgerProduct.getSpecificationModel()))
                             .findFirst()
@@ -605,7 +623,9 @@
         // 4. 杞崲 DTO
         PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
         BeanUtils.copyProperties(purchaseLedger, resultDto);
+        AmountUtils.normalizeContractAmount(resultDto);
         if (!products.isEmpty()) {
+            AmountUtils.normalizeSalesLedgerProducts(products);
             resultDto.setHasChildren(true);
             resultDto.setProductData(products);
         }
@@ -623,6 +643,7 @@
         approveProcessVO.setApproveUserIds(purchaseLedger.getApproveUserIds());
         approveProcessVO.setApproveUser(loginUser.getUserId());
         approveProcessVO.setApproveTime(LocalDate.now().toString());
+        approveProcessVO.setPrice(AmountUtils.scaleAmount(purchaseLedger.getContractAmount()));
         approveProcessService.addApprove(approveProcessVO);
     }
 

--
Gitblit v1.9.3