月度汇总明细接口;
This commit is contained in:
+9
@@ -139,6 +139,10 @@ public class BillManageApplicationService {
|
||||
String billNumber = billManagePO.getBillNumber(); // 获取账单编号
|
||||
// 原有 - 前端列表用,不变
|
||||
List<BillDetail> billDetails = billDetailMapper.selectList(new LambdaQueryWrapper<BillDetail>().eq(BillDetail::getBillNumber, billNumber));
|
||||
BigDecimal totalTaxAmount = billDetails.stream().map(BillDetail::getTaxAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal totalTaxFreeFee = billDetails.stream().map(BillDetail::getTaxFreeFee).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
billManagePO.setTaxAmount(totalTaxAmount);
|
||||
billManagePO.setTaxFreeFee(totalTaxFreeFee);
|
||||
billManagePO.setBillDetailList(billDetails);
|
||||
// 新增 - 导出用,LEFT JOIN billing_statement 拿到费用科目
|
||||
List<BillDetailPO> billDetailPOs = billDetailMapper.getDetailsByBillManageId(billManagePO.getBillManageId());
|
||||
@@ -198,6 +202,11 @@ public class BillManageApplicationService {
|
||||
String billNumber = billManagePO.getBillNumber(); // 获取账单编号
|
||||
// 原有 - 前端列表用,不变
|
||||
List<BillDetail> billDetails = billDetailMapper.selectList(new LambdaQueryWrapper<BillDetail>().eq(BillDetail::getBillNumber, billNumber));
|
||||
BigDecimal totalTaxAmount = billDetails.stream().map(BillDetail::getTaxAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal totalTaxFreeFee = billDetails.stream().map(BillDetail::getTaxFreeFee).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
billManagePO.setTaxAmount(totalTaxAmount);
|
||||
billManagePO.setTaxFreeFee(totalTaxFreeFee);
|
||||
|
||||
billManagePO.setBillDetailList(billDetails);
|
||||
// 新增 - 导出用,LEFT JOIN billing_statement 拿到费用科目
|
||||
List<BillDetailPO> billDetailPOs = billDetailMapper.getDetailsByBillManageId(billManagePO.getBillManageId());
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.mhd.bms.domain.billManage.repository.po;
|
||||
|
||||
import com.mhd.bms.domain.billManage.entity.BillDetail;
|
||||
import com.mhd.bms.domain.billingStatement.repository.po.BillingStatementPO;
|
||||
import com.mhd.bms.domain.receiptManage.entity.ReceiptDetail;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import lombok.Data;
|
||||
import java.util.Date;
|
||||
@@ -262,6 +263,7 @@ public class BillManagePO extends BaseVOEntity{
|
||||
@ApiModelProperty("收款帐户名称")
|
||||
private String paymentAccountName;
|
||||
private List<BillDetail> billDetailList;
|
||||
private List<ReceiptDetail> receiptDetailList;
|
||||
|
||||
@ApiModelProperty("最近收款时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
|
||||
@@ -37,6 +37,13 @@ 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;
|
||||
import com.mhd.bms.domain.receiptManage.service.ReceiptDetailDomainService;
|
||||
import com.mhd.bms.domain.receiptManage.entity.ReceiptDetail;
|
||||
import com.mhd.bms.domain.receiptManage.entity.ReceiptManage;
|
||||
import com.mhd.bms.domain.receiptManage.repository.facade.IReceiptManageService;
|
||||
import com.mhd.bms.domain.receiptManage.repository.po.ReceiptManagePO;
|
||||
import com.mhd.bms.domain.receiptManage.repository.po.ReceiptDetailPO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.mhd.common.core.web.controller.BaseController;
|
||||
@@ -57,6 +64,10 @@ public class BillManageApi extends BaseController{
|
||||
private BillManageApplicationService billManageApplicationService;
|
||||
@Autowired
|
||||
private RedisLock redisLock;
|
||||
@Autowired
|
||||
private ReceiptDetailDomainService receiptDetailDomainService;
|
||||
@Autowired
|
||||
private IReceiptManageService receiptManageService;
|
||||
|
||||
/**
|
||||
* 分页查询账单管理列表
|
||||
@@ -153,6 +164,105 @@ public class BillManageApi extends BaseController{
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@ApiOperation("根据账单ID列表查询应收账单汇总")
|
||||
@GetMapping("/receivableSumByMonth")
|
||||
public AjaxResult receivableSumByMonth(BillManageDTO billManageDTO)
|
||||
{
|
||||
if (billManageDTO.getBillManageIds() != null && !billManageDTO.getBillManageIds().isEmpty()) {
|
||||
Set<String> 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);
|
||||
List<BillManagePO> list = billManageApplicationService.queryList(billManageDO);
|
||||
|
||||
Set<Long> billManageIdSet = list.stream()
|
||||
.map(BillManagePO::getBillManageId)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.collect(java.util.stream.Collectors.toSet());
|
||||
|
||||
List<ReceiptDetail> allReceiptDetails = new ArrayList<>();
|
||||
Set<Long> receiptManageIdSet = new java.util.HashSet<>();
|
||||
List<ReceiptManagePO> receiptManageList = new ArrayList<>();
|
||||
|
||||
if (!billManageIdSet.isEmpty()) {
|
||||
allReceiptDetails = receiptDetailDomainService.queryListByLambda(
|
||||
new LambdaQueryWrapper<ReceiptDetail>()
|
||||
.in(ReceiptDetail::getBillManageId, billManageIdSet)
|
||||
.eq(ReceiptDetail::getDelFlag, 1));
|
||||
|
||||
java.util.Map<Long, List<ReceiptDetail>> detailByBillId = allReceiptDetails.stream()
|
||||
.collect(java.util.stream.Collectors.groupingBy(ReceiptDetail::getBillManageId));
|
||||
for (BillManagePO bill : list) {
|
||||
bill.setReceiptDetailList(detailByBillId.getOrDefault(bill.getBillManageId(), new ArrayList<>()));
|
||||
}
|
||||
|
||||
receiptManageIdSet = allReceiptDetails.stream()
|
||||
.map(ReceiptDetail::getReceiptManageId)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.collect(java.util.stream.Collectors.toSet());
|
||||
|
||||
if (!receiptManageIdSet.isEmpty()) {
|
||||
List<ReceiptManage> manages = receiptManageService.list(
|
||||
new LambdaQueryWrapper<ReceiptManage>()
|
||||
.in(ReceiptManage::getReceiptManageId, receiptManageIdSet)
|
||||
.eq(ReceiptManage::getDelFlag, 1));
|
||||
|
||||
java.util.Map<Long, List<ReceiptDetailPO>> detailPOByManageId = allReceiptDetails.stream()
|
||||
.map(d -> {
|
||||
ReceiptDetailPO po = new ReceiptDetailPO();
|
||||
BeanUtils.copyProperties(d, po);
|
||||
return po;
|
||||
})
|
||||
.collect(java.util.stream.Collectors.groupingBy(ReceiptDetailPO::getReceiptManageId));
|
||||
|
||||
for (ReceiptManage m : manages) {
|
||||
ReceiptManagePO po = new ReceiptManagePO();
|
||||
BeanUtils.copyProperties(m, po);
|
||||
po.setReceiptDetailPOList(detailPOByManageId.getOrDefault(m.getReceiptManageId(), new ArrayList<>()));
|
||||
receiptManageList.add(po);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BigDecimal totalBillAmount = list.stream()
|
||||
.map(BillManagePO::getBillAmount)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal totalSettledAmount = list.stream()
|
||||
.map(BillManagePO::getBillAmountSettlement)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal totalUnsettledAmount = list.stream()
|
||||
.map(BillManagePO::getBillAmountUnsettled)
|
||||
.filter(java.util.Objects::nonNull)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
int billCount = list.size();
|
||||
|
||||
String collectionStatus;
|
||||
if (billCount == 0) {
|
||||
collectionStatus = "无数据";
|
||||
} else if (totalUnsettledAmount.compareTo(BigDecimal.ZERO) == 0) {
|
||||
collectionStatus = "已收款";
|
||||
} else if (totalSettledAmount.compareTo(BigDecimal.ZERO) == 0) {
|
||||
collectionStatus = "未收款";
|
||||
} else {
|
||||
collectionStatus = "部分收款";
|
||||
}
|
||||
|
||||
java.util.Map<String, Object> resultMap = new java.util.HashMap<>();
|
||||
resultMap.put("totalBillAmount", totalBillAmount);
|
||||
resultMap.put("totalSettledAmount", totalSettledAmount);
|
||||
resultMap.put("totalUnsettledAmount", totalUnsettledAmount);
|
||||
resultMap.put("billCount", billCount);
|
||||
resultMap.put("collectionStatus", collectionStatus);
|
||||
resultMap.put("billList", list);
|
||||
resultMap.put("receiptManageList", receiptManageList);
|
||||
return AjaxResult.success(resultMap);
|
||||
}
|
||||
|
||||
@ApiOperation("导出应收账单")
|
||||
@GetMapping(value = "/exportReceivableList", produces = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||
public void exportReceivableList(BillManageDTO billManageDTO, HttpServletResponse response) throws IOException
|
||||
|
||||
Reference in New Issue
Block a user