|
|
@@ -729,19 +729,79 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
|
|
|
log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
|
|
|
|
|
|
+ // 返回值
|
|
|
+ List<FollowCompanyFeeVO> resultList = CollUtil.newArrayList();
|
|
|
+
|
|
|
List<FollowCompanyFeeVO> followCompanyFeeVos = insFeeFollowOrderMapper.selectFollowCompanySettlementReport(settlementReportQueryVo);
|
|
|
// 查询所有保险公司,匹配保险公司的id和名称
|
|
|
HttpResult<Map<String, EsmInsCompany>> mapHttpResult = esmInsCompanyClient.queryAllCompanyMap();
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -3289,7 +3349,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
// 设置应收
|
|
|
updateIncome.setJqReceivablePremium(jqInletPremium.toString());
|
|
|
updateIncome.setSyReceivablePremium(syInletPremium.toString());
|
|
|
- updateIncome.setJyReceivablePremium(jyPremium.toString());
|
|
|
+ updateIncome.setJyReceivablePremium(jyInletPremium.toString());
|
|
|
|
|
|
// 设置手续费比例
|
|
|
updateIncome.setJqSuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getJqCommissionRatio()));
|
|
|
@@ -4042,6 +4102,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
.map(InsPlyIncomeInvoiceSettlement::getActualReceivedAmount)
|
|
|
.filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal settlementPaymentDifference = insPlyIncomeInvoiceSettlements.stream()
|
|
|
+ .map(InsPlyIncomeInvoiceSettlement::getSettlementPaymentDifference)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal receivableSupervisePremium = action.getReceivableSupervisePremium() != null ? action.getReceivableSupervisePremium(): BigDecimal.ZERO;
|
|
|
// BigDecimal overinflatedAmount = action.getOverinflatedAmount() != null? action.getOverinflatedAmount(): BigDecimal.ZERO;
|
|
|
// 待结算金额 = 开票金额 - 已收金额
|
|
|
@@ -4052,6 +4116,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
action.setRemainSettlementAmount(remainSettlementAmount);
|
|
|
action.setCompanyAllName(allCompanyHierarchyPaths.get(Objects.toString(action.getCompanyId(),"")));
|
|
|
action.setSettlementStatus(settlementStatusName);
|
|
|
+ // 回款差额
|
|
|
+ action.setSettlementPaymentDifference(settlementPaymentDifference);
|
|
|
+
|
|
|
if ("2".equals(invoiceRecordQueryVo.getInvoiceType())) {
|
|
|
LambdaQueryWrapper<InsFeeFollowOrder> insFeeFollowOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
insFeeFollowOrderLambdaQueryWrapper.eq(InsFeeFollowOrder::getYear, action.getYear());
|
|
|
@@ -4412,18 +4479,60 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
}else{
|
|
|
exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
|
|
|
}
|
|
|
- exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
|
|
|
- if (dto.getInvoiceParty().equals("1")) {
|
|
|
- dto.setInvoiceParty("我方开票");
|
|
|
- } else if (dto.getInvoiceParty().equals("2")) {
|
|
|
- dto.setInvoiceParty("保司开票");
|
|
|
- }
|
|
|
- if (dto.getStatus().equals("1")) {
|
|
|
- dto.setStatus("已结算");
|
|
|
- } else if (dto.getStatus().equals("0")) {
|
|
|
- dto.setStatus("未结算");
|
|
|
+ if (CollUtil.isNotEmpty(exportSuperviseSettlementDetailExcelDtos.getRecords())){
|
|
|
+ Map<String, InsPlyIncomeInvoiceSettlement> settlementMap = new HashMap<>();
|
|
|
+ if (!(settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6"))) {
|
|
|
+ // 根据invoiceId关联查询ins_ply_income_invoice_settlement表
|
|
|
+ LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ insPlyIncomeInvoiceSettlementLambdaQueryWrapper.in(InsPlyIncomeInvoiceSettlement::getInvoiceId, exportSuperviseSettlementDetailExcelDtos.getRecords().stream().map(ExportSuperviseSettlementDetailExcelDto::getInvoiceId).toList());
|
|
|
+ insPlyIncomeInvoiceSettlementLambdaQueryWrapper.eq(InsPlyIncomeInvoiceSettlement::getIsDelete, 0);
|
|
|
+ if (StrUtil.isNotBlank(settlementQueryVo.getSettlementPerson())) {
|
|
|
+ // 结算人
|
|
|
+ insPlyIncomeInvoiceSettlementLambdaQueryWrapper.eq(InsPlyIncomeInvoiceSettlement::getCreateBy, settlementQueryVo.getSettlementPerson());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd())) {
|
|
|
+ // 结算时间
|
|
|
+ insPlyIncomeInvoiceSettlementLambdaQueryWrapper.between(StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd()),
|
|
|
+ InsPlyIncomeInvoiceSettlement::getCreateTime, settlementQueryVo.getSettlementTimeStart(), settlementQueryVo.getSettlementTimeEnd());
|
|
|
+ }
|
|
|
+ List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(insPlyIncomeInvoiceSettlementLambdaQueryWrapper);
|
|
|
+ // 如果结算记录不为空,且结算人、结算时间不为空,则根据结算记录的invoiceId过滤列表
|
|
|
+ if (CollUtil.isNotEmpty(insPlyIncomeInvoiceSettlements)) {
|
|
|
+ if (StrUtil.isNotBlank(settlementQueryVo.getSettlementPerson()) || (StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeStart()) && StrUtil.isNotBlank(settlementQueryVo.getSettlementTimeEnd()))) {
|
|
|
+ List<String> invoiceList = insPlyIncomeInvoiceSettlements.stream().map(InsPlyIncomeInvoiceSettlement::getInvoiceId).toList();
|
|
|
+ // filter:lambda 返回 true 的元素留下,false 的剔除
|
|
|
+ exportSuperviseSettlementDetailExcelDtos.setRecords(exportSuperviseSettlementDetailExcelDtos.getRecords().stream().filter(detail -> invoiceList.contains(detail.getInvoiceId())).toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 冲突时保留旧值(第一条)
|
|
|
+ settlementMap = insPlyIncomeInvoiceSettlements.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ InsPlyIncomeInvoiceSettlement::getInvoiceId,
|
|
|
+ Function.identity(),
|
|
|
+ (oldVal, newVal) -> oldVal
|
|
|
+ ));
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+
|
|
|
+ final Map<String, InsPlyIncomeInvoiceSettlement> finalSettlementMap = settlementMap;
|
|
|
+ exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
|
|
|
+ if (dto.getInvoiceParty().equals("1")) {
|
|
|
+ dto.setInvoiceParty("我方开票");
|
|
|
+ } else if (dto.getInvoiceParty().equals("2")) {
|
|
|
+ dto.setInvoiceParty("保司开票");
|
|
|
+ }
|
|
|
+ if (dto.getStatus().equals("1")) {
|
|
|
+ dto.setStatus("已结算");
|
|
|
+ } else if (dto.getStatus().equals("0")) {
|
|
|
+ dto.setStatus("未结算");
|
|
|
+ }
|
|
|
+ InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = finalSettlementMap.get(dto.getInvoiceId());
|
|
|
+ if (null != insPlyIncomeInvoiceSettlement){
|
|
|
+ dto.setSettlementPerson(insPlyIncomeInvoiceSettlement.getCreateBy());
|
|
|
+ dto.setSettlementTime(insPlyIncomeInvoiceSettlement.getCreateTime());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
return exportSuperviseSettlementDetailExcelDtos;
|
|
|
}
|
|
|
|
|
|
@@ -4643,22 +4752,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
public void exportOtherSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) throws IOException {
|
|
|
verifyUploadPath();
|
|
|
settlementQueryVo.setSystemCode(baseController.getSystemCode());
|
|
|
- Page<ExportOtherSettlementExcelDto> exportOtherSettlementExcelDtos = baseMapper.getOtherSettlementExcelDtos(page, settlementQueryVo);
|
|
|
- exportOtherSettlementExcelDtos.getRecords().forEach(dto -> {
|
|
|
- if (dto.getInvoiceParty().equals("1")) {
|
|
|
- dto.setInvoiceParty("我方开票");
|
|
|
- } else if (dto.getInvoiceParty().equals("2")) {
|
|
|
- dto.setInvoiceParty("保司开票");
|
|
|
- }
|
|
|
- switch (dto.getInvoiceType()) {
|
|
|
- case "1" -> dto.setInvoiceType("手续费");
|
|
|
- case "2" -> dto.setInvoiceType("跟单费");
|
|
|
- case "3" -> dto.setInvoiceType("驾意险手续费");
|
|
|
- case "4" -> dto.setInvoiceType("驾意险跟单费");
|
|
|
- }
|
|
|
- });
|
|
|
- List<ExportOtherSettlementExcelDto> list = exportOtherSettlementExcelDtos.getRecords();
|
|
|
- EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportOtherSettlementExcelDto.class, list, "车险跟单费结算记录");
|
|
|
+ log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
|
|
|
+ // 设置空条件
|
|
|
+ setNoneCondition(settlementQueryVo);
|
|
|
+ settlementQueryVo.setSystemCode(baseController.getSystemCode());
|
|
|
+ Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.followSettlementExcelDtos(page, settlementQueryVo);
|
|
|
+ // 补充、转换列表的数据
|
|
|
+ supplementaryListData(exportSuperviseSettlementExcelDtos);
|
|
|
+ EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportSuperviseSettlementExcelDto.class, exportSuperviseSettlementExcelDtos.getRecords(), "车险跟单费结算记录");
|
|
|
}
|
|
|
|
|
|
/**
|