Просмотр исходного кода

还原com.jzg.organization.service.impl.ReceivableServiceImpl.receiverSettlementReportWithSettlemetnDate的代码逻辑

jiakai 3 недель назад
Родитель
Сommit
bae6849477

+ 21 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -6344,10 +6344,27 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public Page<ReceiverSettlementReportDto> receiverSettlementReportWithSettlemetnDate(Page page, SettlementReportQueryVo vo) {
-        // 改为复用全量查询方法,从 ins_ply_income 出发,保持数据口径一致
-        // 时间范围通过 vo.startTime / vo.endTime 由 getReceiverSettlementReport SQL 中的 ipii.invoice_time 过滤
-        log.info("平台协议应收-结算报表-对接人结算报表查询(按时间范围)。settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(vo));
-        return this.receiverSettlementReport(page, vo);
+        log.info("平台协议应收-结算报表-对接人结算报表查询。結算时间不为空 settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(vo));
+        Page<InsPlyIncomeInvoiceSettlement> pageRes = insPlyIncomeInvoiceSettlementMapper.querySettlementBySettlementDate(page,vo);
+        List<InsPlyIncomeInvoiceSettlement> records = pageRes.getRecords();
+        Map<String, List<InsPlyIncomeInvoiceSettlement>> res =  records.stream()
+                .collect(Collectors.groupingBy(InsPlyIncomeInvoiceSettlement::getContactPerson));
+        Page<ReceiverSettlementReportDto> pagDto = new Page<>(page.getPages(), page.getSize());
+        List<ReceiverSettlementReportDto> dtos = new ArrayList<>();
+        for (String s : res.keySet()) {
+            ReceiverSettlementReportDto dto = new ReceiverSettlementReportDto();
+            dto.setReceiver(s);
+            List<InsPlyIncomeInvoiceSettlement> settlements = res.get(s);
+            BigDecimal diffAmount = settlements.stream().map(InsPlyIncomeInvoiceSettlement::getSettlementPaymentDifference).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal actualReceivedAmount = settlements.stream().map(InsPlyIncomeInvoiceSettlement::getActualReceivedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+            dto.setSettledAmount(actualReceivedAmount.toString());
+            dto.setUnSettledAmount(BigDecimal.ZERO.toString());
+            dto.setTotalReceivable(BigDecimalUtil.add(diffAmount, actualReceivedAmount).toString());
+            dto.setTotalPaymentDifference(diffAmount);
+            dtos.add(dto);
+        }
+        pagDto.setRecords(dtos);
+        return pagDto;
     }
 
     /**