From b9fe4bc4d25580398d83e1c3e0c1003e6ea40268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 5 Aug 2026 17:01:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BA=94=E6=94=B6=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E6=8E=A8=E9=80=81nc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BillManageApplicationService.java | 27 ++++++++++++ .../repository/mapper/BillDetailMapper.java | 3 ++ .../persistence/BillManageImpl.java | 41 +++++++++++++++++++ .../resources/mapper/BillDetailMapper.xml | 10 +++++ 4 files changed, 81 insertions(+) diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java index bb1fc6170..ee8b50793 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java @@ -7,6 +7,7 @@ import com.mhd.bms.application.server.receiptManage.ReceiptManageApplicationServ import com.mhd.bms.domain.billManage.entity.BillDetail; import com.mhd.bms.domain.billManage.entity.BillManage; import com.mhd.bms.domain.billManage.repository.facade.IBillDetailService; +import com.mhd.bms.domain.billManage.repository.facade.IBillManageService; import com.mhd.bms.domain.billManage.repository.mapper.BillDetailMapper; import com.mhd.bms.domain.billManage.repository.po.BillDetailPO; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; @@ -78,6 +79,8 @@ public class BillManageApplicationService { private BillDetailMapper billDetailMapper; @Autowired private NcLogMapper ncLogMapper; + @Autowired + private IBillManageService billManageService; /** @@ -465,6 +468,30 @@ public class BillManageApplicationService { }); } //保存账单明细 + double allTaxRate = 0.0d; + BigDecimal allTaxAmount = BigDecimal.ZERO; + BigDecimal allTaxFreeFee = BigDecimal.ZERO; + for (BillDetailDTO item : billDetailDTOList) { + String firstSubjectCode = item.getFirstSubjectCode(); + Double taxRate = billDetailMapper.getTaxRate(firstSubjectCode); + BigDecimal amount = item.getBillingAmount(); + BigDecimal taxAmount = amount.divide(BigDecimal.ONE.add(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))),10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal taxFreeFee = amount.subtract(taxAmount); + item.setTaxAmount(taxAmount); + item.setTaxFreeFee(taxFreeFee); + item.setTaxRate(taxRate); + allTaxRate += taxRate; + allTaxAmount = allTaxAmount.add(taxAmount); + allTaxFreeFee = allTaxFreeFee.add(taxFreeFee); + } + + BillManage billManage = billManageService.getById(billManageDO.getBillManageId()); + if (billManage != null) { + billManage.setTaxRate(allTaxRate); + billManage.setTaxAmount(allTaxAmount); + billManage.setTaxFreeFee(allTaxFreeFee); + billManageService.updateById(billManage); + } Boolean flagTwo = billDetailDomainService.saveBatch(billDetailDTOList); //保存操作记录 BillOperationLogDO billOperationLogDO = new BillOperationLogDO(); diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java index b8fcdd9c5..044e5565c 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillDetailMapper.java @@ -5,6 +5,7 @@ import com.mhd.bms.domain.billManage.entity.BillDetail; import com.mhd.bms.domain.billManage.repository.po.BillDetailPO; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -19,4 +20,6 @@ public interface BillDetailMapper extends BaseMapper List getDetailsByBillManageId(@Param("billManageId") Long billManageId); List getDetailsByBillManageIdAndGroup(@Param("billManageId") Long billManageId); + + Double getTaxRate(@Param("code") String code); } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java index 17872b7f1..4cb9549dc 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/persistence/BillManageImpl.java @@ -13,6 +13,7 @@ import com.mhd.bms.domain.billManage.entity.BillDetail; import com.mhd.bms.domain.billManage.entity.BillManage; import com.mhd.bms.domain.billManage.repository.facade.IBillDetailService; import com.mhd.bms.domain.billManage.repository.facade.IBillManageService; +import com.mhd.bms.domain.billManage.repository.mapper.BillDetailMapper; import com.mhd.bms.domain.billManage.repository.mapper.BillManageMapper; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.domain.billManage.repository.todo.BillManageDO; @@ -28,6 +29,7 @@ import com.mhd.bms.domain.ncLog.entity.NcLog; import com.mhd.bms.domain.ncLog.repository.mapper.NcLogMapper; import com.mhd.bms.domain.settlementCustomers.entity.SettlementCustomers; import com.mhd.bms.domain.settlementCustomers.repository.facade.ISettlementCustomersService; +import com.mhd.bms.interfaces.dto.billManage.BillDetailDTO; import com.mhd.bms.interfaces.dto.billManage.BillManageDTO; import com.mhd.common.core.domain.dto.ReconciliationDTO; import com.mhd.common.core.domain.dto.nc.*; @@ -89,6 +91,10 @@ public class BillManageImpl extends ServiceImpl im @Autowired private IBillDetailService billDetailService; @Autowired + private IBillManageService billManageService; + @Autowired + private BillDetailMapper billDetailMapper; + @Autowired private BmsInvoiceListMapper bmsInvoiceListMapper; //nc测试环境地址 @@ -199,6 +205,41 @@ public class BillManageImpl extends ServiceImpl im String invoiceId = reconciliation.getInvoiceId(); List billDetails = billDetailService.getDetailsByBillManageIdAndGroup(Long.parseLong(businessDocumentDetaliId)); + //保存税额等 + double allTaxRate = 0.0d; + BigDecimal allTaxAmount = BigDecimal.ZERO; + BigDecimal allTaxFreeFee = BigDecimal.ZERO; + for (BillDetail item : billDetails) { + String firstSubjectCode = item.getInvoiceItem(); + Double taxRate = billDetailMapper.getTaxRate(firstSubjectCode); + BigDecimal amount = item.getBillingAmount(); + BigDecimal taxAmount = amount.divide(BigDecimal.ONE.add(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))),10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal taxFreeFee = amount.subtract(taxAmount); + if (item.getTaxAmount() == null) { + item.setTaxAmount(taxAmount); + } + if (item.getTaxFreeFee() == null) { + item.setTaxFreeFee(taxFreeFee); + } + if (item.getTaxRate() == null) { + item.setTaxRate(taxRate); + } + allTaxRate += taxRate; + allTaxAmount = allTaxAmount.add(taxAmount); + allTaxFreeFee = allTaxFreeFee.add(taxFreeFee); + } + + if (reconciliation.getTaxRate() == null) { + reconciliation.setTaxRate(allTaxRate); + } + if (reconciliation.getTaxAmount() == null) { + reconciliation.setTaxAmount(allTaxAmount); + } + if (reconciliation.getTaxFreeFee() == null) { + reconciliation.setTaxFreeFee(allTaxFreeFee); + } + + List ysitemList=new ArrayList(); String url = ""; Long organizationId = reconciliation.getOrganizationId(); diff --git a/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml b/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml index 5c4d156ed..0fc27b019 100644 --- a/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillDetailMapper.xml @@ -47,5 +47,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND bill_manage_id = #{billManageId} GROUP BY INVOICE_ITEM,INVOICE_ITEM_NAME,FEE_TYPE + + \ No newline at end of file