ソースを参照

修改bug:
私有应收 筛选应收项时,即使没有填对账金额,也应该在车险应收显示

jiakai 2 ヶ月 前
親
コミット
8fb87c1798

+ 22 - 18
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -757,6 +757,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     public List<FollowCompanyFeeVO> followCompanySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
         log.info("私有协议-跟单结算记录-结算报表: settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));
         List<FollowCompanyFeeVO> resultList = new ArrayList<>();
+        String invoiceType = settlementReportQueryVo.getInvoiceType();
 
         // 1. 一次性获取保险公司全量Map,全局复用
         Map<String, EsmInsCompany> companyMap = getAllInsCompanyMap();
@@ -772,22 +773,25 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
 
         // 应收项为空时才去补充数据,不为空时不补充数据,补充数据是因为联查了invoice和settlement表,所以没开票和结算的数据会被过滤掉,才需要补充数据
-        List<InsPlyIncomeDto> incomeDtoList = CollUtil.newArrayList();
-        if (StrUtil.isBlank(settlementReportQueryVo.getInvoiceType())){
-            // 3. 查询额外其他费用收入数据,补充到结果集
-            incomeDtoList = queryFollowIncomeData(settlementReportQueryVo);
-            if (CollUtil.isEmpty(incomeDtoList)) {
-                return resultList;
-            }else{
-                // 如果JyPremium不为0,则设置发票类型为4
-                incomeDtoList.stream().forEach(item -> {
-                    if (StrUtil.isNotBlank(item.getJyPremium()) && !NumberUtil.equals(BigDecimal.ZERO, new BigDecimal(item.getJyPremium()))){
-                        item.setInvoiceType(InvoiceTypeEnum.FEE_4.getCode());
-                    }else{
-                        item.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
-                    }
-                });
-                List<InsPlyIncomeDto> copyList = CollUtil.newArrayList();
+        List<InsPlyIncomeDto> incomeDtoList = queryFollowIncomeData(settlementReportQueryVo);
+        if (CollUtil.isEmpty(incomeDtoList)) {
+            return resultList;
+        }else{
+            // 如果JyPremium不为0,则设置发票类型为4
+            incomeDtoList.stream().forEach(item -> {
+                if (StrUtil.isNotBlank(item.getJyPremium()) && !NumberUtil.equals(BigDecimal.ZERO, new BigDecimal(item.getJyPremium()))){
+                    item.setInvoiceType(InvoiceTypeEnum.FEE_4.getCode());
+                }else{
+                    item.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
+                }
+            });
+            // 过滤一下invoiceType等于请求接口入参的数据
+            incomeDtoList = incomeDtoList.stream()
+                    .filter(income -> StrUtil.isBlank(invoiceType)
+                            || invoiceType.equals(income.getInvoiceType()))
+                    .toList();
+            List<InsPlyIncomeDto> copyList = CollUtil.newArrayList();
+            if (CollUtil.isNotEmpty(incomeDtoList)){
                 // 如果有发票类型为4的,则复制一条4的数据,完全一致,但发票类型为2
                 incomeDtoList.stream().filter(item -> InvoiceTypeEnum.FEE_4.getCode().equals(item.getInvoiceType())).forEach(item -> {
                     InsPlyIncomeDto incomeDto = new InsPlyIncomeDto();
@@ -795,7 +799,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     incomeDto.setInvoiceType(InvoiceTypeEnum.FEE_2.getCode());
                     copyList.add(incomeDto);
                 });
-                incomeDtoList.addAll(copyList);
+                incomeDtoList = CollUtil.addAll(incomeDtoList, copyList).stream().toList();
             }
         }
 
@@ -979,7 +983,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         boolean noFilterCond = StrUtil.isBlank(status)
                 && (StrUtil.isBlank(invoiceStartTime) || StrUtil.isBlank(invoiceEndTime))
                 && (StrUtil.isBlank(settleStartTime) || StrUtil.isBlank(settleEndTime));
-        if (noFilterCond) {
+        if (noFilterCond || CollUtil.isEmpty(incomeList)) {
             return incomeList;
         }