From 910c7b170161cc32c49987ea3da9af601661d75e 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, 9 Sep 2026 14:19:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E5=BA=A6=E6=B1=87=E6=80=BB=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BillManageApplicationService.java | 62 +++++++++++++++++ .../repository/facade/IBillManageService.java | 6 ++ .../repository/mapper/BillManageMapper.java | 6 ++ .../persistence/BillManageImpl.java | 6 ++ .../repository/todo/BillManageDO.java | 3 + .../service/BillManageDomainService.java | 8 +++ .../dto/billManage/BillManageDTO.java | 3 + .../dto/billManage/CustomerMonthBillVO.java | 65 ++++++++++++++++++ .../interfaces/facadeApi/BillManageApi.java | 68 +++++++++++++++++++ .../resources/mapper/BillManageMapper.xml | 28 ++++++++ 10 files changed, 255 insertions(+) create mode 100644 mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/CustomerMonthBillVO.java 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 aa6b45f76..9105acf2c 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 @@ -33,6 +33,7 @@ import com.mhd.bms.infrastructure.constant.BillLogsConstants; import com.mhd.bms.interfaces.assembler.billManage.BillManageAssembler; import com.mhd.bms.interfaces.dto.billManage.BillDetailDTO; import com.mhd.bms.interfaces.dto.billManage.BillManageDTO; +import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO; import com.mhd.bms.interfaces.dto.billingStatement.BillingStatementDTO; import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; @@ -876,5 +877,66 @@ public class BillManageApplicationService { return flag && flagTwo; } + /** + * 客户每月账单分组查询 + */ + public List queryCustomerMonthBillList(BillManageDO billManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null) { + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = billManageDO.getOrganizationId(); + if (userOrganizationId != null && userOrganizationId == 2827L) { + if (frontendOrganizationId != null) { + billManageDO.setOrganizationId(frontendOrganizationId); + billManageDO.setTopOrganizationId(null); + } else { + billManageDO.setOrganizationId(null); + billManageDO.setTopOrganizationId(null); + } + } else { + if (frontendOrganizationId != null && userOrganizationId != null) { + if (!frontendOrganizationId.equals(userOrganizationId)) { + billManageDO.setOrganizationId(userOrganizationId); + } + } else { + if (userOrganizationId != null) { + billManageDO.setOrganizationId(userOrganizationId); + } + } + if (billManageDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + billManageDO.setTopOrganizationId(topOrganizationId); + } + } else { + billManageDO.setTopOrganizationId(2827L); + } + } + } + + List list = billManageDomainService.queryCustomerMonthBillList(billManageDO); + + // 计算付款状态 + for (CustomerMonthBillVO vo : list) { + BigDecimal totalAmount = vo.getTotalBillAmount() != null ? vo.getTotalBillAmount() : BigDecimal.ZERO; + BigDecimal settledAmount = vo.getTotalSettledAmount() != null ? vo.getTotalSettledAmount() : BigDecimal.ZERO; + + if (totalAmount.compareTo(BigDecimal.ZERO) == 0) { + vo.setPaymentStatus(3); + vo.setPaymentStatusName("已付款"); + } else if (settledAmount.compareTo(BigDecimal.ZERO) == 0) { + vo.setPaymentStatus(1); + vo.setPaymentStatusName("未付款"); + } else if (settledAmount.compareTo(totalAmount) >= 0) { + vo.setPaymentStatus(3); + vo.setPaymentStatusName("已付款"); + } else { + vo.setPaymentStatus(2); + vo.setPaymentStatusName("部分付款"); + } + } + + return list; + } } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillManageService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillManageService.java index 74dc98eae..fa7691f69 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillManageService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/facade/IBillManageService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.mhd.bms.domain.billManage.entity.BillManage; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.domain.billManage.repository.todo.BillManageDO; +import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO; import java.util.List; @@ -20,6 +21,11 @@ public interface IBillManageService extends IService */ public List queryList(BillManageDO billManageDO); + /** + * 客户每月账单分组查询 + */ + public List queryCustomerMonthBillList(BillManageDO billManageDO); + /** * 新增账单管理 */ diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillManageMapper.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillManageMapper.java index 04608dd9a..dc55f5a13 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillManageMapper.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/mapper/BillManageMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mhd.bms.domain.billManage.entity.BillManage; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.domain.billManage.repository.todo.BillManageDO; +import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO; import org.apache.ibatis.annotations.Param; /** * 账单管理Mapper接口 @@ -19,6 +20,11 @@ public interface BillManageMapper extends BaseMapper */ public List queryList(@Param("billManageDO") BillManageDO billManageDO); + /** + * 客户每月账单分组查询 + */ + public List queryCustomerMonthBillList(@Param("billManageDO") BillManageDO billManageDO); + String getInvoiceItemName(@Param("invoiceItemId") String invoiceItemId); String getInvoiceItemNcCode(@Param("invoiceItemId") String invoiceItemId); 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 e9148ca7c..bac4a51b1 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 @@ -31,6 +31,7 @@ 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.bms.interfaces.dto.billManage.CustomerMonthBillVO; import com.mhd.common.core.domain.dto.ReconciliationDTO; import com.mhd.common.core.domain.dto.nc.*; import com.mhd.common.core.domain.entity.R; @@ -1504,4 +1505,9 @@ public class BillManageImpl extends ServiceImpl im return 0; } + + @Override + public List queryCustomerMonthBillList(BillManageDO billManageDO) { + return billManageMapper.queryCustomerMonthBillList(billManageDO); + } } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillManageDO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillManageDO.java index cfb053614..142b263d2 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillManageDO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillManageDO.java @@ -266,4 +266,7 @@ public class BillManageDO extends BaseVOEntity{ private String paymentAccountName; @ApiModelProperty("业务员ID") private String salesmanId; + + @ApiModelProperty("账单月份(yyyy-MM,按创建时间月份筛选,用于客户月账单分组查询)") + private String billMonth; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/service/BillManageDomainService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/service/BillManageDomainService.java index 33d3535e3..02a767d95 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/service/BillManageDomainService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/service/BillManageDomainService.java @@ -12,6 +12,7 @@ import com.mhd.bms.domain.billManage.repository.facade.IBillManageService; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.domain.billManage.repository.todo.BillDetailDO; import com.mhd.bms.domain.billManage.repository.todo.BillManageDO; +import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO; import com.mhd.bms.domain.billOperationLog.entity.BillOperationLog; import com.mhd.bms.domain.billOperationLog.repository.todo.BillOperationLogDO; import com.mhd.bms.domain.billOperationLog.service.BillOperationLogDomainService; @@ -776,4 +777,11 @@ public class BillManageDomainService { { return billManageService.synchronousNcSK(businessDocumentDetaliIds); } + + /** + * 客户每月账单分组查询 + */ + public List queryCustomerMonthBillList(BillManageDO billManageDO) { + return billManageService.queryCustomerMonthBillList(billManageDO); + } } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillManageDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillManageDTO.java index 225e23588..324daf50e 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillManageDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillManageDTO.java @@ -276,4 +276,7 @@ public class BillManageDTO extends BaseVOEntity{ private String paymentAccountId; @ApiModelProperty("收款帐户名称") private String paymentAccountName; + + @ApiModelProperty("账单月份(yyyy-MM,按创建时间月份筛选,用于客户月账单分组查询)") + private String billMonth; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/CustomerMonthBillVO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/CustomerMonthBillVO.java new file mode 100644 index 000000000..39b18a239 --- /dev/null +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/CustomerMonthBillVO.java @@ -0,0 +1,65 @@ +package com.mhd.bms.interfaces.dto.billManage; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "客户月账单VO", description = "客户每月账单分组统计信息") +public class CustomerMonthBillVO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("结算对象id") + private Long settlementCustomersId; + + @ApiModelProperty("结算对象code") + private String settlementCustomersCode; + + @ApiModelProperty("结算对象/客户名称") + private String settlementEntity; + + @ApiModelProperty("结算主体id") + private Long settlementEntityId; + + @ApiModelProperty("结算主体") + private String settlementEntityName; + + @ApiModelProperty("组织ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + private String organizationName; + + @ApiModelProperty("账单月份(yyyy-MM)") + private String billMonth; + + @ApiModelProperty("账单总金额合计") + private BigDecimal totalBillAmount; + + @ApiModelProperty("已收金额合计") + private BigDecimal totalSettledAmount; + + @ApiModelProperty("未收金额合计") + private BigDecimal totalUnsettledAmount; + + @ApiModelProperty("账单数量") + private Integer billCount; + + @ApiModelProperty("付款状态(1-未付款,2-部分付款,3-已付款)") + private Integer paymentStatus; + + @ApiModelProperty("付款状态名称") + private String paymentStatusName; + + @ApiModelProperty("应收账单id列表(逗号拼接)") + private String billManageIds; + + @ApiModelProperty("结算方式") + private String settlementMethod; + + @ApiModelProperty("默认结算币种") + private String settlementCurrency; +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java index f2816b63e..dc9f21990 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java @@ -3,6 +3,7 @@ package com.mhd.bms.interfaces.facadeApi; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.math.BigDecimal; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -31,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.*; import com.mhd.bms.interfaces.dto.billManage.BillManageDTO; +import com.mhd.bms.interfaces.dto.billManage.CustomerMonthBillVO; import com.mhd.bms.domain.billManage.repository.todo.BillManageDO; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.interfaces.assembler.billManage.BillManageAssembler; @@ -84,6 +86,72 @@ public class BillManageApi extends BaseController{ return AjaxResult.success(billManageApplicationService.listCount(billManageDO)); } + /** + * 客户每月账单分组列表(应收) + */ + @ApiOperation("客户每月账单分组列表") + @GetMapping("/receivableCustomerMonthList") + public TableDataInfo receivableCustomerMonthList(BillManageDTO billManageDTO) + { + BillManageDO billManageDO = new BillManageDO(); + BeanUtils.copyProperties(billManageDTO, billManageDO); + billManageDO.setBillType(1); + startPage(); + List list = billManageApplicationService.queryCustomerMonthBillList(billManageDO); + return getDataTable(list); + } + + /** + * 客户每月账单分组列表统计(应收) + */ + @ApiOperation("客户每月账单分组列表统计") + @GetMapping(value = "/receivableCustomerMonthListCount") + public AjaxResult receivableCustomerMonthListCount(BillManageDTO billManageDTO) + { + BillManageDO billManageDO = new BillManageDO(); + BeanUtils.copyProperties(billManageDTO, billManageDO); + billManageDO.setBillType(1); + List list = billManageApplicationService.queryCustomerMonthBillList(billManageDO); + BigDecimal totalBillAmount = list.stream() + .map(CustomerMonthBillVO::getTotalBillAmount) + .filter(java.util.Objects::nonNull) + .reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add); + BigDecimal totalSettledAmount = list.stream() + .map(CustomerMonthBillVO::getTotalSettledAmount) + .filter(java.util.Objects::nonNull) + .reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add); + BigDecimal totalUnsettledAmount = list.stream() + .map(CustomerMonthBillVO::getTotalUnsettledAmount) + .filter(java.util.Objects::nonNull) + .reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add); + java.util.Map resultMap = new java.util.HashMap<>(); + resultMap.put("totalBillAmount", totalBillAmount); + resultMap.put("totalSettledAmount", totalSettledAmount); + resultMap.put("totalUnsettledAmount", totalUnsettledAmount); + resultMap.put("totalCount", list.size()); + return AjaxResult.success(resultMap); + } + + /** + * 根据账单ID列表查询应收账单详情(客户月账单点击账单数量回显) + */ + @ApiOperation("根据账单ID列表查询应收账单详情") + @GetMapping("/receivableDetailByMonth") + public TableDataInfo receivableDetailByMonth(BillManageDTO billManageDTO) + { + if (billManageDTO.getBillManageIds() != null && !billManageDTO.getBillManageIds().isEmpty()) { + Set idSet = java.util.Arrays.stream(billManageDTO.getBillManageIds().split(",")) + .collect(java.util.stream.Collectors.toSet()); + billManageDTO.setBillManageIdSet(idSet); + } + BillManageDO billManageDO = new BillManageDO(); + BeanUtils.copyProperties(billManageDTO, billManageDO); + billManageDO.setBillType(1); + startPage(); + List list = billManageApplicationService.queryList(billManageDO); + return getDataTable(list); + } + @ApiOperation("导出应收账单") @GetMapping(value = "/exportReceivableList", produces = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") public void exportReceivableList(BillManageDTO billManageDTO, HttpServletResponse response) throws IOException diff --git a/mhd_bms/src/main/resources/mapper/BillManageMapper.xml b/mhd_bms/src/main/resources/mapper/BillManageMapper.xml index 3666da832..a182856f8 100644 --- a/mhd_bms/src/main/resources/mapper/BillManageMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillManageMapper.xml @@ -22,7 +22,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY a.create_time DESC + + + + AND DATE_FORMAT(a.CREATE_TIME, '%Y-%m') = #{billManageDO.billMonth} + AND date_format(a.create_time,'%Y-%m-%d') =]]> #{billManageDO.createTimeStart}