|
@@ -729,19 +729,79 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
|
|
public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
|
|
|
log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
|
|
log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
|
|
|
|
|
|
|
|
|
|
+ // 返回值
|
|
|
|
|
+ List<FollowCompanyFeeVO> resultList = CollUtil.newArrayList();
|
|
|
|
|
+
|
|
|
List<FollowCompanyFeeVO> followCompanyFeeVos = insFeeFollowOrderMapper.selectFollowCompanySettlementReport(settlementReportQueryVo);
|
|
List<FollowCompanyFeeVO> followCompanyFeeVos = insFeeFollowOrderMapper.selectFollowCompanySettlementReport(settlementReportQueryVo);
|
|
|
// 查询所有保险公司,匹配保险公司的id和名称
|
|
// 查询所有保险公司,匹配保险公司的id和名称
|
|
|
HttpResult<Map<String, EsmInsCompany>> mapHttpResult = esmInsCompanyClient.queryAllCompanyMap();
|
|
HttpResult<Map<String, EsmInsCompany>> mapHttpResult = esmInsCompanyClient.queryAllCompanyMap();
|
|
|
Map<String, EsmInsCompany> data = mapHttpResult.getData();
|
|
Map<String, EsmInsCompany> data = mapHttpResult.getData();
|
|
|
- if (CollUtil.isEmpty(data)){
|
|
|
|
|
- return followCompanyFeeVos;
|
|
|
|
|
|
|
+ if (CollUtil.isEmpty(data) || CollUtil.isEmpty(followCompanyFeeVos)){
|
|
|
|
|
+ return resultList;
|
|
|
}
|
|
}
|
|
|
- for (FollowCompanyFeeVO followCompanyFeeVo : followCompanyFeeVos) {
|
|
|
|
|
- followCompanyFeeVo.setCompanyName(null != data.get(followCompanyFeeVo.getPartnerCompanyId()) ? data.get(followCompanyFeeVo.getPartnerCompanyId()).getName() : "");
|
|
|
|
|
- followCompanyFeeVo.setTotalUnSettlementAmount(followCompanyFeeVo.getTotalInvoiced().subtract(followCompanyFeeVo.getTotalSettlementAmount()));
|
|
|
|
|
- followCompanyFeeVo.setTotalUnInvoiced(followCompanyFeeVo.getTotalReceivable().subtract(followCompanyFeeVo.getTotalInvoiced()));
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 根据分支公司分组
|
|
|
|
|
+ Map<String, List<FollowCompanyFeeVO>> followMap = followCompanyFeeVos.stream().collect(Collectors.groupingBy(follow -> follow.getPartnerCompanyId() + "_" + follow.getYear() + "_" + follow.getMonth()));
|
|
|
|
|
+ for (Map.Entry<String, List<FollowCompanyFeeVO>> entry : followMap.entrySet()) {
|
|
|
|
|
+ // key = 合作公司ID
|
|
|
|
|
+ String key = entry.getKey();
|
|
|
|
|
+
|
|
|
|
|
+ // 分组参数
|
|
|
|
|
+ String[] arr = key.split("_");
|
|
|
|
|
+ String partnerCompanyId = arr[0];
|
|
|
|
|
+ String year = arr[1];
|
|
|
|
|
+ String month = arr[2];
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // value = 当前公司下所有VO集合
|
|
|
|
|
+ List<FollowCompanyFeeVO> voList = entry.getValue();
|
|
|
|
|
+
|
|
|
|
|
+ // 返回值
|
|
|
|
|
+ FollowCompanyFeeVO followCompanyFeeVO = new FollowCompanyFeeVO();
|
|
|
|
|
+ followCompanyFeeVO.setPartnerCompanyId(partnerCompanyId);
|
|
|
|
|
+
|
|
|
|
|
+ List<String> followIds = voList.stream().map(FollowCompanyFeeVO::getFollowId).toList();
|
|
|
|
|
+ List<String> invoiceIds = voList.stream().map(FollowCompanyFeeVO::getInvoiceId).toList();
|
|
|
|
|
+ List<String> settlementIds = voList.stream().map(FollowCompanyFeeVO::getSettlementId).toList();
|
|
|
|
|
+
|
|
|
|
|
+ // 根据所有followCompanyFeeVos的followId统计出已开票
|
|
|
|
|
+ LambdaQueryWrapper<InsFeeFollowOrder> insFeeFollowOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ insFeeFollowOrderLambdaQueryWrapper.in(InsFeeFollowOrder::getId, followIds);
|
|
|
|
|
+ List<InsFeeFollowOrder> insFeeFollowOrders = insFeeFollowOrderMapper.selectList(insFeeFollowOrderLambdaQueryWrapper);
|
|
|
|
|
+ // 总金额
|
|
|
|
|
+ InsFeeFollowOrder feeFollowOrder = CollUtil.getFirst(insFeeFollowOrders);
|
|
|
|
|
+ // 取对账金额
|
|
|
|
|
+ BigDecimal receivablePremium = feeFollowOrder.getReconciliationAmount();
|
|
|
|
|
+ followCompanyFeeVO.setTotalReceivable(receivablePremium);
|
|
|
|
|
+
|
|
|
|
|
+ BigDecimal totalInvoiced = insFeeFollowOrders.stream().map(InsFeeFollowOrder::getInvoiced).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
|
|
|
+ // 已开票总金额
|
|
|
|
|
+ followCompanyFeeVO.setTotalInvoiced(totalInvoiced);
|
|
|
|
|
+
|
|
|
|
|
+ // 未结算金额
|
|
|
|
|
+ followCompanyFeeVO.setTotalUnInvoiced(receivablePremium.subtract(totalInvoiced));
|
|
|
|
|
+
|
|
|
|
|
+ // 统计结算金额
|
|
|
|
|
+ LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ insPlyIncomeInvoiceSettlementLambdaQueryWrapper.in(InsPlyIncomeInvoiceSettlement::getId, settlementIds);
|
|
|
|
|
+ List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(insPlyIncomeInvoiceSettlementLambdaQueryWrapper);
|
|
|
|
|
+ BigDecimal totalSettlementAmount = insPlyIncomeInvoiceSettlements.stream().map(InsPlyIncomeInvoiceSettlement::getActualReceivedAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
|
|
|
|
+ // 已结算总金额
|
|
|
|
|
+ followCompanyFeeVO.setTotalSettlementAmount(totalSettlementAmount);
|
|
|
|
|
+
|
|
|
|
|
+ // 未结算金额
|
|
|
|
|
+ followCompanyFeeVO.setTotalUnSettlementAmount(totalInvoiced.subtract(totalSettlementAmount));
|
|
|
|
|
+ followCompanyFeeVO.setCompanyName(null != data.get(partnerCompanyId) ? data.get(partnerCompanyId).getName() : "");
|
|
|
|
|
+
|
|
|
|
|
+ resultList.add(followCompanyFeeVO);
|
|
|
}
|
|
}
|
|
|
- return followCompanyFeeVos;
|
|
|
|
|
|
|
+
|
|
|
|
|
+// for (FollowCompanyFeeVO followCompanyFeeVo : followCompanyFeeVos) {
|
|
|
|
|
+// followCompanyFeeVo.setCompanyName(null != data.get(followCompanyFeeVo.getPartnerCompanyId()) ? data.get(followCompanyFeeVo.getPartnerCompanyId()).getName() : "");
|
|
|
|
|
+// followCompanyFeeVo.setTotalUnSettlementAmount(followCompanyFeeVo.getTotalInvoiced().subtract(followCompanyFeeVo.getTotalSettlementAmount()));
|
|
|
|
|
+// followCompanyFeeVo.setTotalUnInvoiced(followCompanyFeeVo.getTotalReceivable().subtract(followCompanyFeeVo.getTotalInvoiced()));
|
|
|
|
|
+// }
|
|
|
|
|
+ return resultList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|