|
@@ -3609,6 +3609,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
order.setReconciliationAmount(item.getReconciliationAmount());
|
|
order.setReconciliationAmount(item.getReconciliationAmount());
|
|
|
order.setFalselyIncreasedDifference(item.getFalselyIncreasedDifference());
|
|
order.setFalselyIncreasedDifference(item.getFalselyIncreasedDifference());
|
|
|
order.setFalselyIncreasedReason(item.getFalselyIncreasedReason());
|
|
order.setFalselyIncreasedReason(item.getFalselyIncreasedReason());
|
|
|
|
|
+ order.setInvoiceType(vo.getInvoiceType());
|
|
|
|
|
|
|
|
orderList.add(order);
|
|
orderList.add(order);
|
|
|
|
|
|
|
@@ -3793,7 +3794,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
.collect(Collectors.groupingBy(InsPlyIncomeDto::getPartnerCompanyId));
|
|
.collect(Collectors.groupingBy(InsPlyIncomeDto::getPartnerCompanyId));
|
|
|
|
|
|
|
|
// 查询该年份下已开票的数据,并聚合为 [合作方ID_月份 -> 已开票金额] 的映射
|
|
// 查询该年份下已开票的数据,并聚合为 [合作方ID_月份 -> 已开票金额] 的映射
|
|
|
- Map<String, BigDecimal> invoicedMap = buildInvoicedMap(startYear, endYear);
|
|
|
|
|
|
|
+ Map<String, BigDecimal> invoicedMap = buildInvoicedMap(startYear, endYear, followInvoicePageListVo.getInvoiceType());
|
|
|
|
|
|
|
|
// 遍历分组数据,组装最终的返回结果
|
|
// 遍历分组数据,组装最终的返回结果
|
|
|
List<InsFeeFollowOrderVo> result = new ArrayList<>();
|
|
List<InsFeeFollowOrderVo> result = new ArrayList<>();
|
|
@@ -3806,8 +3807,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ Map<Integer, BigDecimal> monthReceivableMap = new HashMap<>();
|
|
|
|
|
+ // 2为车险,4为非车险
|
|
|
// 计算该合作方每月的应收保费
|
|
// 计算该合作方每月的应收保费
|
|
|
- Map<Integer, BigDecimal> monthReceivableMap = calculateMonthlyReceivable(list);
|
|
|
|
|
|
|
+ if ("2".equals(followInvoicePageListVo.getInvoiceType())){
|
|
|
|
|
+ monthReceivableMap = calculateMonthlyReceivable(list);
|
|
|
|
|
+ }else if ("4".equals(followInvoicePageListVo.getInvoiceType())){
|
|
|
|
|
+ monthReceivableMap = jyCalculateMonthlyReceivable(list);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 遍历12个月份,组装VO对象
|
|
// 遍历12个月份,组装VO对象
|
|
|
InsPlyIncomeDto firstItem = list.get(0);
|
|
InsPlyIncomeDto firstItem = list.get(0);
|
|
@@ -3829,20 +3836,19 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
/**
|
|
/**
|
|
|
* 构建已开票金额映射表
|
|
* 构建已开票金额映射表
|
|
|
* <p>
|
|
* <p>
|
|
|
- * 该方法用于查询指定年份范围内的跟单订单数据,并按"合作方ID_月份"维度聚合计算已开票金额,包括以下处理逻辑:
|
|
|
|
|
- * 1. 根据起始年份和结束年份查询跟单订单列表
|
|
|
|
|
- * 2. 按"合作方ID_月份"进行分组
|
|
|
|
|
- * 3. 对每组数据进行归约计算,累加已开票金额
|
|
|
|
|
- * 4. 返回合作方和月份到已开票总额的映射关系
|
|
|
|
|
|
|
+ * 根据指定的年份范围和发票类型,查询保险费用跟踪订单数据,
|
|
|
|
|
+ * 并按合作伙伴公司和月份分组统计已开票金额总和。
|
|
|
* </p>
|
|
* </p>
|
|
|
*
|
|
*
|
|
|
- * @param startYear 起始年份,用于指定查询范围的开始年份
|
|
|
|
|
- * @param endYear 结束年份,用于指定查询范围的结束年份
|
|
|
|
|
- * @return Map<String, BigDecimal> 返回已开票金额映射表,key为"合作方ID_月份"格式(如"COMP001_5"),value为该合作方在该月份的已开票金额总和
|
|
|
|
|
|
|
+ * @param startYear 起始年份
|
|
|
|
|
+ * @param endYear 结束年份
|
|
|
|
|
+ * @param invoiceType 发票类型
|
|
|
|
|
+ * @return Map<String, BigDecimal> 键格式为"合作伙伴公司ID_月份",值为该时间段内的已开票金额总和
|
|
|
*/
|
|
*/
|
|
|
- private Map<String, BigDecimal> buildInvoicedMap(Integer startYear, Integer endYear) {
|
|
|
|
|
|
|
+ private Map<String, BigDecimal> buildInvoicedMap(Integer startYear, Integer endYear, String invoiceType) {
|
|
|
QueryWrapper<InsFeeFollowOrder> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<InsFeeFollowOrder> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.between("year", startYear, endYear);
|
|
queryWrapper.between("year", startYear, endYear);
|
|
|
|
|
+ queryWrapper.eq("invoice_type", invoiceType);
|
|
|
List<InsFeeFollowOrder> invoicedList = insFeeFollowOrderMapper.selectList(queryWrapper);
|
|
List<InsFeeFollowOrder> invoicedList = insFeeFollowOrderMapper.selectList(queryWrapper);
|
|
|
|
|
|
|
|
return invoicedList.stream().collect(Collectors.groupingBy(
|
|
return invoicedList.stream().collect(Collectors.groupingBy(
|
|
@@ -3889,6 +3895,27 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 非车险跟单
|
|
|
|
|
+ * @param list
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private Map<Integer, BigDecimal> jyCalculateMonthlyReceivable(List<InsPlyIncomeDto> list) {
|
|
|
|
|
+ return list.stream()
|
|
|
|
|
+ .filter(item -> item.getSigningTime() != null) // 防御性编程:过滤掉签约时间为空的数据
|
|
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
|
|
+ item -> item.getSigningTime().getMonthValue(),
|
|
|
|
|
+ Collectors.reducing(
|
|
|
|
|
+ BigDecimal.ZERO,
|
|
|
|
|
+ item -> {
|
|
|
|
|
+ // 优化点:将字符串转换为BigDecimal,避免在循环中频繁new对象
|
|
|
|
|
+ return BigDecimalUtil.valueOf(item.getJyOtherCostsPremiums());
|
|
|
|
|
+ },
|
|
|
|
|
+ BigDecimal::add
|
|
|
|
|
+ )
|
|
|
|
|
+ ));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 组装单个月的发票跟进VO对象
|
|
* 组装单个月的发票跟进VO对象
|
|
|
* <p>
|
|
* <p>
|
|
@@ -4160,9 +4187,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
}
|
|
}
|
|
|
invoiceRecordQueryVo.setSystemCode(baseController.getSystemCode());
|
|
invoiceRecordQueryVo.setSystemCode(baseController.getSystemCode());
|
|
|
Page<InvoiceRecordResult> invoiceRecordList = null;
|
|
Page<InvoiceRecordResult> invoiceRecordList = null;
|
|
|
- if ("2".equals(invoiceRecordQueryVo.getInvoiceType())){
|
|
|
|
|
|
|
+ if (invoiceRecordQueryVo.getInvoiceTypes().contains("2") || invoiceRecordQueryVo.getInvoiceTypes().contains("4")){
|
|
|
invoiceRecordList = baseMapper.getFollowInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
invoiceRecordList = baseMapper.getFollowInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
|
- }else if ("1".equals(invoiceRecordQueryVo.getInvoiceType())){
|
|
|
|
|
|
|
+ }else if(invoiceRecordQueryVo.getInvoiceTypes().contains("1") || invoiceRecordQueryVo.getInvoiceTypes().contains("3")){
|
|
|
invoiceRecordList = baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
invoiceRecordList = baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
|
}
|
|
}
|
|
|
List<InvoiceRecordResult> records = invoiceRecordList.getRecords();
|
|
List<InvoiceRecordResult> records = invoiceRecordList.getRecords();
|